[
  {
    "path": ".gitignore",
    "content": "# OS X Finder\n.DS_Store\n\n# Xcode per-user config\n*.mode1\n*.mode1v3\n*.mode2v3\n*.perspective\n*.perspectivev3\n*.pbxuser\nxcuserdata\n*.xccheckout\n\n# Build products\nbuild/\n*.o\n*.LinkFileList\n*.hmap\n\n# Automatic backup files\n*~.nib/\n*.swp\n*~\n*.dat\n*.dep\n\n# Cocoapods\nPods\n\n# AppCode specific files\n.idea/\n*.iml\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 CocoaHeads Brasil\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/CocoaHeadsBrasil/MuteUnmuteMic/master/%5BUn%5DMuteMic/Assets.xcassets/AppIcon.appiconset/128.png\" width=\"100\" height=\"100\"/>\n  <h1>[Un]MuteMic</h1>\n  <p align=\"center\">macOS app to mute &amp; unmute the input volume of your microphone. <br/>Perfect for podcasters.</p>\n</div>\n\n## Requirements\n\nmacOS 10.10 Yosemite or higher version.\n\n## Installation\n\nDownload the [latest stable version](https://github.com/CocoaHeadsBrasil/MuteUnmuteMic/releases/download/1.4.2/Un.MuteMic.zip) or clone this repo and build & run.\n\n## Usage\n\n![[Un]MuteMic usage](https://cloud.githubusercontent.com/assets/235208/10419593/143171fc-704a-11e5-8270-374ca898685b.gif)\n\n## Authors\n\nCocoaHeads Brasil: [http://www.cocoaheads.com.br/](http://www.cocoaheads.com.br/)\n\n## License\n\n[The MIT License](https://raw.githubusercontent.com/CocoaHeadsBrasil/MuteUnmuteMic/master/LICENSE)\n"
  },
  {
    "path": "[Un]MuteMic/AppDelegate.h",
    "content": "//\n//  AppDelegate.h\n//  MuteUnmuteMic\n//\n//  Copyright © 2015 CocoaHeads Brasil. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface AppDelegate : NSObject <NSApplicationDelegate>\n\n@property (weak, nonatomic) IBOutlet NSMenu *menu;\n\n@end\n\n"
  },
  {
    "path": "[Un]MuteMic/AppDelegate.m",
    "content": "//\n//  AppDelegate.m\n//  MuteUnmuteMic\n//\n//  Copyright © 2015 CocoaHeads Brasil. All rights reserved.\n//\n\n#import \"AppDelegate.h\"\n#import \"AudioMixer.h\"\n\nstatic NSInteger const kDefaultVolume = 70;\n\n@interface AppDelegate ()\n\n@property (nonatomic) NSStatusItem *menuItem;\n@property (nonatomic) BOOL muted;\n@property (nonatomic) NSInteger inputVolumeToUnmute;\n\n@end\n\n@implementation AppDelegate\n\n- (void)applicationDidFinishLaunching:(NSNotification *)aNotification\n{\n    [self initDefaults];\n    [self configureStatusBar];\n    [self updateInputVolume];\n}\n\n- (void)initDefaults\n{\n    _muted = IsHardwareMuted();\n    _inputVolumeToUnmute = kDefaultVolume;\n}\n\n- (void)configureStatusBar\n{\n    NSStatusBar *statusBar = [NSStatusBar systemStatusBar];\n    \n    NSStatusItem *menuItem =\n    [statusBar statusItemWithLength:NSVariableStatusItemLength];\n    [menuItem setToolTip:@\"[Un]MuteMic by CocoaHeads Brazil\"];\n    [menuItem setImage:[NSImage imageNamed:@\"mic_on\"]];\n    [menuItem setHighlightMode:YES];\n\n    [menuItem setTarget:self];\n    [menuItem setAction:@selector(menuItemClicked:)];\n    [menuItem.button sendActionOn:NSLeftMouseUpMask|NSRightMouseUpMask];\n    \n    self.menuItem = menuItem;\n}\n\n- (void)menuItemClicked:(id)sender\n{\n    NSEvent *event = [[NSApplication sharedApplication] currentEvent];\n    \n    if ((event.modifierFlags & NSControlKeyMask) || (event.type == NSRightMouseUp)) {\n        [self showMenu];\n    } else {\n        [self toggleMute];\n    }\n}\n\n- (void)toggleMute\n{\n    self.muted = !self.muted;\n    [self updateInputVolume];\n}\n\n- (void)updateInputVolume\n{\n    BOOL muted = self.muted;\n    \n    NSInteger volume;\n    NSString *imageName;\n    if (muted) {\n        volume = 0;\n        imageName = @\"mic_off\";\n    } else {\n        volume = self.inputVolumeToUnmute;\n        imageName = @\"mic_on\";\n    }\n    \n    // set volume\n    NSString *source =\n    [NSString stringWithFormat:@\"set volume input volume %ld\", (long)volume];\n    NSAppleScript *script = [[NSAppleScript alloc] initWithSource:source];\n    NSDictionary *errorInfo = nil;\n    [script executeAndReturnError:&errorInfo];\n    \n    if (errorInfo) {\n        NSLog(@\"Error on script %@\", errorInfo);\n    }\n    \n    // set hardware mute\n    SetHardwareMute(muted);\n    \n    // set image\n    self.menuItem.image = [NSImage imageNamed:imageName];\n}\n\n- (void)showMenu\n{\n    [self.menuItem popUpStatusItemMenu:self.menu];\n}\n\n- (IBAction)didSetVolumeInput:(NSMenuItem *)sender\n{\n    for (NSMenuItem *item in sender.menu.itemArray) {\n        item.state = 0;\n    }\n    sender.state = 1;\n    \n    self.inputVolumeToUnmute = [sender.title integerValue];\n    [self updateInputVolume];\n}\n\n@end\n"
  },
  {
    "path": "[Un]MuteMic/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"size\" : \"16x16\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"16.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"16x16\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"32.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"32x32\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"32.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"32x32\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"64.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"128x128\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"128.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"128x128\",\n      \"filename\" : \"256.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"256x256\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"256.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"256x256\",\n      \"filename\" : \"512.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"512x512\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"512.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"512x512\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"1024.png\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "[Un]MuteMic/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "[Un]MuteMic/Assets.xcassets/mic_off.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"mac\",\n      \"filename\" : \"mic_off.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"filename\" : \"mic_off@2x.png\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  },\n  \"properties\" : {\n    \"template-rendering-intent\" : \"template\"\n  }\n}"
  },
  {
    "path": "[Un]MuteMic/Assets.xcassets/mic_on.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"mac\",\n      \"filename\" : \"mic_on.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"filename\" : \"mic_on@2x.png\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  },\n  \"properties\" : {\n    \"template-rendering-intent\" : \"template\"\n  }\n}"
  },
  {
    "path": "[Un]MuteMic/AudioMixer.c",
    "content": "//\n//  AudioMixer.c\n//  MuteUnmuteMic\n//\n//  Created by Diogo Tridapalli on 10/5/15.\n//  Copyright © 2015 CocoaHeads Brasil. All rights reserved.\n//\n\n#include \"AudioMixer.h\"\n\nBoolean GetDefaultInputAudioDevice(AudioDeviceID *defaultInputDeviceID)\n{\n    UInt32 thePropSize = sizeof(AudioDeviceID);\n    \n    AudioObjectPropertyAddress thePropertyAddress =\n    { kAudioHardwarePropertyDefaultInputDevice,\n        kAudioObjectPropertyScopeGlobal,\n        kAudioObjectPropertyElementMaster };\n    \n    OSStatus errorCode =\n    AudioObjectGetPropertyData(kAudioObjectSystemObject,\n                               &thePropertyAddress,\n                               0,\n                               NULL,\n                               &thePropSize,\n                               defaultInputDeviceID);\n    if (errorCode) {\n        printf(\"Error in GetDefaultInputAudioDevice: %d\\n\", errorCode);\n    }\n    \n    return errorCode == 0;\n}\n\nBoolean GetAudioDeviceName(const AudioDeviceID deviceID,\n                           CFStringRef *deviceName)\n{\n    UInt32 thePropSize = sizeof(CFStringRef);\n    AudioObjectPropertyAddress thePropertyAddress =\n    { kAudioObjectPropertyName,\n        kAudioObjectPropertyScopeGlobal,\n        kAudioObjectPropertyElementMaster };\n    \n    OSStatus errorCode =\n    AudioObjectGetPropertyData(deviceID,\n                               &thePropertyAddress,\n                               0,\n                               NULL,\n                               &thePropSize,\n                               deviceName);\n    \n    if (errorCode) {\n        printf(\"Error in GetAudioDeviceName: %d\\n\", errorCode);\n    }\n    \n    return errorCode == 0;\n}\n\nBoolean GetMuteOnInputAudioDevice(const AudioDeviceID inputDeviceID,\n                                  Boolean *isMuted)\n{\n    AudioObjectPropertyAddress thePropertyAddress =\n    { kAudioDevicePropertyMute,\n        kAudioDevicePropertyScopeInput,\n        kAudioObjectPropertyElementMaster };\n    \n    UInt32 mute = 0;\n    UInt32 thePropSize = sizeof(mute);\n    \n    OSStatus errorCode;\n    if (AudioObjectHasProperty(inputDeviceID, &thePropertyAddress)) {\n        errorCode = AudioObjectGetPropertyData(inputDeviceID,\n                                               &thePropertyAddress,\n                                               0,\n                                               NULL,\n                                               &thePropSize,\n                                               &mute);\n        if (errorCode) {\n            printf(\"Error in GetMuteOnInputAudioDevice: %d\\n\", errorCode);\n        }\n        \n        *isMuted = mute > 0;\n        \n        return errorCode == 0;\n    } else {\n        printf(\"Error in GetMuteOnInputAudioDevice: mute not supported\\n\");\n        \n        return false;\n    }\n}\n\nBoolean SetMuteOnInputAudioDevice(const AudioDeviceID inputDeviceID,\n                                  const Boolean mute)\n{\n    AudioObjectPropertyAddress thePropertyAddress =\n    { kAudioDevicePropertyMute,\n        kAudioDevicePropertyScopeInput,\n        kAudioObjectPropertyElementMaster };\n    \n    UInt32 theMute = mute;\n    UInt32 thePropSize = sizeof(theMute);\n    \n    \n    const char *inputDeviceString;\n    CFStringRef inputDeviceName;\n    if (GetAudioDeviceName(inputDeviceID, &inputDeviceName)) {\n        inputDeviceString =\n        CFStringGetCStringPtr(inputDeviceName, CFStringGetSystemEncoding());\n        CFRelease(inputDeviceName);\n    } else {\n        inputDeviceString = \"<Unamed device>\";\n    }\n    \n    Boolean setMute = true;\n    \n    if (AudioObjectHasProperty(inputDeviceID, &thePropertyAddress)) {\n        printf(\"\\tSetting %s mute %s\\n\", inputDeviceString, (theMute) ? \"on\" : \"off\");\n        OSStatus errorCode = AudioObjectSetPropertyData(inputDeviceID,\n                                                        &thePropertyAddress,\n                                                        0,\n                                                        NULL,\n                                                        thePropSize,\n                                                        &theMute);\n        if (errorCode) {\n            printf(\"Error in SetMuteOnInputAudioDevice: %d\\n\", errorCode);\n            setMute = false;\n        }\n    } else {\n        printf(\"Error in SetMuteOnInputAudioDevice: mute not supported\\n\");\n        setMute = false;\n    }\n    \n    return setMute;\n}\n\nBoolean IsHardwareMuted()\n{\n    AudioDeviceID theDefaultInputDeviceID;\n    \n    Boolean isMuted = false;\n    \n    if (GetDefaultInputAudioDevice(&theDefaultInputDeviceID)) {\n        GetMuteOnInputAudioDevice(theDefaultInputDeviceID, &isMuted);\n    }\n    \n    return isMuted;\n}\n\nvoid SetHardwareMute(Boolean theMute)\n{\n    AudioDeviceID theDefaultInputDeviceID;\n    if (GetDefaultInputAudioDevice(&theDefaultInputDeviceID)) {\n        SetMuteOnInputAudioDevice(theDefaultInputDeviceID, theMute);\n    }\n}"
  },
  {
    "path": "[Un]MuteMic/AudioMixer.h",
    "content": "//\n//  AudioMixer.h\n//  MuteUnmuteMic\n//\n//  Created by Diogo Tridapalli on 10/5/15.\n//  Copyright © 2015 CocoaHeads Brasil. All rights reserved.\n//\n\n#ifndef AudioMixer_h\n#define AudioMixer_h\n\n#import <CoreAudio/CoreAudio.h>\n/**\n *  Get device id for the default input device\n *\n *  @param defaultInputDeviceID AudioDeviceID pointer\n *\n *  @return @a true if success @a false otherwise\n */\nextern Boolean GetDefaultInputAudioDevice(AudioDeviceID *defaultInputDeviceID);\n\n/**\n *  Get the name of an audio device\n *\n *  @param deviceID               AudioDeviceID\n *  @param deviceName CFStringRef reference, must be release after use\n *\n *  @return @a true if success @a false otherwise\n */\nextern Boolean GetAudioDeviceName(const AudioDeviceID deviceID,\n                                  CFStringRef *deviceName);\n\n/**\n *  Get mute state on input device\n *\n *  @param inputDeviceID AudioDeviceID\n *  @param isMuted       @a true if device is muted @a false otherwise\n *\n *  @return @a true if success @a false otherwise\n */\nextern Boolean GetMuteOnInputAudioDevice(const AudioDeviceID inputDeviceID,\n                                         Boolean *isMuted);\n\n/**\n *  Mute or unmute an inpute device\n *\n *  @param inputDeviceID AudioDeviceID\n *  @param mute          @a true if device should be muted @a false otherwise\n *\n *  @return @a true if success @a false otherwise\n */\nextern Boolean SetMuteOnInputAudioDevice(const AudioDeviceID inputDeviceID,\n                                         const Boolean mute);\n\n/**\n *  Get the mute state of default input via HAL\n *\n *  @return @a true if is muted @a false otherwise\n */\nextern Boolean IsHardwareMuted();\n\n/**\n *  Set the mute state of default input via HAL\n *\n *  @param theMute @a true if should be muted @a false otherwise\n */\nextern void SetHardwareMute(Boolean theMute);\n\n#endif /* AudioMixer_h */\n"
  },
  {
    "path": "[Un]MuteMic/Base.lproj/MainMenu.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion=\"9046\" systemVersion=\"14E46\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" customObjectInstantitationMethod=\"direct\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"9046\"/>\n    </dependencies>\n    <objects>\n        <customObject id=\"-2\" userLabel=\"File's Owner\" customClass=\"NSApplication\">\n            <connections>\n                <outlet property=\"delegate\" destination=\"Voe-Tx-rLC\" id=\"GzC-gU-4Uq\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"-1\" userLabel=\"First Responder\" customClass=\"FirstResponder\"/>\n        <customObject id=\"-3\" userLabel=\"Application\" customClass=\"NSObject\"/>\n        <customObject id=\"Voe-Tx-rLC\" customClass=\"AppDelegate\">\n            <connections>\n                <outlet property=\"menu\" destination=\"d1i-xa-wlo\" id=\"2UA-gw-tWj\"/>\n            </connections>\n        </customObject>\n        <customObject id=\"YLy-65-1bz\" customClass=\"NSFontManager\"/>\n        <menu id=\"d1i-xa-wlo\">\n            <items>\n                <menuItem title=\"Input Volume\" id=\"w4W-DI-DEg\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <menu key=\"submenu\" title=\"Input Volume\" autoenablesItems=\"NO\" id=\"iVL-f8-mAL\">\n                        <items>\n                            <menuItem title=\"100\" id=\"NOm-DS-Fei\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"didSetVolumeInput:\" target=\"Voe-Tx-rLC\" id=\"I1n-CB-cYw\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"90\" tag=\"5\" id=\"cSh-2l-eG8\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"didSetVolumeInput:\" target=\"Voe-Tx-rLC\" id=\"b1z-78-Fgk\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"80\" tag=\"5\" id=\"OoN-lP-2Ll\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"didSetVolumeInput:\" target=\"Voe-Tx-rLC\" id=\"itM-AQ-plW\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"70\" state=\"on\" id=\"ZNu-ZY-zwa\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"didSetVolumeInput:\" target=\"Voe-Tx-rLC\" id=\"Ykp-jU-4Cw\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"60\" id=\"XY7-OS-7P1\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"didSetVolumeInput:\" target=\"Voe-Tx-rLC\" id=\"dqL-Vx-3KL\"/>\n                                </connections>\n                            </menuItem>\n                            <menuItem title=\"50\" id=\"MrJ-HJ-Wld\">\n                                <modifierMask key=\"keyEquivalentModifierMask\"/>\n                                <connections>\n                                    <action selector=\"didSetVolumeInput:\" target=\"Voe-Tx-rLC\" id=\"PVQ-c8-lcy\"/>\n                                </connections>\n                            </menuItem>\n                        </items>\n                    </menu>\n                </menuItem>\n                <menuItem isSeparatorItem=\"YES\" id=\"e5f-y4-vmV\"/>\n                <menuItem title=\"Quit\" id=\"kX5-as-WCF\">\n                    <modifierMask key=\"keyEquivalentModifierMask\"/>\n                    <connections>\n                        <action selector=\"terminate:\" target=\"-1\" id=\"yi0-uA-sG0\"/>\n                    </connections>\n                </menuItem>\n            </items>\n            <connections>\n                <outlet property=\"delegate\" destination=\"Voe-Tx-rLC\" id=\"30G-NN-Naz\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"-268\" y=\"-315.5\"/>\n        </menu>\n    </objects>\n</document>\n"
  },
  {
    "path": "[Un]MuteMic/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.4.2</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>5</string>\n\t<key>LSApplicationCategoryType</key>\n\t<string>public.app-category.utilities</string>\n\t<key>LSMinimumSystemVersion</key>\n\t<string>$(MACOSX_DEPLOYMENT_TARGET)</string>\n\t<key>LSUIElement</key>\n\t<true/>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2015 CocoaHeads Brasil. All rights reserved.</string>\n\t<key>NSMainNibFile</key>\n\t<string>MainMenu</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "[Un]MuteMic/main.m",
    "content": "#import <Cocoa/Cocoa.h>\n\nint main(int argc, const char * argv[]) {\n    return NSApplicationMain(argc, argv);\n}\n"
  },
  {
    "path": "[Un]MuteMic.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tD9A9F66F1BC35EDC004395E8 /* AudioMixer.c in Sources */ = {isa = PBXBuildFile; fileRef = D9A9F66D1BC35EDC004395E8 /* AudioMixer.c */; };\n\t\tECF208BE1BAF2DE6000D3C2C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = ECF208BD1BAF2DE6000D3C2C /* AppDelegate.m */; };\n\t\tECF208C11BAF2DE6000D3C2C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = ECF208C01BAF2DE6000D3C2C /* main.m */; };\n\t\tECF208C31BAF2DE6000D3C2C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ECF208C21BAF2DE6000D3C2C /* Assets.xcassets */; };\n\t\tECF208C61BAF2DE6000D3C2C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECF208C41BAF2DE6000D3C2C /* MainMenu.xib */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\tD9A9F66D1BC35EDC004395E8 /* AudioMixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AudioMixer.c; path = \"[Un]MuteMic/AudioMixer.c\"; sourceTree = \"<group>\"; };\n\t\tD9A9F66E1BC35EDC004395E8 /* AudioMixer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioMixer.h; path = \"[Un]MuteMic/AudioMixer.h\"; sourceTree = \"<group>\"; };\n\t\tECF208B91BAF2DE6000D3C2C /* [Un]MuteMic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"[Un]MuteMic.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tECF208BC1BAF2DE6000D3C2C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = \"<group>\"; };\n\t\tECF208BD1BAF2DE6000D3C2C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = \"<group>\"; };\n\t\tECF208C01BAF2DE6000D3C2C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\tECF208C21BAF2DE6000D3C2C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\tECF208C51BAF2DE6000D3C2C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = \"<group>\"; };\n\t\tECF208C71BAF2DE6000D3C2C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tECF208B61BAF2DE6000D3C2C /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tD9A9F6701BC5830F004395E8 /* AudioMixer */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD9A9F66D1BC35EDC004395E8 /* AudioMixer.c */,\n\t\t\t\tD9A9F66E1BC35EDC004395E8 /* AudioMixer.h */,\n\t\t\t);\n\t\t\tname = AudioMixer;\n\t\t\tpath = ..;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECF208B01BAF2DE6000D3C2C = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tECF208BB1BAF2DE6000D3C2C /* [Un]MuteMic */,\n\t\t\t\tECF208BA1BAF2DE6000D3C2C /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECF208BA1BAF2DE6000D3C2C /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tECF208B91BAF2DE6000D3C2C /* [Un]MuteMic.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECF208BB1BAF2DE6000D3C2C /* [Un]MuteMic */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tECF208BC1BAF2DE6000D3C2C /* AppDelegate.h */,\n\t\t\t\tECF208BD1BAF2DE6000D3C2C /* AppDelegate.m */,\n\t\t\t\tECF208C21BAF2DE6000D3C2C /* Assets.xcassets */,\n\t\t\t\tECF208C41BAF2DE6000D3C2C /* MainMenu.xib */,\n\t\t\t\tECF208C71BAF2DE6000D3C2C /* Info.plist */,\n\t\t\t\tECF208BF1BAF2DE6000D3C2C /* Supporting Files */,\n\t\t\t\tD9A9F6701BC5830F004395E8 /* AudioMixer */,\n\t\t\t);\n\t\t\tpath = \"[Un]MuteMic\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tECF208BF1BAF2DE6000D3C2C /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tECF208C01BAF2DE6000D3C2C /* main.m */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tECF208B81BAF2DE6000D3C2C /* [Un]MuteMic */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = ECF208CA1BAF2DE6000D3C2C /* Build configuration list for PBXNativeTarget \"[Un]MuteMic\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tECF208B51BAF2DE6000D3C2C /* Sources */,\n\t\t\t\tECF208B61BAF2DE6000D3C2C /* Frameworks */,\n\t\t\t\tECF208B71BAF2DE6000D3C2C /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"[Un]MuteMic\";\n\t\t\tproductName = MuteUnmuteMic;\n\t\t\tproductReference = ECF208B91BAF2DE6000D3C2C /* [Un]MuteMic.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tECF208B11BAF2DE6000D3C2C /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0700;\n\t\t\t\tORGANIZATIONNAME = \"CocoaHeads Brasil\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tECF208B81BAF2DE6000D3C2C = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.0;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = ECF208B41BAF2DE6000D3C2C /* Build configuration list for PBXProject \"[Un]MuteMic\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = ECF208B01BAF2DE6000D3C2C;\n\t\t\tproductRefGroup = ECF208BA1BAF2DE6000D3C2C /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tECF208B81BAF2DE6000D3C2C /* [Un]MuteMic */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tECF208B71BAF2DE6000D3C2C /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tECF208C31BAF2DE6000D3C2C /* Assets.xcassets in Resources */,\n\t\t\t\tECF208C61BAF2DE6000D3C2C /* MainMenu.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tECF208B51BAF2DE6000D3C2C /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tECF208C11BAF2DE6000D3C2C /* main.m in Sources */,\n\t\t\t\tECF208BE1BAF2DE6000D3C2C /* AppDelegate.m in Sources */,\n\t\t\t\tD9A9F66F1BC35EDC004395E8 /* AudioMixer.c in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\tECF208C41BAF2DE6000D3C2C /* MainMenu.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tECF208C51BAF2DE6000D3C2C /* Base */,\n\t\t\t);\n\t\t\tname = MainMenu.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tECF208C81BAF2DE6000D3C2C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tECF208C91BAF2DE6000D3C2C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tECF208CB1BAF2DE6000D3C2C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tINFOPLIST_FILE = \"[Un]MuteMic/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = br.com.cocoaheads.MuteUnmuteMic;\n\t\t\t\tPRODUCT_NAME = \"[Un]MuteMic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tECF208CC1BAF2DE6000D3C2C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tINFOPLIST_FILE = \"[Un]MuteMic/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = br.com.cocoaheads.MuteUnmuteMic;\n\t\t\t\tPRODUCT_NAME = \"[Un]MuteMic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tECF208B41BAF2DE6000D3C2C /* Build configuration list for PBXProject \"[Un]MuteMic\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tECF208C81BAF2DE6000D3C2C /* Debug */,\n\t\t\t\tECF208C91BAF2DE6000D3C2C /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tECF208CA1BAF2DE6000D3C2C /* Build configuration list for PBXNativeTarget \"[Un]MuteMic\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tECF208CB1BAF2DE6000D3C2C /* Debug */,\n\t\t\t\tECF208CC1BAF2DE6000D3C2C /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = ECF208B11BAF2DE6000D3C2C /* Project object */;\n}\n"
  },
  {
    "path": "[Un]MuteMic.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:[Un]MuteMic.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  }
]