# C/C++ build outputs
.build/
bins
gens
libs
objs

# Python items
cython_debug/
python_build/
.coverage*
.eggs
htmlcov/
dist/
*.egg
py27/
py34/

# Node installation output
^node_modules
src/node/extension_binary/

# gcov coverage data
reports
coverage
*.gcno

# profiler output
*.prof

# python compiled objects
*.pyc

#eclipse project files
.cproject
.project
.settings

# cache for run_tests.py
.run_tests_cache
.preprocessed_build

# emacs temp files
*~

# vim temp files
.*.swp

# Makefile's cache
cache.mk

# Ruby's local gem information
Gemfile.lock

# Temporary test reports
report.xml
latency_trace.txt
latency_trace.*.txt

# port server log
portlog.txt

# gyp generated make files
*-gyp.mk
out

# YCM config files
.ycm_extra_conf.py

# XCode
^build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
*.DS_Store

# Objective-C generated files
*.pbobjc.*
*.pbrpc.*

# Cocoapods artifacts
# Podfile.lock and the workspace file are tracked, to ease deleting them. That's
# needed to trigger "pod install" to rerun the preinstall commands.
Pods/

# Artifacts directory
artifacts/

# Git generated files for conflicting
*.orig

# IDE specific folder for JetBrains IDEs
.idea/
