├── Vendor ├── Sparkle │ └── Sparkle.framework │ │ ├── Versions │ │ ├── Current │ │ └── A │ │ │ ├── Resources │ │ │ ├── fr_CA.lproj │ │ │ ├── pt.lproj │ │ │ ├── Autoupdate.app │ │ │ │ └── Contents │ │ │ │ │ ├── PkgInfo │ │ │ │ │ ├── MacOS │ │ │ │ │ └── Autoupdate │ │ │ │ │ ├── Resources │ │ │ │ │ ├── AppIcon.icns │ │ │ │ │ ├── SUStatus.nib │ │ │ │ │ ├── ar.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── cs.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── da.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── de.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── el.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── en.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── es.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── fr.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── is.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── it.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ja.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ko.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── nb.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── nl.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── pl.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ro.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ru.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── sk.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── sl.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── sv.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── th.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── tr.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── uk.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── pt_BR.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── pt_PT.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── zh_CN.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ └── zh_TW.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ └── Info.plist │ │ │ ├── SUStatus.nib │ │ │ ├── ar.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── cs.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── da.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── de.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── el.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── en.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── es.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── fr.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── is.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── it.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── ja.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── ko.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── nb.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── nl.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── pl.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── ro.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── ru.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── sk.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── sl.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── sv.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── th.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── tr.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── uk.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── pt_BR.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── pt_PT.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── zh_CN.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ ├── zh_TW.lproj │ │ │ │ ├── Sparkle.strings │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ └── SUUpdatePermissionPrompt.nib │ │ │ └── Info.plist │ │ │ ├── Sparkle │ │ │ └── Headers │ │ │ ├── Sparkle.h │ │ │ ├── SUVersionDisplayProtocol.h │ │ │ ├── SUAppcast.h │ │ │ ├── SUVersionComparisonProtocol.h │ │ │ ├── SUStandardVersionComparator.h │ │ │ └── SUAppcastItem.h │ │ ├── Headers │ │ ├── Resources │ │ └── Sparkle └── fonts │ └── Open_Sans │ ├── OpenSans-Bold.ttf │ ├── OpenSans-Light.ttf │ ├── OpenSans-Italic.ttf │ ├── OpenSans-Regular.ttf │ ├── OpenSans-Semibold.ttf │ ├── OpenSans-BoldItalic.ttf │ ├── OpenSans-ExtraBold.ttf │ ├── OpenSans-LightItalic.ttf │ ├── OpenSans-ExtraBoldItalic.ttf │ └── OpenSans-SemiboldItalic.ttf ├── add.sh ├── status.sh ├── BitMarkets ├── en.lproj │ └── InfoPlist.strings ├── resources │ ├── app_icon │ │ ├── icon_16x16.png │ │ ├── icon_32x32.png │ │ ├── icon_128x128.png │ │ ├── icon_256x256.png │ │ ├── icon_512x512.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32@2x.png │ │ └── icon_515x512@2x.png │ ├── icons │ │ ├── categories │ │ │ ├── tv.png │ │ │ ├── bitcoin.png │ │ │ ├── camera.png │ │ │ ├── mobile.png │ │ │ ├── music.png │ │ │ ├── sports.png │ │ │ ├── clothing.png │ │ │ ├── computing.png │ │ │ └── litecoin.png │ │ ├── left_active.png │ │ ├── right_active.png │ │ ├── Top │ │ │ ├── add_active.png │ │ │ ├── send_active.png │ │ │ ├── add_inactive.png │ │ │ ├── compose_active.png │ │ │ ├── delete_active.png │ │ │ ├── forward_active.png │ │ │ ├── message_active.png │ │ │ ├── refresh_active.png │ │ │ ├── reply_active.png │ │ │ ├── reply_inactive.png │ │ │ ├── send_inactive.png │ │ │ ├── delete_inactive.png │ │ │ ├── message_inactive.png │ │ │ ├── refresh_inactive.png │ │ │ └── composeicon_inactive.png │ │ ├── location_active.png │ │ └── profile_active.png │ ├── licenses │ │ ├── bitmessage │ │ │ └── COPYING.txt │ │ ├── xmlrpc │ │ │ └── LICENSE.txt │ │ └── zipkit │ │ │ └── COPYING.txt │ └── categories copy.json ├── Images.xcassets │ └── AppIcon.appiconset │ │ ├── icon_16x16.png │ │ ├── icon_32x32.png │ │ ├── icon_128x128.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_515x512@2x.png │ │ └── Contents.json ├── Bitmarkets.temp_caseinsensitive_rename-Prefix.pch ├── Classes │ └── Market │ │ ├── Groups │ │ ├── MKRegion.h │ │ ├── MKCategory.h │ │ ├── MKMsgGroup.h │ │ ├── MKMsgGroup.m │ │ ├── MKGroup.h │ │ └── MKRegion.m │ │ ├── Base │ │ ├── MKAboutNode.h │ │ ├── Bitmarkets.h │ │ ├── Bitmarkets.m │ │ ├── MKDirectMessages.h │ │ ├── MKUpdateMessage.h │ │ ├── MKRootNode.h │ │ ├── MKUpdatesSubscription.h │ │ ├── MKMarketChannel.h │ │ ├── MKMarkets.h │ │ ├── MKUpdateMessage.m │ │ └── MKMarkets.m │ │ ├── Transactions │ │ ├── Msg │ │ │ ├── MKCancelConfirmed.h │ │ │ ├── MKCancelConfirmed.m │ │ │ ├── MKSellLockEscrowMsg.h │ │ │ ├── MKConfirmRefundMsg.m │ │ │ ├── MKConfirmPaymentMsg.m │ │ │ ├── MKConfirmRefundMsg.h │ │ │ ├── MKCancelMsg.h │ │ │ ├── MKConfirmPaymentMsg.h │ │ │ ├── MKConfirmLockEscrowMsg.h │ │ │ ├── MKConfirmLockEscrowMsg.m │ │ │ ├── MKLockMsg.h │ │ │ ├── MKConfirmMsg.h │ │ │ ├── MKMessages.h │ │ │ ├── MKTxMsg.h │ │ │ ├── MKLockMsg.m │ │ │ ├── MKSetupLockMsg.h │ │ │ ├── MKSellLockEscrowMsg.m │ │ │ ├── MKMessages.m │ │ │ ├── MKConfirmMsg.m │ │ │ ├── MKCancelMsg.m │ │ │ ├── MKTxMsg.m │ │ │ ├── MKMsg.h │ │ │ └── MKSetupLockMsg.m │ │ ├── Sells │ │ │ ├── Stages │ │ │ │ ├── Bid │ │ │ │ │ ├── MKRejectBidMsg.h │ │ │ │ │ ├── MKAcceptBidMsg.h │ │ │ │ │ ├── MKAcceptBidMsg.m │ │ │ │ │ ├── MKRejectBidMsg.m │ │ │ │ │ ├── MKSellBids.h │ │ │ │ │ └── MKSellBid.h │ │ │ │ ├── Post │ │ │ │ │ ├── MKClosePostMsg.h │ │ │ │ │ ├── MKClosePostMsg.m │ │ │ │ │ ├── MKPostMsg.h │ │ │ │ │ ├── MKPostMsg.m │ │ │ │ │ └── MKPost.h │ │ │ │ ├── Delivery │ │ │ │ │ ├── MKSellPostedMsg.h │ │ │ │ │ ├── MKSellPostedMsg.m │ │ │ │ │ ├── MKSellDeliveryAddress.h │ │ │ │ │ ├── MKSellDelivery.h │ │ │ │ │ └── MKSellDeliveryAddress.m │ │ │ │ ├── Lock │ │ │ │ │ └── MKSellLockEscrow.h │ │ │ │ ├── Release │ │ │ │ │ ├── MKSellAcceptPaymentMsg.h │ │ │ │ │ ├── MKSellAcceptPaymentMsg.m │ │ │ │ │ ├── MKSellAcceptRefundRequestMsg.h │ │ │ │ │ ├── MKSellRejectRefundRequestMsg.h │ │ │ │ │ ├── MKSellReleaseEscrow.h │ │ │ │ │ ├── MKSellAcceptRefundRequestMsg.m │ │ │ │ │ └── MKSellRejectRefundRequestMsg.m │ │ │ │ └── Complete │ │ │ │ │ ├── MKSellComplete.h │ │ │ │ │ └── MKSellComplete.m │ │ │ ├── MKSells.h │ │ │ ├── MKSells.m │ │ │ └── MKSell.h │ │ ├── Buys │ │ │ ├── Stages │ │ │ │ ├── Lock │ │ │ │ │ ├── MKBuyLockEscrow.h │ │ │ │ │ └── MKBuyLockEscrowMsg.h │ │ │ │ ├── Release │ │ │ │ │ ├── MKBuyPaymentMsg.h │ │ │ │ │ ├── MKBuyPaymentMsg.m │ │ │ │ │ ├── MKBuyPostRefundMsg.h │ │ │ │ │ ├── MKBuyPostPaymentMsg.h │ │ │ │ │ ├── MKBuyPostRefundMsg.m │ │ │ │ │ ├── MKBuyPostPaymentMsg.m │ │ │ │ │ ├── MKBuyRefundRequestMsg.h │ │ │ │ │ ├── MKBuyRefundRequestMsg.m │ │ │ │ │ └── MKBuyReleaseEscrow.h │ │ │ │ ├── Bid │ │ │ │ │ ├── MKBidMsg.h │ │ │ │ │ ├── MKBuyBid.h │ │ │ │ │ └── MKBidMsg.m │ │ │ │ ├── Delivery │ │ │ │ │ ├── MKBuyerAddressMsg.h │ │ │ │ │ ├── MKBuyDeliveryAddress.h │ │ │ │ │ ├── MKBuyDelivery.h │ │ │ │ │ └── MKBuyerAddressMsg.m │ │ │ │ └── Complete │ │ │ │ │ ├── MKBuyComplete.h │ │ │ │ │ └── MKBuyComplete.m │ │ │ ├── MKBuys.h │ │ │ ├── MKBuys.m │ │ │ └── MKBuy.h │ │ ├── MKTransactions.h │ │ ├── MKStage.h │ │ ├── MKEscrow.h │ │ ├── MKTransaction.h │ │ ├── MKEscrow.m │ │ ├── MKStage.m │ │ ├── MKDeliveryAddress.h │ │ ├── MKLock.h │ │ ├── MKRelease.h │ │ └── MKTransactions.m │ │ ├── Views │ │ ├── MKStepView.h │ │ ├── MKPanelView.h │ │ ├── MKStepsView.h │ │ ├── MKNodeView.h │ │ ├── MKPanelManager.h │ │ ├── MKPasswordView.h │ │ ├── BNKeyView.h │ │ ├── MKActionsView.h │ │ ├── MKTextFieldCell.h │ │ ├── BNWalletView.h │ │ ├── MKStatusView.h │ │ ├── MKAttachmentView.h │ │ ├── MKTxProgressView.h │ │ ├── MKDragFileWell.h │ │ ├── MKNodeView.m │ │ ├── MKPanelManager.m │ │ ├── MKPasswordView.m │ │ ├── MKPostView.h │ │ ├── MKStepsView.m │ │ ├── MKTextFieldCell.m │ │ └── BNKeyView.m │ │ └── Helpers │ │ ├── MKCurrency.h │ │ ├── MKExchangeRate.h │ │ └── MKCurrency.m ├── main.m ├── MKAppDelegate.h └── Bitmarkets.temp_caseinsensitive_rename-Info.plist ├── BitMarketsTests ├── en.lproj │ └── InfoPlist.strings ├── BitMarketsTests.m └── Bitmarkets.temp_caseinsensitive_renameTests-Info.plist ├── pull.sh ├── init.sh ├── find_projects_path_errors.sh ├── push.sh ├── Bitmarkets.xcodeproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── dist ├── sign_update.sh ├── generate_keys.sh ├── generate_xml.sh └── template.xml ├── .gitignore ├── Notes ├── ItemAttributes.txt └── Escrow.txt ├── CHANGELOG ├── .gitmodules ├── commit.sh ├── checkout.sh ├── LICENSE └── README.md /Vendor/Sparkle/Sparkle.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Sparkle: -------------------------------------------------------------------------------- 1 | Versions/Current/Sparkle -------------------------------------------------------------------------------- /add.sh: -------------------------------------------------------------------------------- 1 | git submodule foreach --recursive git add . 2 | git add . 3 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr_CA.lproj: -------------------------------------------------------------------------------- 1 | fr.lproj -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt.lproj: -------------------------------------------------------------------------------- 1 | pt_BR.lproj -------------------------------------------------------------------------------- /status.sh: -------------------------------------------------------------------------------- 1 | git status 2 | git submodule foreach --recursive git status 3 | -------------------------------------------------------------------------------- /BitMarkets/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /BitMarketsTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /pull.sh: -------------------------------------------------------------------------------- 1 | git submodule foreach --recursive git pull origin master 2 | git pull origin master 3 | -------------------------------------------------------------------------------- /init.sh: -------------------------------------------------------------------------------- 1 | git submodule sync 2 | git submodule init 3 | git submodule update --init --recursive --force 4 | 5 | -------------------------------------------------------------------------------- /find_projects_path_errors.sh: -------------------------------------------------------------------------------- 1 | find . -name project.pbxproj | awk '{print "echo " $1 "; grep Users " $1}' | bash 2 | 3 | -------------------------------------------------------------------------------- /push.sh: -------------------------------------------------------------------------------- 1 | git submodule foreach --recursive git push origin master 2 | git push origin master 3 | git push origin --tags 4 | -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-Light.ttf -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_16x16.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_32x32.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/tv.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/left_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/left_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/right_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/right_active.png -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-Italic.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-Semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-Semibold.ttf -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_128x128.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_256x256.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_512x512.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/add_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/add_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/send_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/send_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/location_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/location_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/profile_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/profile_active.png -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-BoldItalic.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-ExtraBold.ttf -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_128x128@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_16x16@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_256x256@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_32x32@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/app_icon/icon_515x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/app_icon/icon_515x512@2x.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/add_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/add_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/compose_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/compose_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/delete_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/delete_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/forward_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/forward_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/message_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/message_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/refresh_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/refresh_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/reply_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/reply_active.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/reply_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/reply_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/send_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/send_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/bitcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/bitcoin.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/camera.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/mobile.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/music.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/sports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/sports.png -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-LightItalic.ttf -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/delete_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/delete_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/message_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/message_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/refresh_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/refresh_inactive.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/clothing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/clothing.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/computing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/computing.png -------------------------------------------------------------------------------- /BitMarkets/resources/icons/categories/litecoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/categories/litecoin.png -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Sparkle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Sparkle -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /Vendor/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf -------------------------------------------------------------------------------- /BitMarkets/resources/icons/Top/composeicon_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/resources/icons/Top/composeicon_inactive.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_512x512.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/icon_515x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/BitMarkets/Images.xcassets/AppIcon.appiconset/icon_515x512@2x.png -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/SUStatus.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/SUStatus.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Bitmarkets.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib -------------------------------------------------------------------------------- /BitMarkets/Bitmarkets.temp_caseinsensitive_rename-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #endif 10 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoluntaryLabs/Bitmarkets/HEAD/Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings -------------------------------------------------------------------------------- /dist/sign_update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | set -o pipefail 4 | if [ "$#" -ne 2 ]; then 5 | echo "Usage: $0 update_archive private_key" 6 | exit 1 7 | fi 8 | openssl=/usr/bin/openssl 9 | $openssl dgst -sha1 -binary < "$1" | $openssl dgst -dss1 -sign "$2" | $openssl enc -base64 10 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKRegion.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKRegion.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/24/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsgGroup.h" 10 | 11 | @interface MKRegion : MKMsgGroup 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKCategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCategory.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/23/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsgGroup.h" 10 | 11 | @interface MKCategory : MKMsgGroup 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKAboutNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAboutNode.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/21/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKAboutNode : NavInfoNode 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/15/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) 12 | { 13 | return NSApplicationMain(argc, argv); 14 | } 15 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKCancelConfirmed.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCancelConfirmed.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKCancelConfirmed : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKRejectBidMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKRejectBidMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKRejectBidMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Lock/MKBuyLockEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyLockEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLock.h" 10 | 11 | @interface MKBuyLockEscrow : MKLock 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKCancelConfirmed.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKCancelConfirmed.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKCancelConfirmed.h" 10 | 11 | @implementation MKCancelConfirmed 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKSellLockEscrowMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKLockEscrowMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | 11 | @interface MKSellLockEscrowMsg : MKLockMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKClosePostMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKClosePostMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/18/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKClosePostMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/Bitmarkets.h: -------------------------------------------------------------------------------- 1 | // 2 | // Bitmarkets.h 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 10/28/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface Bitmarkets : NSObject 12 | 13 | + nodeRoot; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPaymentMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPaymentMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @interface MKBuyPaymentMsg : MKTxMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmRefundMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmRefundMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmRefundMsg.h" 10 | 11 | @implementation MKConfirmRefundMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellPostedMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellPostedMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/23/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKSellPostedMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Lock/MKSellLockEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellLockEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLock.h" 10 | 11 | @interface MKSellLockEscrow : MKLock 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKClosePostMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKClosePostMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/18/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKClosePostMsg.h" 10 | 11 | @implementation MKClosePostMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPaymentMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPaymentMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyPaymentMsg.h" 10 | 11 | @implementation MKBuyPaymentMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostRefundMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPostRefundMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKBuyPostRefundMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmPaymentMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmPaymentMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmPaymentMsg.h" 10 | 11 | @implementation MKConfirmPaymentMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmRefundMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmRefundMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmMsg.h" 10 | 11 | @interface MKConfirmRefundMsg : MKConfirmMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellPostedMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellPostedMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/23/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellPostedMsg.h" 10 | 11 | @implementation MKSellPostedMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostPaymentMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPostPaymentMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKBuyPostPaymentMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKCancelMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCancelMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | 11 | @interface MKCancelMsg : MKLockMsg 12 | 13 | - (void)broadcast; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmPaymentMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmPaymentMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmMsg.h" 10 | 11 | @interface MKConfirmPaymentMsg : MKConfirmMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostRefundMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPostRefundMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyPostRefundMsg.h" 10 | 11 | @implementation MKBuyPostRefundMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmLockEscrowMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmLockEscrowMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmMsg.h" 10 | 11 | @interface MKConfirmLockEscrowMsg : MKConfirmMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmLockEscrowMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmLockEscrowMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmLockEscrowMsg.h" 10 | 11 | @implementation MKConfirmLockEscrowMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKAcceptBidMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAcceptBidMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKAcceptBidMsg : MKMsg 12 | 13 | - (BOOL)send; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyPostPaymentMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyPostPaymentMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyPostPaymentMsg.h" 10 | 11 | @implementation MKBuyPostPaymentMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyRefundRequestMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyRefundRequestMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @interface MKBuyRefundRequestMsg : MKTxMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKLockMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTxMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @class MKLock; 12 | 13 | @interface MKLockMsg : MKTxMsg 14 | 15 | - (MKLock *)lockNode; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptPaymentMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellAcceptPaymentMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @interface MKSellAcceptPaymentMsg : MKTxMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKMsgGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMsgGroup.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/19/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import "MKMsg.h" 11 | 12 | @interface MKMsgGroup : MKGroup 13 | 14 | - (BOOL)handleMsg:(MKMsg *)mkMsg; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyRefundRequestMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyRefundRequestMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyRefundRequestMsg.h" 10 | 11 | @implementation MKBuyRefundRequestMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/30/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKConfirmMsg : MKMsg 12 | 13 | @property (strong, nonatomic) NSDictionary *tx; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKMessages.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMessages.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/3/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import "MKPostMsg.h" 11 | 12 | @interface MKMessages : MKGroup 13 | 14 | - (MKPostMsg *)postMsg; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Complete/MKSellComplete.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDelivery.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | 11 | @interface MKSellComplete : MKStage 12 | 13 | - (BOOL)isComplete; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptPaymentMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellAcceptPaymentMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellAcceptPaymentMsg.h" 10 | 11 | @implementation MKSellAcceptPaymentMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Lock/MKBuyLockEscrowMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyLockEscrowMSg.h 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | 11 | @interface MKBuyLockEscrowMsg : MKLockMsg 12 | 13 | - (void)broadcast; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDeliveryAddress.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDeliveryAddress.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/11/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKDeliveryAddress.h" 10 | 11 | @interface MKSellDeliveryAddress : MKDeliveryAddress 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptRefundRequestMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellAcceptRefundRequestMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | 11 | @interface MKSellAcceptRefundRequestMsg : MKTxMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellRejectRefundRequestMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellRejectRefundRequestMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKSellRejectRefundRequestMsg : MKMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Release/MKBuyReleaseEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyReleaseEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKRelease.h" 10 | 11 | @interface MKBuyReleaseEscrow : MKRelease 12 | 13 | - (BOOL)isComplete; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKTransactions.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTransactions.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/12/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsgGroup.h" 10 | #import "MKTransaction.h" 11 | 12 | @interface MKTransactions : MKMsgGroup 13 | 14 | - (void)update; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBidMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBidMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @class MKPost; 12 | 13 | @interface MKBidMsg : MKMsg 14 | 15 | - (void)setupForPost:(MKPost *)mkPost; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKTxMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKEscrowMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/7/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKTxMsg : MKMsg 12 | 13 | @property BNTx *tx; 14 | 15 | - (void)configureTx; 16 | - (BOOL)isTxConfirmed; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellReleaseEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellReleaseEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKRelease.h" 10 | 11 | @interface MKSellReleaseEscrow : MKRelease 12 | 13 | - (BOOL)isComplete; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKStepView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKStepView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/12/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKNodeView.h" 11 | 12 | @interface MKStepView : MKNodeView 13 | 14 | @property (assign, nonatomic) BOOL hasArrow; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | .DS_Store 3 | */build/* 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | profile 14 | *.moved-aside 15 | DerivedData 16 | .idea/ 17 | *.hmap 18 | *.xccheckout 19 | 20 | #CocoaPods 21 | Pods 22 | 23 | Bitmarkets.zip 24 | dist/keys/* 25 | .metadata -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPanelView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPanelView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/16/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MKPanelView : NSView 13 | 14 | @property (strong, nonatomic) NSView *innerView; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellAcceptRefundRequestMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellAcceptRefundRequestMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellAcceptRefundRequestMsg.h" 10 | 11 | @implementation MKSellAcceptRefundRequestMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Release/MKSellRejectRefundRequestMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellRejectRefundRequestMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/14/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellRejectRefundRequestMsg.h" 10 | 11 | @implementation MKSellRejectRefundRequestMsg 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/Bitmarkets.m: -------------------------------------------------------------------------------- 1 | // 2 | // Bitmarkets.m 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 10/28/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "Bitmarkets.h" 10 | #import "MKRootNode.h" 11 | 12 | @implementation Bitmarkets 13 | 14 | + nodeRoot 15 | { 16 | return MKRootNode.sharedMKRootNode; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/MKSells.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSells.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKSell.h" 11 | #import "MKTransactions.h" 12 | 13 | @interface MKSells : MKTransactions 14 | 15 | - (MKSell *)addSell; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKLockMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKTxMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | #import "MKLock.h" 11 | 12 | @implementation MKLockMsg 13 | 14 | - (MKLock *)lockNode 15 | { 16 | return (MKLock *)[self nodeParent]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPostMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPostMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @class MKPost; 12 | 13 | @interface MKPostMsg : MKMsg 14 | 15 | - (void)sendPost:(MKPost *)aPost; 16 | - (MKPost *)mkPost; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKDirectMessages.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKDirectMessages.h 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 12/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKDirectMessages : NSObject 12 | 13 | @property (assign, nonatomic) BOOL needsToFetch; 14 | 15 | - (void)fetch; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/MKBuys.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuys.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKBuy.h" 11 | #import "MKTransactions.h" 12 | 13 | @interface MKBuys : MKTransactions 14 | 15 | - (MKBuy *)addBuy; 16 | 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKStepsView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKStepsView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKNodeView.h" 11 | 12 | @interface MKStepsView : MKNodeView 13 | 14 | @property (assign, nonatomic) id delegate; 15 | 16 | - (void)syncFromNode; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Helpers/MKCurrency.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKCurrency.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 8/11/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKCurrency : NSObject 12 | 13 | @property (strong, nonatomic) NSNumber *btcAmount; 14 | 15 | - (NSString *)formattedPriceSetString; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyerAddressMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyerAddressMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsg.h" 10 | 11 | @interface MKBuyerAddressMsg : MKMsg 12 | 13 | - (NSDictionary *)addressDict; 14 | - (void)setAddressDict:(NSDictionary *)aDict; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Complete/MKBuyComplete.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyComplete.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKBuyDeliveryAddress.h" 11 | #import "MKBuyerAddressMsg.h" 12 | 13 | @class MKBuy; 14 | 15 | @interface MKBuyComplete : MKStage 16 | 17 | - (BOOL)isComplete; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyDeliveryAddress.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyDeliveryAddress.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/7/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKDeliveryAddress.h" 10 | #import "MKBuyerAddressMsg.h" 11 | 12 | @interface MKBuyDeliveryAddress : MKDeliveryAddress 13 | 14 | - (void)approve; 15 | - (BOOL)isApproved; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /BitMarkets/MKAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // BMKAppDelegate.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/15/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | //#import "MKRootNode.h" 13 | 14 | @interface MKAppDelegate : NavAppController 15 | 16 | //@property (strong, nonatomic) MKRootNode *rootNode; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKAcceptBidMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKAcceptBidMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKAcceptBidMsg.h" 10 | 11 | @implementation MKAcceptBidMsg 12 | 13 | - (NSString *)nodeTitle 14 | { 15 | return @"Bid Accepted"; 16 | } 17 | 18 | - (BOOL)send 19 | { 20 | return [self sendToBuyer]; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKNodeView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKNodeView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/16/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MKNodeView : NavColoredView 13 | 14 | @property (strong, nonatomic) NavNode *node; 15 | 16 | - (void)layout; // subclasses should override 17 | - (void)syncFromNode; // subclasses should override 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKSetupLockMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSetupLockMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKLockMsg.h" 10 | 11 | @interface MKSetupLockMsg : MKLockMsg 12 | 13 | @property (strong, nonatomic) NSNumber *broadcastDateNumber; 14 | 15 | - (void)configureAndBroadcastTx; 16 | //- (void)broadcastIfNeeded; 17 | 18 | - (void)returnChangeToWallet; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDelivery.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDelivery.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKSellPostedMsg.h" 11 | 12 | @interface MKSellDelivery : MKStage 13 | 14 | @property (strong, nonatomic) NSNumber *hasViewedAddress; 15 | 16 | - (BOOL)isComplete; 17 | 18 | - (MKSellPostedMsg *)postedMsg; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPanelManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPanelManager.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/17/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKPanelView.h" 11 | 12 | @interface MKPanelManager : NSObject 13 | 14 | @property (strong, nonatomic) NSView *panelReceiver; 15 | 16 | + (MKPanelManager *)sharedPanelManager; 17 | 18 | - (MKPanelView *)openNewPanel; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKRejectBidMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKRejectBidMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKRejectBidMsg.h" 10 | 11 | @implementation MKRejectBidMsg 12 | 13 | - (NSString *)nodeTitle 14 | { 15 | //if (self.isInBuy) 16 | return @"Bid Rejected"; 17 | } 18 | 19 | - (BOOL)send 20 | { 21 | return [self sendToBuyer]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKSellBids.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellBids.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKSellBid.h" 11 | 12 | @interface MKSellBids : MKStage 13 | 14 | //- (void)setAcceptedBid:(MKSellBid *)sellBid; 15 | 16 | - (MKSellBid *)acceptedBid; 17 | - (BOOL)isComplete; 18 | 19 | - (void)sendClosePost; 20 | - (void)rejectUnacceptedBids; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPasswordView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPasswordView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 7/20/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MKPasswordView : NSView 13 | 14 | @property (strong, nonatomic) NavTextView *info; 15 | @property (strong, nonatomic) NSSecureTextField *password; 16 | @property (strong, nonatomic) NSSecureTextField *passwordConfirm; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Notes/ItemAttributes.txt: -------------------------------------------------------------------------------- 1 | 2 | region: array 3 | category: array 4 | 5 | title: short string 6 | description: long string 7 | quantity: number 8 | price: number 9 | attachments: [{}, ...] 10 | 11 | considering adding these: 12 | 13 | size: string 14 | color: string 15 | gender: M/F 16 | brand: string 17 | model: string 18 | year: number [1900-next year?] 19 | age: number 20 | condition: string 21 | grade: string, grade metric: string 22 | purity/quality: number %? 23 | milage: number 24 | 25 | 26 | [post, delete] 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKStage.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKStage.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | 11 | @class MKTransaction; 12 | 13 | @interface MKStage : MKGroup 14 | 15 | - (BOOL)isActive; 16 | - (BOOL)isComplete; 17 | 18 | - (MKTransaction *)transaction; 19 | 20 | - (MKStage *)nextStage; 21 | - (MKStage *)previousStage; 22 | 23 | - (BOOL)canDelete; 24 | - (BOOL)prepareToDelete; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKSellLockEscrowMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKLockEscrowMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellLockEscrowMsg.h" 10 | #import "MKLock.h" 11 | 12 | @implementation MKSellLockEscrowMsg 13 | 14 | - (void)configureTx 15 | { 16 | self.tx = [self.runningWallet newTx]; 17 | [self.tx configureForEscrowWithInputTx:self.lockNode.setupLockMsg.tx]; 18 | [self.tx lockInputs]; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/BNKeyView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BNKeyView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/29/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BNKeyView : NSView 12 | 13 | @property (strong, nonatomic) BNKey *node; 14 | @property (strong, nonatomic) NavView *navView; 15 | @property (strong, nonatomic) NSImageView *qrCodeImageView; 16 | @property (strong, nonatomic) NSTextView *qrCodeTextView; 17 | @property (assign, nonatomic) CGFloat qrWidth; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBuyBid.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyBid.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKBidMsg.h" 11 | #import "MKAcceptBidMsg.h" 12 | #import "MKRejectBidMsg.h" 13 | 14 | @interface MKBuyBid : MKStage 15 | 16 | - (MKBidMsg *)bidMsg; 17 | - (MKAcceptBidMsg *)acceptMsg; 18 | - (MKRejectBidMsg *)rejectMsg; 19 | 20 | - (BOOL)wasSent; 21 | - (BOOL)wasAccepted; 22 | - (BOOL)wasRejected; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKUpdateMessage.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKUpdateMessage.h 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 12/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface MKUpdateMessage : NSObject 13 | 14 | @property (strong, nonatomic) NSDictionary *dict; 15 | @property (strong, nonatomic) BMMessage *bmMessage; 16 | 17 | - (NSString *)version; 18 | - (BOOL)isNewer; 19 | - (void)deleteIfOlder; 20 | - (void)showAlert; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKEscrow.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKEscrow.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKCancelMsg.h" 11 | #import "MKCancelConfirmed.h" 12 | 13 | @class MKBuy; 14 | @class MKSell; 15 | 16 | @interface MKEscrow : MKStage 17 | 18 | @property (strong, nonatomic) NSString *error; 19 | 20 | - (MKBuy *)buy; 21 | - (BOOL)isBuy; 22 | 23 | - (MKSell *)sell; 24 | - (BOOL)isSell; 25 | 26 | 27 | - (BOOL)isCancelConfirmed; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Bid/MKSellBid.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellBid.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import "MKBidMsg.h" 11 | #import 12 | 13 | @interface MKSellBid : MKGroup 14 | 15 | @property (strong, nonatomic) NSString *error; 16 | 17 | - (MKBidMsg *)bidMsg; 18 | 19 | - (void)update; 20 | 21 | - (BOOL)wasAccepted; 22 | - (BOOL)wasRejected; 23 | 24 | - (void)accept; 25 | - (void)reject; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyDelivery.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyDelivery.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKBuyDeliveryAddress.h" 11 | #import "MKBuyerAddressMsg.h" 12 | 13 | @class MKBuy; 14 | 15 | @interface MKBuyDelivery : MKStage 16 | 17 | - (MKBuyDeliveryAddress *)address; 18 | - (MKBuyerAddressMsg *)addressMsg; 19 | - (MKBuy *)buy; 20 | 21 | - (void)update; 22 | - (void)sendAddress; 23 | - (BOOL)isApproved; 24 | 25 | - (BOOL)isComplete; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKActionsView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKActionsView.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 2/21/14. 6 | // Copyright (c) 2014 Bitmarkets.org. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKTextView.h" 12 | 13 | @interface MKActionsView : NSView 14 | 15 | @property (assign, nonatomic) NavView *navView; 16 | @property (assign, nonatomic) NavNode *node; 17 | 18 | @property (strong, nonatomic) NavColoredView *group; 19 | 20 | - (void)prepareToDisplay; 21 | - (void)selectFirstResponder; 22 | 23 | - (BOOL)handlesNodeActions; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKTextFieldCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTextFieldCell.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 7/1/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKTextFieldCell : NSTextFieldCell 12 | 13 | @property (assign, nonatomic) CGFloat marginLeft; 14 | @property (assign, nonatomic) CGFloat marginRight; 15 | @property (assign, nonatomic) CGFloat marginTop; 16 | @property (assign, nonatomic) CGFloat marginBottom; 17 | 18 | @property (assign, nonatomic) CGFloat bottomLineWidth; 19 | @property (strong, nonatomic) NSColor *lineColor; 20 | 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKMessages.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKMessages.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/3/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMessages.h" 10 | #import "MKPost.h" 11 | 12 | @implementation MKMessages 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | return self; 18 | } 19 | 20 | - (NSNumber *)nodeSuggestedWidth 21 | { 22 | return @360; 23 | } 24 | 25 | - (NSString *)nodeTitle 26 | { 27 | return @"Messages"; 28 | } 29 | 30 | - (MKPostMsg *)postMsg 31 | { 32 | return [self.children firstObjectOfClass:MKPost.class]; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/BNWalletView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BNWalletView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/26/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKNodeView.h" 10 | #import "MKStatusView.h" 11 | 12 | @interface BNWalletView : MKNodeView 13 | 14 | @property (assign, nonatomic) NavView *navView; 15 | 16 | @property (strong, nonatomic) MKStatusView *statusView; 17 | @property (strong, nonatomic) NSScrollView *scrollView; 18 | @property (strong, nonatomic) NSTableView *tableView; 19 | @property (strong, nonatomic) NSTextView *standinText; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /dist/generate_keys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | for file in "dsaparam.pem" "dsa_priv.pem" "dsa_pub.pem"; do 4 | if [ -e "$file" ]; then 5 | echo "There's already a $file here! Move it aside or be more careful!" 6 | exit 1 7 | fi 8 | done 9 | 10 | openssl="/usr/bin/openssl" 11 | $openssl gendsa <($openssl dsaparam 4096) -out dsa_priv.pem 12 | chmod 0400 dsa_priv.pem 13 | $openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem 14 | chmod 0444 dsa_pub.pem 15 | 16 | echo " 17 | Generated private and public keys: dsa_priv.pem and dsa_pub.pem. 18 | BACK UP YOUR PRIVATE KEY AND KEEP IT SAFE! 19 | If you lose it, your users will be unable to upgrade!" 20 | 21 | open -R dsa_priv.pem 22 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKConfirmMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKConfirmMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/30/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKConfirmMsg.h" 10 | 11 | @implementation MKConfirmMsg 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | [self addPropertyName:@"tx"]; 17 | return self; 18 | } 19 | 20 | - (NSString *)nodeTitle 21 | { 22 | return [NSString stringWithFormat:@"Transaction %@", [self.tx objectForKey:@"txid"]]; 23 | } 24 | 25 | - (NSString *)nodeSubtitle 26 | { 27 | return [NSString stringWithFormat:@"Confirmed %@", self.dateString]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/MKBuys.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuys.m 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuys.h" 10 | #import "MKBuy.h" 11 | 12 | @implementation MKBuys 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | self.nodeChildClass = MKBuy.class; 18 | // [self read]; 19 | return self; 20 | } 21 | 22 | - (NSString *)nodeTitle 23 | { 24 | return @"Buys"; 25 | } 26 | 27 | - (MKBuy *)addBuy 28 | { 29 | MKBuy *buy = [super addChild]; 30 | [self write]; 31 | return buy; 32 | } 33 | 34 | - (void)delete 35 | { 36 | return; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /dist/generate_xml.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FEED_TITLE="title" 4 | LINK="http://voluntary.net/bitpostcast.xml" 5 | FEED_DESCRIPTION="Bitmarkets Changelog" 6 | VERSION="1.0" 7 | DESCRIPTION="list of items" 8 | PUB_DATE=$(date -u) 9 | URL="http://link.to.app/Bitmarkets.zip" 10 | FILENAME="./Bitmarkets.zip" 11 | LENGTH=$(stat -f%z "$FILENAME") 12 | DSA_SIGNATURE=$(dist/sign_update.sh $FILENAME dist/keys/dsa_priv.pem) 13 | 14 | sed -e "s;%FEED_TITLE%;$FEED_TITLE;g" -e "s;%LINK%;$LINK;g" -e "s;%FEED_DESCRIPTION%;$FEED_DESCRIPTION;g" -e "s;%VERSION%;$VERSION;g" -e "s;%DESCRIPTION%;$DESCRIPTION;g" -e "s;%PUB_DATE%;$PUB_DATE;g" -e "s;%URL%;$URL;g" -e "s;%LENGTH%;$LENGTH;g" -e "s;%DSA_SIGNATURE%;$DSA_SIGNATURE;g" dist/template.xml 15 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/Sparkle.h: -------------------------------------------------------------------------------- 1 | // 2 | // Sparkle.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SPARKLE_H 10 | #define SPARKLE_H 11 | 12 | // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless 13 | // there are name-space collisions) so we can list all of them to start with: 14 | 15 | #import 16 | 17 | #import 18 | #import 19 | #import 20 | #import 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /dist/template.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %FEED_TITLE% 5 | %LINK% 6 | %FEED_DESCRIPTION% 7 | en 8 | 9 | toVersion %VERSION% 10 | 11 | 14 | 15 | %PUB_DATE% 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUVersionDisplayProtocol.h 3 | // EyeTV 4 | // 5 | // Created by Uli Kusterer on 08.12.09. 6 | // Copyright 2009 Elgato Systems GmbH. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | /*! 13 | Applies special display formatting to version numbers. 14 | */ 15 | @protocol SUVersionDisplay 16 | 17 | /*! 18 | Formats two version strings. 19 | 20 | Both versions are provided so that important distinguishing information 21 | can be displayed while also leaving out unnecessary/confusing parts. 22 | */ 23 | - (void)formatVersion:(NSString **)inOutVersionA andVersion:(NSString **)inOutVersionB; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKRootNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKRootNode.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/15/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | 14 | #import "MKMarkets.h" 15 | #import "MKSells.h" 16 | #import "MKBuys.h" 17 | 18 | @interface MKRootNode : NavInfoNode 19 | 20 | @property (strong, nonatomic) BMClient *bmClient; 21 | @property (strong, nonatomic) MKMarkets *markets; 22 | @property (strong, nonatomic) BNWallet *wallet; 23 | 24 | + (MKRootNode *)sharedMKRootNode; 25 | - (BMIdentity *)bitmarketsUserIdentity; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /CHANGELOG: -------------------------------------------------------------------------------- 1 | version 0.8.7.15 (Dec 10, 2014) 2 | - added Global region 3 | - fix for post layout bug 4 | - initial work on app updates via subscription 5 | 6 | version 0.8.7.14 7 | - automatic periodic reposting until a bid is accepted 8 | - window size now remembered and min window size fix 9 | - added a test category folder 10 | - seller can only post if they have sufficient funds for escrow 11 | - increased minimum price for posts 12 | - added a simple channel syncing indicator 13 | - fix for wallet balance formatting 14 | - changed "0 confirms" to "Unconfirmed" string in UI 15 | - use ... on long post names for nodeTitle 16 | - withdraw network warning 17 | - fix button overlap bug 18 | - use lower limit when posting to Tests 19 | - fixed issue with sending bid to self 20 | 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKStatusView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKStatusView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/12/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKNodeView.h" 11 | 12 | @interface MKStatusView : MKNodeView 13 | 14 | @property (strong, nonatomic) NavColoredView *buttonsView; 15 | @property (strong, nonatomic) NavTextView *statusTextView; 16 | @property (strong, nonatomic) NavTextView *subtitleTextView; 17 | @property (strong, nonatomic) NSString *title; 18 | 19 | @property (assign, nonatomic) SEL titleSelector; 20 | @property (assign, nonatomic) SEL subtitleSelector; 21 | 22 | 23 | - (NSDictionary *)nodeTitleAttributes; 24 | - (void)setupButtons; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "submodules/BitmessageKit"] 2 | path = submodules/BitmessageKit 3 | url = git@github.com:Voluntarynet/BitmessageKit.git 4 | branch = master 5 | [submodule "submodules/FoundationCategoriesKit"] 6 | path = submodules/FoundationCategoriesKit 7 | url = git@github.com:Voluntarynet/FoundationCategoriesKit.git 8 | branch = master 9 | [submodule "submodules/NavKit"] 10 | path = submodules/NavKit 11 | url = git@github.com:Voluntarynet/NavKit.git 12 | branch = master 13 | [submodule "submodules/NavNodeKit"] 14 | path = submodules/NavNodeKit 15 | url = git@github.com:Voluntarynet/NavNodeKit.git 16 | branch = master 17 | [submodule "submodules/BitnashKit"] 18 | path = submodules/BitnashKit 19 | url = git@github.com:Voluntarynet/BitnashKit.git 20 | branch = master 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKMsgGroup.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKMsgGroup.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/19/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMsgGroup.h" 10 | #import "MKMsg.h" 11 | 12 | @implementation MKMsgGroup 13 | 14 | - (BOOL)handleMsg:(MKMsg *)mkMsg // put in parent class of Buys and Sells 15 | { 16 | for (MKMsgGroup *child in self.children) 17 | { 18 | if ([child respondsToSelector:@selector(handleMsg:)]) 19 | { 20 | BOOL didHandle = [child handleMsg:mkMsg]; 21 | 22 | if (didHandle) 23 | { 24 | return YES; 25 | } 26 | } 27 | } 28 | 29 | return NO; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Helpers/MKExchangeRate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKExchangeRate.h 3 | // BitMarkets 4 | // 5 | // Created by Adam Thorsen on 4/27/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKExchangeRate : NSObject 12 | 13 | @property (strong, nonatomic) NSURLConnection *connection; 14 | @property (strong, nonatomic) NSMutableData *responseData; 15 | @property (strong, nonatomic) NSMutableDictionary *rates; 16 | @property (strong, nonatomic) NSTimer *repeatingTimer; 17 | 18 | - (NSNumber *)btcPerSymbol:(NSString *)symbol; 19 | - (void)startRepeatingTimer; 20 | - (void)update; 21 | 22 | + (MKExchangeRate *)shared; 23 | 24 | //- (NSString *)formattedPriceForSymbol:(NSString *)aSymbol; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /commit.sh: -------------------------------------------------------------------------------- 1 | cd submodules 2 | 3 | 4 | cd BitnashKit 5 | pwd 6 | git add . 7 | git commit . -s 8 | cd .. 9 | 10 | 11 | cd BitmessageKit 12 | cd submodules 13 | 14 | 15 | cd FoundationCategoriesKit 16 | pwd 17 | git add . 18 | git commit . -s 19 | cd .. 20 | 21 | cd NavKit 22 | pwd 23 | git add . 24 | git commit . -s 25 | cd .. 26 | 27 | cd NavNodeKit 28 | pwd 29 | git add . 30 | git commit . -s 31 | cd .. 32 | 33 | cd SystemInfoKit 34 | pwd 35 | git add . 36 | git commit . -s 37 | cd .. 38 | 39 | cd TorServerKit 40 | cd submodules/SystemInfoKit 41 | pwd 42 | git add . 43 | git commit . -s 44 | cd ../.. 45 | 46 | pwd 47 | git add . 48 | git commit . -s 49 | 50 | cd ../../../BitmessageKit 51 | pwd 52 | git add . 53 | git commit . -s 54 | 55 | cd ../.. 56 | pwd 57 | git add . 58 | git commit . -s 59 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKUpdatesSubscription.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKUpdatesSubscription.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | // This object reads messages from the bitmarkets channel, 9 | // creates objects for each as a child to the appropriate 10 | // MKCategory 11 | // 12 | 13 | #import 14 | #import 15 | 16 | @interface MKUpdatesSubscription : NavNode 17 | 18 | @property (strong, nonatomic) NSString *updatesAddress; 19 | @property (strong, nonatomic) BMSubscription *subscription; 20 | 21 | @property (assign) BOOL needsToFetch; 22 | 23 | @property (strong, nonatomic) NSMutableDictionary *shownMessages; 24 | 25 | - (void)fetch; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Delivery/MKSellDeliveryAddress.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDeliveryAddress.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/11/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellDeliveryAddress.h" 10 | 11 | @implementation MKSellDeliveryAddress 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | self.isEditable = NO; 17 | self.nodeViewClass = NavMirrorView.class; 18 | return self; 19 | } 20 | 21 | - (NSString *)nodeTitle 22 | { 23 | return @"Buyer's Address"; 24 | } 25 | 26 | - (NSString *)nodeSubtitle 27 | { 28 | if (self.isFilled) 29 | { 30 | return @"received "; 31 | } 32 | 33 | return @"awaiting from buyer"; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /BitMarketsTests/BitMarketsTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // BitMarketsTests.m 3 | // BitMarketsTests 4 | // 5 | // Created by Steve Dekorte on 4/15/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BitMarketsTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation BitMarketsTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKAttachmentView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAttachmentView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/20/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKDragFileWell.h" 12 | 13 | @protocol MKAttachmentViewProtocol 14 | - (void)changedAttachment:sender; 15 | @end 16 | 17 | @interface MKAttachmentView : NavColoredView 18 | 19 | @property (assign, nonatomic) id delegate; 20 | 21 | @property (strong, nonatomic) MKDragFileWell *dragWell; 22 | @property (strong, nonatomic) NavTextView *instructions; 23 | @property (strong, nonatomic) NSButton *closeButton; 24 | @property (assign, nonatomic) BOOL editable; 25 | 26 | - (void)setImage:(NSImage *)image; 27 | - (NSImage *)image; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKTransaction.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTransaction.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/3/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKMessages.h" 11 | #import "MKMsgGroup.h" 12 | #import "MKPost.h" 13 | 14 | @class BNTx; 15 | 16 | @interface MKTransaction : MKMsgGroup 17 | 18 | @property (strong, nonatomic) MKPost *mkPost; 19 | @property (strong, nonatomic) NSString *error; 20 | 21 | - (NSArray *)visibleStages; 22 | - (MKStage *)currentStage; 23 | - (NSArray *)stages; 24 | 25 | 26 | - (NSString *)statusTitle; 27 | - (NSString *)nodeSubtitleDetailed; 28 | 29 | - (void)update; 30 | 31 | - (BOOL)isBuy; 32 | - (NSString *)description; 33 | 34 | 35 | - (BOOL)canDelete; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUAppcast.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcast.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCAST_H 10 | #define SUAPPCAST_H 11 | 12 | @protocol SUAppcastDelegate; 13 | 14 | @class SUAppcastItem; 15 | @interface SUAppcast : NSObject 16 | 17 | @property (weak) id delegate; 18 | @property (copy) NSString *userAgentString; 19 | 20 | - (void)fetchAppcastFromURL:(NSURL *)url; 21 | 22 | @property (readonly, copy) NSArray *items; 23 | @end 24 | 25 | @protocol SUAppcastDelegate 26 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast; 27 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKMarketChannel.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMarketChannel.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | // This object reads messages from the bitmarkets channel, 9 | // creates objects for each as a child to the appropriate 10 | // MKCategory 11 | // 12 | 13 | #import 14 | #import 15 | 16 | @interface MKMarketChannel : NavNode 17 | 18 | @property (strong, nonatomic) NSString *passphrase; 19 | @property (strong, nonatomic) BMChannel *channel; 20 | 21 | @property (assign, nonatomic) BOOL needsToFetchChannelMessages; 22 | //@property (assign, nonatomic) BOOL needsToFetchDirectMessages; 23 | @property (assign, nonatomic) long totalPostCount; 24 | 25 | - (void)fetch; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarketsTests/Bitmarkets.temp_caseinsensitive_renameTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.Bitmarkets.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKCancelMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKCancelMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKCancelMsg.h" 10 | #import "MKLock.h" 11 | 12 | @implementation MKCancelMsg 13 | 14 | - (void)configureTx 15 | { 16 | if (self.lockNode.lockEscrowMsgToConfirm) 17 | { 18 | self.tx = self.lockNode.lockEscrowMsgToConfirm.tx.cancellationTx; 19 | [self.tx unlockInputs]; 20 | [self.tx sign]; 21 | } 22 | else 23 | { 24 | self.tx = nil; 25 | } 26 | 27 | } 28 | 29 | - (void)broadcast 30 | { 31 | if (self.tx) 32 | { 33 | self.payload = self.tx.asJSONObject; 34 | [self write]; 35 | [self.tx broadcast]; 36 | } 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKTxProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKTxProgressView.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/4/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKNodeView.h" 12 | #import "MKStepsView.h" 13 | #import "MKTransaction.h" 14 | #import "MKStatusView.h" 15 | #import "MKPostView.h" 16 | 17 | @interface MKTxProgressView : MKNodeView 18 | 19 | @property (assign, nonatomic) NavView *navView; 20 | 21 | @property (strong, nonatomic) MKStepsView *stepsView; 22 | @property (strong, nonatomic) MKStatusView *statusView; 23 | @property (strong, nonatomic) NavColoredView *bottomView; 24 | @property (strong, nonatomic) MKPostView *postView; 25 | @property (strong, nonatomic) NavColoredView *maskView; // overlays grey 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Delivery/MKBuyerAddressMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyerAddressMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyerAddressMsg.h" 10 | 11 | @implementation MKBuyerAddressMsg 12 | 13 | - (NSString *)nodeTitle 14 | { 15 | if (self.isInBuy) 16 | { 17 | return @"Sent Address"; 18 | } 19 | 20 | return @"Received Address"; 21 | } 22 | 23 | - (BOOL)send 24 | { 25 | return [super sendToSeller]; 26 | } 27 | 28 | - (NSDictionary *)addressDict 29 | { 30 | return self.payload; 31 | } 32 | 33 | - (void)setAddressDict:(NSDictionary *)aDict 34 | { 35 | [self setPayload:aDict]; 36 | } 37 | 38 | - (id)descriptionJSONObject 39 | { 40 | return [super descriptionJSONObject]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUVersionComparisonProtocol.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 12/21/07. 6 | // Copyright 2007 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUVERSIONCOMPARISONPROTOCOL_H 10 | #define SUVERSIONCOMPARISONPROTOCOL_H 11 | 12 | #import 13 | 14 | /*! 15 | Provides version comparison facilities for Sparkle. 16 | */ 17 | @protocol SUVersionComparison 18 | 19 | /*! 20 | An abstract method to compare two version strings. 21 | 22 | Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, 23 | and NSOrderedSame if they are equivalent. 24 | */ 25 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD! 26 | 27 | @end 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/MKBuy.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuy.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/17/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKTransaction.h" 11 | #import "MKPost.h" 12 | #import "MKBuyBid.h" 13 | #import "MKBuyLockEscrow.h" 14 | #import "MKBuyDelivery.h" 15 | #import "MKBuyReleaseEscrow.h" 16 | #import "MKTxProgressView.h" 17 | #import "MKBuyComplete.h" 18 | 19 | @interface MKBuy : MKTransaction 20 | 21 | @property (strong, nonatomic) MKBuyBid *bid; 22 | @property (strong, nonatomic) MKBuyLockEscrow *lockEscrow; 23 | @property (strong, nonatomic) MKBuyDelivery *delivery; 24 | @property (strong, nonatomic) MKBuyReleaseEscrow *releaseEscrow; 25 | @property (strong, nonatomic) MKBuyComplete *complete; 26 | 27 | - (MKBidMsg *)bidMsg; 28 | - (BOOL)isCanceled; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/MKSells.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSells.m 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKSells.h" 11 | #import "MKSell.h" 12 | #import "MKMsg.h" 13 | 14 | @implementation MKSells 15 | 16 | - (id)init 17 | { 18 | self = [super init]; 19 | self.nodeChildClass = MKSell.class; 20 | return self; 21 | } 22 | 23 | - (NSString *)nodeTitle 24 | { 25 | return @"Sells"; 26 | } 27 | 28 | - (MKSell *)addSell 29 | { 30 | MKSell *sell = [super addChild]; 31 | [self write]; 32 | return sell; 33 | } 34 | 35 | // test 36 | 37 | - (void)write 38 | { 39 | [super write]; 40 | } 41 | 42 | - (void)read 43 | { 44 | [super read]; 45 | } 46 | 47 | - (void)delete 48 | { 49 | return; 50 | } 51 | 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /checkout.sh: -------------------------------------------------------------------------------- 1 | cd submodules 2 | 3 | 4 | cd BitnashKit 5 | pwd 6 | git checkout master 7 | git push origin master 8 | cd .. 9 | 10 | 11 | cd BitmessageKit 12 | cd submodules 13 | 14 | 15 | cd FoundationCategoriesKit 16 | pwd 17 | git checkout master 18 | git push origin master 19 | cd .. 20 | 21 | cd NavKit 22 | pwd 23 | git checkout master 24 | git push origin master 25 | cd .. 26 | 27 | cd NavNodeKit 28 | pwd 29 | git checkout master 30 | git push origin master 31 | cd .. 32 | 33 | cd SystemInfoKit 34 | pwd 35 | git checkout master 36 | git push origin master 37 | cd .. 38 | 39 | cd TorServerKit 40 | cd submodules/SystemInfoKit 41 | pwd 42 | git checkout master 43 | git push origin master 44 | cd .. 45 | 46 | cd ../../../TorServerKit 47 | pwd 48 | git checkout master 49 | git push origin master 50 | 51 | cd ../../../BitmessageKit 52 | pwd 53 | git checkout master 54 | git push origin master 55 | 56 | cd ../../../Bitmarkets 57 | pwd 58 | git checkout master 59 | git push origin master 60 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKEscrow.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKEscrow.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKEscrow.h" 10 | #import "MKBuy.h" 11 | #import "MKSell.h" 12 | 13 | @implementation MKEscrow 14 | 15 | // buy 16 | 17 | - (MKBuy *)buy 18 | { 19 | MKBuy *buy = (MKBuy *)[self firstInParentChainOfClass:MKBuy.class]; 20 | assert(buy != nil); 21 | return buy; 22 | } 23 | 24 | - (BOOL)isBuy 25 | { 26 | return self.buy != nil; 27 | } 28 | 29 | // sell 30 | 31 | - (MKSell *)sell 32 | { 33 | MKSell *sell = (MKSell *)[self firstInParentChainOfClass:MKSell.class]; 34 | assert(sell != nil); 35 | return sell; 36 | } 37 | 38 | - (BOOL)isSell 39 | { 40 | return self.sell != nil; 41 | } 42 | 43 | 44 | - (BOOL)isCancelConfirmed 45 | { 46 | [NSException raise:@"MKEscrow subclasses should override isCancelled method" format:@""]; 47 | return NO; 48 | } 49 | 50 | 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/MKSell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKSell.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/21/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKTransaction.h" 11 | #import "MKPost.h" 12 | #import "MKSellBids.h" 13 | #import "MKSellLockEscrow.h" 14 | #import "MKSellDelivery.h" 15 | #import "MKSellReleaseEscrow.h" 16 | #import "MKSellBid.h" 17 | #import "MKSellComplete.h" 18 | 19 | @class MKSells; 20 | 21 | @interface MKSell : MKTransaction 22 | 23 | //@property (strong, nonatomic) MKPost *mkPost; 24 | @property (strong, nonatomic) MKSellBids *bids; 25 | @property (strong, nonatomic) MKSellLockEscrow *lockEscrow; 26 | @property (strong, nonatomic) MKSellDelivery *delivery; 27 | @property (strong, nonatomic) MKSellReleaseEscrow *releaseEscrow; 28 | @property (strong, nonatomic) MKSellComplete *complete; 29 | 30 | - (MKBidMsg *)acceptedBidMsg; 31 | 32 | - (BOOL)isCanceled; 33 | 34 | - (MKSells *)sells; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKTxMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKEscrowMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/7/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTxMsg.h" 10 | #import "MKBuyLockEscrow.h" 11 | #import 12 | 13 | @implementation MKTxMsg 14 | 15 | @synthesize tx = _tx; 16 | 17 | - (BNTx *)tx 18 | { 19 | if (!_tx && self.payload && self.runningWallet) 20 | { 21 | self.tx = (BNTx *)[self.payload asObjectFromJSONObject]; 22 | self.tx.wallet = self.runningWallet; 23 | } 24 | 25 | return _tx; 26 | } 27 | 28 | - (void)setTx:(BNTx *)tx 29 | { 30 | _tx = tx; 31 | } 32 | 33 | 34 | - (BOOL)isTxConfirmed 35 | { 36 | if (self.tx) 37 | { 38 | [self.tx refresh]; 39 | return self.tx.isConfirmed; 40 | } 41 | else 42 | { 43 | return NO; 44 | } 45 | } 46 | 47 | - (void)configureTx 48 | { 49 | [NSException raise:@"Subclasses should override" format:@""]; 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKStage.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKStep.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKTransaction.h" 11 | #import 12 | 13 | @implementation MKStage 14 | 15 | - (BOOL)isActive 16 | { 17 | [NSException raise:@"subclasses must override" format:@""]; 18 | return YES; 19 | } 20 | 21 | - (BOOL)isComplete 22 | { 23 | [NSException raise:@"subclasses must override" format:@""]; 24 | return NO; 25 | } 26 | 27 | - (MKTransaction *)transaction 28 | { 29 | return (MKTransaction *)self.nodeParent; 30 | } 31 | 32 | - (MKStage *)nextStage 33 | { 34 | return [self.transaction.stages objectAfter:self]; 35 | } 36 | 37 | - (MKStage *)previousStage 38 | { 39 | return [self.transaction.stages objectBefore:self]; 40 | } 41 | 42 | - (BOOL)canDelete 43 | { 44 | return YES; 45 | } 46 | 47 | - (BOOL)prepareToDelete 48 | { 49 | return YES; 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKMarkets.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMarkets.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "MKMarketChannel.h" 12 | #import "MKDirectMessages.h" 13 | #import "MKUpdatesSubscription.h" 14 | 15 | #import "MKRegion.h" 16 | #import "MKCategory.h" 17 | 18 | #import "MKBuys.h" 19 | #import "MKBuy.h" 20 | 21 | #import "MKSells.h" 22 | #import "MKSell.h" 23 | 24 | @interface MKMarkets : NavInfoNode 25 | 26 | @property (strong, nonatomic) MKRegion *rootRegion; 27 | 28 | //@property (strong, nonatomic) MKCategory *rootCategory; 29 | @property (strong, nonatomic) MKMarketChannel *mkChannel; 30 | @property (strong, nonatomic) MKDirectMessages *mkDirectMessages; 31 | @property (strong, nonatomic) MKUpdatesSubscription *mkUpdatesSubscription; 32 | 33 | @property (strong, nonatomic) MKBuys *buys; 34 | @property (strong, nonatomic) MKSells *sells; 35 | 36 | 37 | - (void)read; 38 | - (void)write; 39 | - (BOOL)handleMsg:(MKMsg *)mkMsg; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUStandardVersionComparator.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 12/21/07. 6 | // Copyright 2007 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUSTANDARDVERSIONCOMPARATOR_H 10 | #define SUSTANDARDVERSIONCOMPARATOR_H 11 | 12 | 13 | #import "SUVersionComparisonProtocol.h" 14 | 15 | /*! 16 | Sparkle's default version comparator. 17 | 18 | This comparator is adapted from MacPAD, by Kevin Ballard. 19 | It's "dumb" in that it does essentially string comparison, 20 | in components split by character type. 21 | */ 22 | @interface SUStandardVersionComparator : NSObject 23 | 24 | /*! 25 | Returns a singleton instance of the comparator. 26 | */ 27 | + (SUStandardVersionComparator *)defaultComparator; 28 | 29 | /*! 30 | Compares version strings through textual analysis. 31 | 32 | See the implementation for more details. 33 | */ 34 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; 35 | @end 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Voluntary.net 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKGroup.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/24/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | //@class MKMsg; 14 | 15 | @interface MKGroup : NavInfoNode 16 | 17 | @property (strong, nonatomic) NSString *name; 18 | @property (strong, nonatomic) JSONDB *db; 19 | @property (strong, nonatomic) NSMutableArray *dictPropertyNames; 20 | //@property (assign, nonatomic) NSInteger count; 21 | 22 | + (MKGroup *)rootInstance; 23 | 24 | - (void)setDict:(NSDictionary *)dict; 25 | - (NSDictionary *)dict; 26 | 27 | - (void)setPropertiesDict:(NSDictionary *)dict; 28 | - (NSDictionary *)propertiesDict; 29 | 30 | - (void)addPropertyName:(NSString *)aName; 31 | 32 | 33 | - (void)read; 34 | - (void)write; 35 | 36 | - (NSArray *)groupSubpaths; 37 | - (NSArray *)groupNamePath; 38 | 39 | - (void)updateCounts; 40 | - (NSInteger)countOfLeafChildren; 41 | 42 | - (BNWallet *)runningWallet; 43 | 44 | //- (BOOL)handleMsg:(MKMsg *)mkMsg; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKDeliveryAddress.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKDeliveryAddress.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/7/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import "MKBuyerAddressMsg.h" 11 | 12 | @interface MKDeliveryAddress : MKGroup 13 | 14 | @property (strong, nonatomic) NSMutableDictionary *addressDict; 15 | @property (assign, nonatomic) BOOL isEditable; 16 | 17 | /* 18 | @property (strong, nonatomic) NSString *addressee; 19 | @property (strong, nonatomic) NSString *address1; 20 | @property (strong, nonatomic) NSString *address2; 21 | @property (strong, nonatomic) NSString *country; 22 | */ 23 | 24 | /* 25 | // name 26 | 27 | - (void)setAddressee:(NSString *)aString; 28 | - (NSString *)addressee; 29 | 30 | // address1 31 | 32 | - (void)setAddress1:(NSString *)aString; 33 | - (NSString *)address1; 34 | 35 | // address2 36 | 37 | - (void)setAddress2:(NSString *)aString; 38 | - (NSString *)address2; 39 | 40 | // country 41 | 42 | - (void)setCountry:(NSString *)aString; 43 | - (NSString *)country; 44 | */ 45 | // checks 46 | 47 | - (BOOL)isFilled; 48 | - (BOOL)canSend; 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /BitMarkets/resources/licenses/bitmessage/COPYING.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2014 Jonathan Warren 2 | Copyright (c) 2013-2014 The Bitmessage Developers 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in 12 | all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKDragFileWell.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @protocol MKDragFileWellProtocol 4 | - (void)droppedInWell:sender; 5 | - (BOOL)acceptsDrop:sender; 6 | @end 7 | 8 | @interface MKDragFileWell : NSImageView 9 | 10 | @property (strong, nonatomic) NSArray *filePaths; 11 | @property (assign, nonatomic) id delegate; 12 | @property (assign, nonatomic) BOOL canDrag; 13 | @property (assign, nonatomic) BOOL canDrop; 14 | @property (assign, nonatomic) NSUInteger resizeImageUntilLessThanKb; 15 | 16 | - (void)filePaths:(NSArray *)array; 17 | - (NSArray *)filePaths; 18 | 19 | - (void)setImage:(NSImage *)image; 20 | //- (NSImage *)image; 21 | 22 | // -- dragging destination 23 | 24 | - (NSDragOperation)draggingSession:(NSDraggingSession *)session 25 | sourceOperationMaskForDraggingContext:(NSDraggingContext)context; 26 | 27 | - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal; 28 | - (unsigned int)draggingEntered:(id )sender; 29 | - (BOOL)draggingUpdated:(id )sender; 30 | - (void)draggingExited:(id )sender; 31 | - (BOOL)performDragOperation:(id )sender; 32 | 33 | // delegate methods -- dragging source 34 | 35 | - (void)copy:sender; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /BitMarkets/resources/licenses/xmlrpc/LICENSE.txt: -------------------------------------------------------------------------------- 1 | # License 2 | 3 | ## The Cocoa XML-RPC Framework is distributed under the MIT License: 4 | 5 | Copyright (c) 2012 Eric Czarny 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of 8 | this software and associated documentation files (the "Software"), to deal in 9 | the Software without restriction, including without limitation the rights to 10 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | of the Software, and to permit persons to whom the Software is furnished to do 12 | so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Bid/MKBidMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBidMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MKBidMsg.h" 11 | #import "MKRootNode.h" 12 | 13 | @implementation MKBidMsg 14 | 15 | - (NSString *)nodeTitle 16 | { 17 | if (self.isInBuy) 18 | { 19 | return @"Bid Sent"; 20 | } 21 | 22 | return [NSString stringWithFormat:@"Bid received from %@", self.sellerAddress]; 23 | 24 | //return @"Bid Received"; 25 | } 26 | 27 | - (NSString *)nodeSubtitle 28 | { 29 | return self.dateString; 30 | 31 | /* 32 | if (self.isInBuy) 33 | { 34 | return self.dateString; 35 | } 36 | 37 | return [NSString stringWithFormat:@"From %@", self.sellerAddress]; 38 | */ 39 | } 40 | 41 | - (void)setupForPost:(MKPost *)mkPost 42 | { 43 | //[self.dict addEntriesFromDictionary:mkPost.propertiesDict]; 44 | 45 | self.postUuid = mkPost.postUuid; 46 | self.sellerAddress = mkPost.sellerAddress; 47 | self.buyerAddress = self.myAddress; 48 | } 49 | 50 | - (BOOL)send 51 | { 52 | self.debug = YES; 53 | return [self sendToSeller]; 54 | } 55 | 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 13E28 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | Sparkle 11 | CFBundleIdentifier 12 | org.andymatuschak.Sparkle 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Sparkle 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | 1.7.1 git 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 9516d6d 25 | DTCompiler 26 | com.apple.compilers.llvm.clang.1_0 27 | DTPlatformBuild 28 | 5B1008 29 | DTPlatformVersion 30 | GM 31 | DTSDKBuild 32 | 13C64 33 | DTSDKName 34 | macosx10.9 35 | DTXcode 36 | 0511 37 | DTXcodeBuild 38 | 5B1008 39 | 40 | 41 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Buys/Stages/Complete/MKBuyComplete.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKBuyComplete.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKBuyComplete.h" 10 | #import "MKBuy.h" 11 | 12 | @implementation MKBuyComplete 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | 18 | return self; 19 | } 20 | 21 | // node 22 | 23 | - (NSNumber *)nodeSuggestedWidth 24 | { 25 | return @300; 26 | } 27 | 28 | - (NSString *)nodeTitle 29 | { 30 | return @"Complete"; 31 | } 32 | 33 | - (MKBuy *)buy 34 | { 35 | return (MKBuy *)self.nodeParent; 36 | } 37 | 38 | - (NSString *)nodeSubtitle 39 | { 40 | /* 41 | if (self.buy.releaseEscrow.wasPaid) 42 | { 43 | return @"Complete! Payment made to seller & deposit returned"; 44 | } 45 | 46 | if (self.buy.releaseEscrow.wasRefunded) 47 | { 48 | return @"Complete! Payment refunded by seller & deposit returned"; 49 | } 50 | */ 51 | 52 | return self.buy.releaseEscrow.nodeSubtitle; 53 | } 54 | 55 | - (NSString *)nodeNote 56 | { 57 | if (self.isComplete) 58 | { 59 | return @"✓"; 60 | } 61 | 62 | return nil; 63 | } 64 | 65 | - (BOOL)isActive 66 | { 67 | return NO; 68 | } 69 | 70 | - (BOOL)isComplete 71 | { 72 | return self.buy.releaseEscrow.isComplete; 73 | } 74 | 75 | @end 76 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Complete/MKSellComplete.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSellDelivery.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/6/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSellComplete.h" 10 | #import "MKSell.h" 11 | #import "MKSellReleaseEscrow.h" 12 | 13 | @implementation MKSellComplete 14 | 15 | - (id)init 16 | { 17 | self = [super init]; 18 | return self; 19 | } 20 | 21 | - (MKSell *)sell 22 | { 23 | return (MKSell *)self.nodeParent; 24 | } 25 | 26 | - (NSString *)nodeTitle 27 | { 28 | return @"Complete"; 29 | } 30 | 31 | - (BOOL)isActive 32 | { 33 | return NO; 34 | } 35 | 36 | - (BOOL)isComplete 37 | { 38 | return self.sell.releaseEscrow.isComplete; 39 | } 40 | 41 | - (NSString *)nodeSubtitle 42 | { 43 | /* 44 | if (self.sell.releaseEscrow.wasPaid) 45 | { 46 | return @"Complete! Payment & deposit refund is in your wallet"; 47 | } 48 | 49 | if (self.sell.releaseEscrow.wasRefunded) 50 | { 51 | return @"Complete! Payment refunded to buyer & your deposit is returned"; 52 | } 53 | */ 54 | 55 | return self.sell.releaseEscrow.nodeSubtitle; 56 | } 57 | 58 | - (NSString *)nodeNote 59 | { 60 | if (self.isComplete) 61 | { 62 | return @"✓"; 63 | } 64 | 65 | return nil; 66 | } 67 | 68 | - (void)update 69 | { 70 | 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKLock.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKLock.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKEscrow.h" 10 | #import "MKPost.h" 11 | 12 | @class MKSell; 13 | @class MKBuy; 14 | @class MKBuyLockEscrowMsg; 15 | @class MKSellLockEscrowMsg; 16 | // messages 17 | 18 | #import "MKBidMsg.h" 19 | #import "MKSetupLockMsg.h" 20 | #import "MKConfirmLockEscrowMsg.h" 21 | #import "MKCancelMsg.h" 22 | #import "MKSellLockEscrowMsg.h" 23 | 24 | 25 | @interface MKLock : MKEscrow 26 | 27 | - (BOOL)isConfirmed; 28 | 29 | // messages 30 | 31 | 32 | // messages 33 | 34 | - (MKBidMsg *)bidMsg; 35 | - (MKSetupLockMsg *)setupLockMsg; 36 | - (MKBuyLockEscrowMsg *)buyLockEscrowMsg; 37 | - (MKSellLockEscrowMsg *)sellLockEscrowMsg; 38 | - (MKLockMsg *)lockEscrowMsgToConfirm; 39 | - (MKConfirmLockEscrowMsg *)confirmLockEscrowMsg; 40 | - (MKCancelMsg *)cancelMsg; 41 | - (void)postLock:(MKLockMsg *)msg; 42 | - (void)sendMsg:(MKMsg *)msg; //subclasses should override 43 | 44 | 45 | //state machine 46 | - (void)update; 47 | 48 | // lock cancel 49 | 50 | - (BOOL)canCancel; 51 | 52 | - (BOOL)isCancelling; 53 | 54 | - (BOOL)isCancelConfirmed; 55 | - (MKCancelConfirmed *)cancelConfirmedMsg; 56 | 57 | - (MKPost *)mkPost; 58 | - (NSNumber *)lockEscrowPriceInSatoshi; 59 | 60 | - (NSString *)txDescription; 61 | - (BOOL)isBuyer; 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKRelease.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKRelease.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKEscrow.h" 10 | 11 | @class MKSell; 12 | @class MKBuy; 13 | 14 | // payment 15 | 16 | #import "MKBuyPaymentMsg.h" 17 | #import "MKSellAcceptPaymentMsg.h" 18 | 19 | // refund 20 | 21 | #import "MKBuyRefundRequestMsg.h" 22 | #import "MKSellAcceptRefundRequestMsg.h" 23 | #import "MKSellRejectRefundRequestMsg.h" 24 | 25 | // confirm 26 | 27 | #import "MKConfirmRefundMsg.h" 28 | #import "MKConfirmPaymentMsg.h" 29 | 30 | 31 | 32 | @interface MKRelease : MKEscrow 33 | 34 | 35 | - (NSString *)shortStatus; 36 | 37 | // checks 38 | 39 | - (BOOL)wasPaid; 40 | - (BOOL)wasRefunded; 41 | 42 | // payment messages 43 | 44 | - (MKBuyPaymentMsg *)buyPaymentMsg; 45 | - (MKSellAcceptPaymentMsg *)sellAcceptPaymentMsg; 46 | 47 | // refund messages 48 | 49 | - (MKBuyRefundRequestMsg *)buyRequestRefundMsg; 50 | - (MKSellAcceptRefundRequestMsg *)sellAcceptRefundRequestMsg; 51 | - (MKSellRejectRefundRequestMsg *)sellRejectRefundRequestMsg; 52 | 53 | // confirm messages 54 | 55 | - (MKConfirmRefundMsg *)confirmRefundMsg; 56 | - (MKConfirmPaymentMsg *)confirmPaymentMsg; 57 | 58 | // confirm checks 59 | 60 | - (void)lookForConfirmsIfNeeded; 61 | - (void)lookForPaymentConfirmIfNeeded; 62 | - (void)lookForRefundConfirmIfNeeded; 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKUpdateMessage.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKUpdateMessage.m 3 | // Bitmarkets 4 | // 5 | // Created by Steve Dekorte on 12/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | // example update message 9 | 10 | /* 11 | 12 | { 13 | "_type" : "UpdateMsg", 14 | "version" : "0.0", 15 | "url" : "https://voluntary.net.s3.amazonaws.com/Bitmarkets.0.0.zip", 16 | "message" : "lots of fixes", 17 | "hashSha256" : "...", 18 | "commitHash" : "...", 19 | } 20 | 21 | */ 22 | 23 | #import "MKUpdateMessage.h" 24 | 25 | @implementation MKUpdateMessage 26 | 27 | - (NSString *)currentVersion 28 | { 29 | NSDictionary *info = [NSBundle bundleForClass:[self class]].infoDictionary; 30 | NSString *versionString = [info objectForKey:@"CFBundleVersion"]; 31 | return versionString; 32 | } 33 | 34 | - (NSString *)version 35 | { 36 | return [self.dict objectForKey:@"version"]; 37 | } 38 | 39 | - (NSComparisonResult)compare:(id)anObject 40 | { 41 | return [self.version versionCompare:[(MKUpdateMessage *)anObject version]]; 42 | } 43 | 44 | - (BOOL)isNewer 45 | { 46 | return [self.version versionCompare:self.currentVersion] == NSOrderedDescending; 47 | } 48 | 49 | - (BOOL)isCurrentVersion 50 | { 51 | return [self.version versionCompare:self.currentVersion] == NSOrderedSame; 52 | } 53 | 54 | - (void)deleteIfOlder 55 | { 56 | if (!self.isNewer) 57 | { 58 | [self.bmMessage delete]; 59 | } 60 | } 61 | 62 | - (void)showAlert 63 | { 64 | 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKNodeView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKNodeView.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/16/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKNodeView.h" 10 | 11 | @implementation MKNodeView 12 | 13 | - (id)initWithFrame:(NSRect)frame 14 | { 15 | self = [super initWithFrame:frame]; 16 | 17 | if (self) 18 | { 19 | self.backgroundColor = [NSColor whiteColor]; 20 | } 21 | 22 | return self; 23 | } 24 | 25 | - (void)dealloc 26 | { 27 | [NSNotificationCenter.defaultCenter removeObserver:self]; 28 | } 29 | 30 | - (void)setFrame:(NSRect)frameRect 31 | { 32 | [super setFrame:frameRect]; 33 | [self layout]; 34 | } 35 | 36 | - (void)layout 37 | { 38 | 39 | } 40 | 41 | - (void)setNode:(NavNode *)node 42 | { 43 | if (_node != node) 44 | { 45 | [NSNotificationCenter.defaultCenter removeObserver:self name:nil object:_node]; 46 | _node = node; 47 | if (_node) 48 | { 49 | [NSNotificationCenter.defaultCenter addObserver:self 50 | selector:@selector(nodeChanged:) 51 | name:nil 52 | object:_node]; 53 | [self syncFromNode]; 54 | } 55 | } 56 | } 57 | 58 | - (void)nodeChanged:(NSNotification *)aNote 59 | { 60 | [self syncFromNode]; 61 | } 62 | 63 | - (void)syncFromNode 64 | { 65 | 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /Notes/Escrow.txt: -------------------------------------------------------------------------------- 1 | 2 | Lock Escrow 3 | 4 | 1. MKBuyLockEscrow sendLockToSeller method 5 | - send buyer's utx inputs 6 | 7 | 2. MKSellLockEscrow sendLock method 8 | - add seller's utx input and signs 9 | 10 | 3. MKBuyLockEscrow postLockToBlockchain method 11 | - buyer sign tx and post 12 | 13 | 4. MKBuyLockEscrow lookForConfirm method 14 | - look for confirm in blockchain 15 | - addChild: MKConfirmLockEscrowMsg 16 | 17 | 5. MKSellLockEscrow lookForConfirm method 18 | - look for confirm in blockchain 19 | - addChild: MKConfirmLockEscrowMsg 20 | 21 | 22 | 23 | 24 | Release Escrow - buyer pays 25 | 26 | 1. MKBuyReleaseEscrow sendPayment method 27 | - send buyer's utxs inputs in MKBuyPaymentMsg 28 | 29 | 2. MKSellReleaseEscrow acceptPayment method (called when MKBuyPaymentMsg received) 30 | - add seller's utx input and signs 31 | - sends to buyer in MKSellAcceptPaymentMsg 32 | 33 | 3. MKBuyReleaseEscrow postPaymentToBlockchain 34 | - buyer sign tx and post 35 | 36 | [confirms work same as lock confirms?] 37 | 38 | 39 | 40 | 41 | Release Escrow - buyer requests refund 42 | 43 | 1. MKBuyReleaseEscrow requestRefund method 44 | - send buyer's utxs inputs in MKBuyRequestRefundMsg 45 | 46 | 2. MKSellReleaseEscrow acceptRefundRequest method (call via user input) 47 | - add seller's utx input and signs 48 | - sends to buyer in MKSellAcceptRefundMsg 49 | 50 | 3. MKBuyReleaseEscrow postPaymentToBlockchain 51 | - buyer sign tx and post 52 | 53 | [confirms work same as lock confirms?] 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcastItem.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCASTITEM_H 10 | #define SUAPPCASTITEM_H 11 | 12 | @interface SUAppcastItem : NSObject 13 | @property (copy, readonly) NSString *title; 14 | @property (copy, readonly) NSDate *date; 15 | @property (copy, readonly) NSString *itemDescription; 16 | @property (strong, readonly) NSURL *releaseNotesURL; 17 | @property (copy, readonly) NSString *DSASignature; 18 | @property (copy, readonly) NSString *minimumSystemVersion; 19 | @property (copy, readonly) NSString *maximumSystemVersion; 20 | @property (strong, readonly) NSURL *fileURL; 21 | @property (copy, readonly) NSString *versionString; 22 | @property (copy, readonly) NSString *displayVersionString; 23 | @property (copy, readonly) NSDictionary *deltaUpdates; 24 | @property (strong, readonly) NSURL *infoURL; 25 | 26 | // Initializes with data from a dictionary provided by the RSS class. 27 | - (instancetype)initWithDictionary:(NSDictionary *)dict; 28 | - (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error; 29 | 30 | @property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate; 31 | @property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate; 32 | 33 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. 34 | @property (readonly, copy) NSDictionary *propertiesDictionary; 35 | 36 | - (NSURL *)infoURL; 37 | 38 | @end 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /BitMarkets/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "icon_16x16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "icon_16x16@2x.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "icon_32x32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "icon_32x32@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "icon_128x128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "icon_128x128@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "icon_256x256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "icon_256x256@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "icon_512x512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "icon_515x512@2x.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPanelManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKPanelManager.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/17/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKPanelManager.h" 10 | #import "MKPanelView.h" 11 | 12 | @implementation MKPanelManager 13 | 14 | static MKPanelManager *sharedPanelManager = nil; 15 | 16 | + (MKPanelManager *)sharedPanelManager 17 | { 18 | if (!sharedPanelManager) 19 | { 20 | sharedPanelManager = [[MKPanelManager alloc] init]; 21 | } 22 | 23 | return sharedPanelManager; 24 | } 25 | 26 | - (void)setPanelReceiver:(NSView *)panelReceiver 27 | { 28 | _panelReceiver = panelReceiver; 29 | } 30 | 31 | - (MKPanelView *)receiverPanelView 32 | { 33 | if (_panelReceiver) 34 | { 35 | for (NSView *subview in _panelReceiver.subviews) 36 | { 37 | if ([subview isKindOfClass:MKPanelView.class]) 38 | { 39 | return (MKPanelView *)subview; 40 | } 41 | } 42 | } 43 | 44 | return nil; 45 | } 46 | 47 | - (MKPanelView *)openNewPanel 48 | { 49 | if (_panelReceiver && !self.receiverPanelView) 50 | { 51 | MKPanelView *panelView = [[MKPanelView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 52 | [_panelReceiver addSubview:panelView]; 53 | [panelView layout]; 54 | return panelView; 55 | } 56 | else 57 | { 58 | NSString *error = @"no panel receiver"; 59 | NSLog(@"%@ %@", self.className, error); 60 | [NSException raise:error format:@""]; 61 | } 62 | 63 | return nil; 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /Vendor/Sparkle/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 13E28 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | Autoupdate 11 | CFBundleIconFile 12 | AppIcon 13 | CFBundleIdentifier 14 | org.sparkle-project.Sparkle.Autoupdate 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.7.1 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.7.1 25 | DTCompiler 26 | com.apple.compilers.llvm.clang.1_0 27 | DTPlatformBuild 28 | 5B1008 29 | DTPlatformVersion 30 | GM 31 | DTSDKBuild 32 | 13C64 33 | DTSDKName 34 | macosx10.9 35 | DTXcode 36 | 0511 37 | DTXcodeBuild 38 | 5B1008 39 | LSBackgroundOnly 40 | 1 41 | LSMinimumSystemVersion 42 | 10.7 43 | LSUIElement 44 | 1 45 | NSMainNibFile 46 | MainMenu 47 | NSPrincipalClass 48 | NSApplication 49 | 50 | 51 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Groups/MKRegion.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKRegion.m 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/24/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKRegion.h" 10 | #import "MKCategory.h" 11 | 12 | @implementation MKRegion 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | self.nodeSuggestedWidth = @150; 18 | self.nodeShouldSortChildren = @YES; 19 | return self; 20 | } 21 | 22 | - (JSONDB *)db 23 | { 24 | JSONDB *db = [super db]; 25 | db.name = @"regions.json"; 26 | db.location = JSONDB_IN_APP_WRAPPER; 27 | return db; 28 | } 29 | 30 | - (void)setDict:(NSDictionary *)dict 31 | { 32 | [super setDict:dict]; 33 | 34 | if (self.children.count == 0) 35 | { 36 | [self setChildren:[MKCategory rootInstance].children]; 37 | } 38 | } 39 | 40 | // search 41 | 42 | - (BOOL)canSearch 43 | { 44 | NavNode *firstChild = [self.children firstObject]; 45 | 46 | if (firstChild && [firstChild isKindOfClass:self.class]) 47 | { 48 | return YES; 49 | } 50 | 51 | return NO; 52 | } 53 | 54 | - (BOOL)nodeMatchesSearch:(NSString *)aString 55 | { 56 | for (NSString *word in [self.nodeTitle componentsSeparatedByString:@" "]) 57 | { 58 | if ([word hasPrefix:aString]) 59 | { 60 | return YES; 61 | } 62 | } 63 | 64 | return NO; 65 | } 66 | 67 | /* 68 | - (BOOL)nodeMatchesSearch:(NSString *)aString 69 | { 70 | for (id child in self.children) 71 | { 72 | if ([child nodeMatchesSearch:aString]) 73 | { 74 | return YES; 75 | } 76 | } 77 | 78 | return NO; 79 | } 80 | */ 81 | 82 | @end 83 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPasswordView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKPasswordView.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 7/20/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKPasswordView.h" 10 | 11 | @implementation MKPasswordView 12 | 13 | - (id)initWithFrame:(NSRect)frame 14 | { 15 | self = [super initWithFrame:frame]; 16 | 17 | if (self) 18 | { 19 | _info = [[NavTextView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 20 | [_info setThemePath:@"password/info"]; 21 | [self addSubview:_info]; 22 | 23 | _password = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 24 | [_password setThemePath:@"password/password"]; 25 | [self addSubview:_password]; 26 | 27 | _passwordConfirm = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 28 | [_passwordConfirm setThemePath:@"password/password"]; 29 | [self addSubview:_passwordConfirm]; 30 | } 31 | 32 | return self; 33 | } 34 | 35 | - (BOOL)hasPassword 36 | { 37 | return NO; 38 | } 39 | 40 | - (void)setup 41 | { 42 | [_passwordConfirm setHidden:self.hasPassword]; 43 | 44 | if (!self.hasPassword) 45 | { 46 | [_info setString:@"Please choose a password"]; 47 | [_passwordConfirm setHidden:NO]; 48 | [self.window makeFirstResponder:_password]; 49 | } 50 | else 51 | { 52 | [_passwordConfirm setHidden:YES]; 53 | } 54 | } 55 | 56 | - (void)layout 57 | { 58 | [_password centerXInSuperview]; 59 | [_password centerYInSuperview]; 60 | 61 | [_info centerXInSuperview]; 62 | [_info placeYAbove:_password margin:20]; 63 | 64 | [_passwordConfirm placeYBelow:_password margin:20]; 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPostMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKPostMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKPostMsg.h" 12 | #import "MKRootNode.h" 13 | 14 | @implementation MKPostMsg 15 | 16 | - (id)init 17 | { 18 | self = [super init]; 19 | 20 | return self; 21 | } 22 | 23 | /* 24 | - (NSString *)nodeNote 25 | { 26 | return self.bmStatus; 27 | } 28 | */ 29 | 30 | - (NSUInteger)hash 31 | { 32 | return self.postUuid.hash; 33 | } 34 | 35 | - (BOOL)isEqual:(MKPostMsg *)object 36 | { 37 | if (![object isKindOfClass:MKPostMsg.class]) 38 | { 39 | return NO; 40 | } 41 | 42 | return [self.postUuid isEqualToString:object.postUuid]; 43 | } 44 | 45 | - (void)sendPost:(MKPost *)mkPost 46 | { 47 | NSMutableDictionary *payload = [NSMutableDictionary dictionaryWithDictionary:mkPost.propertiesDict]; 48 | [payload removeKeysNotInArray:mkPost.postMessagePropertyNames]; 49 | 50 | self.sellerAddress = self.myAddress; 51 | self.buyerAddress = nil; 52 | self.postUuid = mkPost.postUuid; 53 | 54 | [self setPayload:payload]; 55 | [self send]; 56 | } 57 | 58 | - (BOOL)isValid 59 | { 60 | BOOL validUuid = self.hasValidPostUuid; 61 | BOOL validSeller = self.hasValidSellerAddress; 62 | return validUuid && validSeller; 63 | } 64 | 65 | - (BOOL)send 66 | { 67 | return [self sendFromSellerToChannel]; 68 | } 69 | 70 | - (MKPost *)mkPost 71 | { 72 | MKPost *mkPost = [[MKPost alloc] init]; 73 | [mkPost setPropertiesDict:self.payload]; 74 | mkPost.bmMessage = self.bmMessage; 75 | return mkPost; 76 | } 77 | 78 | @end 79 | -------------------------------------------------------------------------------- /BitMarkets/Bitmarkets.temp_caseinsensitive_rename-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ATSApplicationFontsPath 6 | fonts/Open_Sans 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | net.voluntary.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 0.9.2 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 0.9.2 27 | LSApplicationCategoryType 28 | public.app-category.business 29 | LSMinimumSystemVersion 30 | ${MACOSX_DEPLOYMENT_TARGET} 31 | NSAppTransportSecurity 32 | 33 | NSAllowsArbitraryLoads 34 | 35 | 36 | NSHumanReadableCopyright 37 | Copyright © 2014 voluntary.net. All rights reserved. 38 | NSMainNibFile 39 | MainMenu 40 | NSPrincipalClass 41 | NSApplication 42 | SUAllowsAutomaticUpdates 43 | 44 | SUEnableAutomaticChecks 45 | 46 | SUFeedURL 47 | http://voluntary.net/bitmarkets/sparkle/feed.rss 48 | SUScheduledCheckInterval 49 | 86400 50 | SUShowReleaseNotes 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKPostView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BMAddressedView.h 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 2/21/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MKSell.h" 12 | #import "MKExchangeRate.h" 13 | #import "MKAttachmentView.h" 14 | 15 | @interface MKPostView : NSView 16 | 17 | @property (assign, nonatomic) NavView *navView; 18 | @property (assign, nonatomic) NavNode *node; 19 | 20 | // scrolling 21 | 22 | @property (strong, nonatomic) NavColoredView *documentView; 23 | @property (strong, nonatomic) NSScrollView *scrollView; 24 | 25 | // content 26 | 27 | @property (strong, nonatomic) NavAdvTextView *title; 28 | //@property (strong, nonatomic) IBOutlet NSTextView *quantity; 29 | @property (strong, nonatomic) NavAdvTextView *price; 30 | @property (strong, nonatomic) NavAdvTextView *errorText; 31 | @property (strong, nonatomic) NavRoundButtonView *postOrBuyButton; 32 | 33 | @property (strong, nonatomic) NavColoredView *separator; 34 | 35 | @property (strong, nonatomic) NavAdvTextView *postDescription; 36 | 37 | @property (strong, nonatomic) NSImageView *regionIcon; 38 | @property (strong, nonatomic) NSTextView *region; 39 | 40 | @property (strong, nonatomic) NSImageView *categoryIcon; 41 | @property (strong, nonatomic) NSTextView *category; 42 | 43 | @property (strong, nonatomic) NSImageView *fromAddressIcon; 44 | @property (strong, nonatomic) NSTextView *fromAddress; 45 | 46 | @property (strong, nonatomic) MKAttachmentView *attachmentView; 47 | 48 | @property (assign, nonatomic) BOOL isUpdating; 49 | @property (assign, nonatomic) BOOL editable; 50 | 51 | @property (strong, nonatomic) MKExchangeRate * exchangeRate; 52 | 53 | @property (assign, nonatomic) BOOL needsLocalLayout; 54 | 55 | 56 | + (CGFloat)leftMargin; 57 | 58 | - (MKSell *)sell; 59 | 60 | - (void)selectFirstResponder; 61 | 62 | - (void)setEditable:(BOOL)isEditable; 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKMsg.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMsg.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/2/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKGroup.h" 10 | #import 11 | 12 | // message names 13 | 14 | @interface MKMsg : MKGroup 15 | 16 | @property (strong, nonatomic) NSString *postUuid; 17 | @property (strong, nonatomic) NSString *sellerAddress; 18 | @property (strong, nonatomic) NSString *buyerAddress; 19 | @property (strong, nonatomic) NSNumber *dateNumber; 20 | 21 | @property (strong, nonatomic) NSDictionary *payload; 22 | 23 | @property (strong, nonatomic) BMMessage *bmMessage; 24 | @property (strong, nonatomic) NSString *ackData; 25 | @property (assign, nonatomic) BOOL updatingStatus; 26 | @property (assign, nonatomic) BOOL debug; 27 | 28 | + (MKMsg *)withBMMessage:(BMMessage *)bmMessage; 29 | 30 | // checking sender 31 | 32 | - (BOOL)bmSenderIsBuyer; // only works when first received 33 | - (BOOL)bmSenderIsSeller; // only works when first received 34 | 35 | // --- valid --- 36 | 37 | - (BOOL)hasValidPostUuid; 38 | - (BOOL)hasValidSellerAddress; 39 | - (BOOL)isValid; 40 | 41 | - (NSString *)myAddress; 42 | 43 | - (NSString *)classNameSansPrefix; 44 | 45 | - (NSString *)subject; 46 | 47 | // date 48 | 49 | - (void)addDate; 50 | - (void)setDate:(NSDate *)aDate; 51 | - (NSDate *)date; 52 | 53 | - (NSString *)dateString; 54 | 55 | //status 56 | 57 | - (BOOL)wasSent; 58 | 59 | // --- setter / getters --- 60 | 61 | - (void)setPostUuid:(NSString *)postUuid; 62 | - (NSString *)postUuid; 63 | 64 | - (void)setSellerAddress:(NSString *)sellerAddress; 65 | - (NSString *)sellerAddress; 66 | 67 | - (void)setBuyerAddress:(NSString *)buyerAddress; 68 | - (NSString *)buyerAddress; 69 | 70 | // copy 71 | 72 | - (void)copyThreadFrom:(MKMsg *)msg; 73 | 74 | // send 75 | 76 | - (BOOL)send; 77 | 78 | - (BOOL)sendFromSellerToChannel; 79 | - (BOOL)sendToBuyer; 80 | - (BOOL)sendToSeller; 81 | 82 | - (BOOL)isInBuy; 83 | - (BOOL)isInSell; 84 | 85 | - (BMSentMessage *)sentMessage; 86 | 87 | // debugging 88 | 89 | - (id)descriptionJSONObject; 90 | 91 | 92 | @end 93 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/MKTransactions.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKTransactions.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/12/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTransactions.h" 10 | 11 | @implementation MKTransactions 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | self.nodeShouldUseCountForNodeNote = @YES; 17 | self.nodeSuggestedWidth = @350; 18 | return self; 19 | } 20 | 21 | - (NSString *)nodeNote 22 | { 23 | if (self.children.count > 0) 24 | { 25 | return [NSString stringWithFormat:@"%i", (int)self.children.count]; 26 | } 27 | 28 | return nil; 29 | } 30 | 31 | - (JSONDB *)db 32 | { 33 | JSONDB *db = [super db]; 34 | db.name = NSStringFromClass(self.class); 35 | db.location = JSONDB_IN_APP_SUPPORT_FOLDER; 36 | return db; 37 | } 38 | 39 | - (void)write 40 | { 41 | [super write]; 42 | } 43 | 44 | - (void)read 45 | { 46 | [super read]; 47 | [self update]; 48 | [self postParentChainChanged]; 49 | } 50 | 51 | - (void)removeChild:(id)aChild 52 | { 53 | [super removeChild:aChild]; 54 | [self write]; 55 | } 56 | 57 | - (BOOL)canSearch 58 | { 59 | return self.children.count > 0; 60 | } 61 | 62 | /* 63 | - (NSString *)verifyActionMessage:(NSString *)aString 64 | { 65 | if ([aString isEqualToString:@"delete"]) 66 | { 67 | return @"Are you sure you want to delete this? If the sale is in progress, you may loose your escrow."; 68 | } 69 | 70 | return nil; 71 | } 72 | */ 73 | 74 | - (void)update 75 | { 76 | for (id child in self.children) 77 | { 78 | if ([child respondsToSelector:@selector(update)]) 79 | { 80 | [child update]; 81 | } 82 | } 83 | 84 | [self writeIfNeeded]; 85 | } 86 | 87 | - (void)writeIfNeeded 88 | { 89 | if ([self isDirtyRecursive]) 90 | { 91 | [self write]; 92 | [self setCleanRecursive]; 93 | } 94 | } 95 | 96 | - (void)notifyChainDirty 97 | { 98 | NSLog(@"%@ notifyChainDirty", NSStringFromClass(self.class)); 99 | //[self write]; 100 | } 101 | 102 | 103 | @end 104 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Sells/Stages/Post/MKPost.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKPost.h 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 5/1/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStage.h" 10 | #import "MKPostMsg.h" 11 | #import "MKBidMsg.h" 12 | #import 13 | 14 | //@class MKPostMsg; 15 | //@class MKBidMsg; 16 | 17 | @interface MKPost : MKStage 18 | 19 | @property (strong, nonatomic) NSDate *date; 20 | 21 | // msg properties 22 | 23 | @property (strong, nonatomic) NSString *postUuid; 24 | 25 | @property (strong, nonatomic) NSString *title; 26 | @property (strong, nonatomic) NSNumber *priceInSatoshi; 27 | @property (strong, nonatomic) NSString *postDescription; 28 | 29 | @property (strong, nonatomic) NSArray *regionPath; 30 | @property (strong, nonatomic) NSArray *categoryPath; 31 | @property (strong, nonatomic) NSString *sellerAddress; 32 | @property (strong, nonatomic) NSArray *attachments; 33 | @property (strong, nonatomic) BMMessage *bmMessage; // used only for browsable listing, so we can delete msg when receiving a close request 34 | @property (strong, nonatomic) NSString *composeError; 35 | 36 | @property (strong, nonatomic) NSNumber *firstPostDateNumber; 37 | @property (strong, nonatomic) NSNumber *lastPostDateNumber; 38 | 39 | 40 | // --- repost & expire --- 41 | 42 | + (NSNumber *)repostPeriodInSeconds; 43 | + (NSNumber *)expirePeriodInSeconds; 44 | - (BOOL)needsExpire; 45 | - (BOOL)needsRepost; 46 | - (void)repostIfNeeded; 47 | - (void)expireIfNeeded; 48 | 49 | // ------------------------ 50 | 51 | - (NSArray *)postMessagePropertyNames; 52 | 53 | - (BOOL)isEditable; 54 | - (BOOL)canBuy; 55 | 56 | - (void)setPriceInBtc:(NSNumber *)btcNumber; 57 | - (NSNumber *)priceInBtc; 58 | - (NSNumber *)minimumPriceInBtc; 59 | - (NSNumber *)minimumTestPriceInBtc; 60 | - (BOOL)hasPriceWithinMinMaxRange; 61 | 62 | - (BOOL)placeInMarketsPath; 63 | - (BOOL)isAlreadyInMarketsPath; 64 | 65 | - (void)copy:(MKPost *)aPost; 66 | - (NSString *)titleOrDefault; 67 | 68 | // messages 69 | 70 | - (MKPostMsg *)postMsg; 71 | 72 | - (MKPostMsg *)sendPostMsg; 73 | - (MKBidMsg *)sendBidMsg; 74 | 75 | - (BOOL)isComplete; 76 | 77 | // equality 78 | 79 | - (NSUInteger)hash; 80 | - (BOOL)isEqual:(id)object; 81 | 82 | - (NSNumber *)priceInSatoshi; 83 | 84 | - (void)close; 85 | 86 | 87 | @end 88 | -------------------------------------------------------------------------------- /BitMarkets/resources/licenses/zipkit/COPYING.txt: -------------------------------------------------------------------------------- 1 | ZipKit is covered under the following BSD-style license: 2 | ================================================================ 3 | Copyright (c) 2009, Karl Moskowski 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are 8 | met: 9 | 10 | * Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | * Redistributions in binary form must reproduce the above 13 | copyright notice, this list of conditions and the following disclaimer 14 | in the documentation and/or other materials provided with the 15 | distribution. 16 | * Neither the name of Karl Moskowski nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | ================================================================ 32 | 33 | Acknowledgement using this text is appreciated: 34 | ZipKit developed by Karl Moskowski. 35 | https://github.com/kolpanic/ZipKit 36 | 37 | ------------------------------------------------------------------------------------------------ 38 | 39 | The GMAppleDouble class used in this project is part of the MacFUSE project by Google Inc. 40 | 41 | 42 | See the file COPYING.TXT in the MacFUSE folder for license details. 43 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKStepsView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKStepsView.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 6/10/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKStepsView.h" 10 | #import "MKStepView.h" 11 | #import "MKTransaction.h" 12 | 13 | @implementation MKStepsView 14 | 15 | - (id)initWithFrame:(NSRect)frame 16 | { 17 | self = [super initWithFrame:frame]; 18 | 19 | if (self) 20 | { 21 | self.backgroundColor = [NSColor whiteColor]; 22 | } 23 | 24 | return self; 25 | } 26 | 27 | - (MKTransaction *)transaction 28 | { 29 | return (MKTransaction *)self.node; 30 | } 31 | 32 | - (void)setNode:(NavNode *)node 33 | { 34 | [super setNode:node]; 35 | [self setupViews]; 36 | } 37 | 38 | - (void)syncFromNode 39 | { 40 | for (MKStepView *stepView in self.subviews) 41 | { 42 | [stepView syncFromNode]; 43 | } 44 | 45 | // are the stages looking at the nextStage to see how to render? 46 | // if so, we might need to do a 2nd eval 47 | 48 | /* 49 | for (MKStepView *stepView in self.subviews) 50 | { 51 | [stepView syncFromNode]; 52 | } 53 | */ 54 | } 55 | 56 | - (void)setupViews 57 | { 58 | [self removeAllSubviews]; 59 | MKStepView *stepView = nil; 60 | 61 | for (NavNode *subnode in self.transaction.visibleStages) 62 | { 63 | stepView = [[MKStepView alloc] initWithFrame:NSMakeRect(0, 0, 100, self.height)]; 64 | [stepView setNode:subnode]; 65 | [self addSubview:stepView]; 66 | stepView.hasArrow = YES; 67 | } 68 | 69 | if (stepView) 70 | { 71 | stepView.hasArrow = NO; 72 | } 73 | 74 | [self layout]; 75 | } 76 | 77 | - (void)layout 78 | { 79 | NSInteger count = self.transaction.visibleStages.count; 80 | 81 | for (MKStepView *stepView in self.subviews) 82 | { 83 | [stepView setWidth:self.width/count]; 84 | } 85 | 86 | [self stackSubviewsLeftToRightWithMargin:0.0]; 87 | 88 | NSView *lastView = self.subviews.lastObject; 89 | 90 | if (lastView) 91 | { 92 | [lastView setWidth:self.width - lastView.x]; 93 | } 94 | 95 | } 96 | 97 | /* 98 | - (void)display 99 | { 100 | return; 101 | } 102 | */ 103 | 104 | - (void)drawRect:(NSRect)dirtyRect 105 | { 106 | [super drawRect:dirtyRect]; 107 | } 108 | 109 | @end 110 | -------------------------------------------------------------------------------- /BitMarkets/resources/categories copy.json: -------------------------------------------------------------------------------- 1 | { 2 | "_type": "Group", 3 | "name": "For Sale", 4 | 5 | "children": [ 6 | { "_type": "Category", "name" : "Antiques"}, 7 | { "_type": "Category", "name" : "Appliances" }, 8 | { "_type": "Category", "name" : "Arts and Crafts" }, 9 | { "_type": "Category", "name" : "Auto Parts" }, 10 | { "_type": "Category", "name" : "Bags" }, 11 | { "_type": "Category", "name" : "Beauty and Health" }, 12 | { "_type": "Category", "name" : "Bikes" }, 13 | { "_type": "Category", "name" : "Boats" }, 14 | { "_type": "Category", "name" : "Books" }, 15 | { "_type": "Category", "name" : "Business" }, 16 | { "_type": "Category", "name" : "CDs/DVD/VHS" }, 17 | { "_type": "Category", "name" : "Cell Phones" }, 18 | { "_type": "Category", "name" : "Men's Clothing", }, 19 | { "_type": "Category", "name" : "Women's Clothing", }, 20 | { "_type": "Category", "name" : "Collectibles" }, 21 | { "_type": "Category", "name" : "Computer" }, 22 | { "_type": "Category", "name" : "Electronics" }, 23 | { "_type": "Category", "name" : "Farm and Garden" }, 24 | { "_type": "Category", "name" : "Furniture" }, 25 | { "_type": "Category", "name" : "General" }, 26 | { "_type": "Category", "name" : "Heavy Equipment" }, 27 | { "_type": "Category", "name" : "Household" }, 28 | { "_type": "Category", "name" : "Jewelry" }, 29 | { "_type": "Category", "name" : "Materials" }, 30 | { "_type": "Category", "name" : "Motorcycles" }, 31 | { "_type": "Category", "name" : "Musical Instruments" }, 32 | { "_type": "Category", "name" : "RVs & Camping" }, 33 | { "_type": "Category", "name" : "Photo and Video" }, 34 | { "_type": "Category", "name" : "Shoes" }, 35 | { "_type": "Category", "name" : "Sporting" }, 36 | { "_type": "Category", "name" : "Tickets" }, 37 | { "_type": "Category", "name" : "Tools" }, 38 | { "_type": "Category", "name" : "Toys and Games" }, 39 | { "_type": "Category", "name" : "Vehicles" }, 40 | { "_type": "Category", "name" : "Video Gaming" } 41 | ] 42 | } -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/MKTextFieldCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKTextFieldCell.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 7/1/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKTextFieldCell.h" 10 | 11 | @implementation MKTextFieldCell 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | 17 | if (self) 18 | { 19 | self.marginLeft = 10.0; 20 | self.marginRight = 10.0; 21 | self.lineColor = [NSColor colorWithCalibratedWhite:.8 alpha:1.0]; 22 | } 23 | 24 | return self; 25 | } 26 | 27 | - (NSRect)drawingRectForBounds:(NSRect)rect 28 | { 29 | return [self titleRectForBounds:rect]; 30 | } 31 | 32 | - (NSRect)titleRectForBounds:(NSRect)rect 33 | { 34 | NSRect rectInset = NSMakeRect( 35 | rect.origin.x + self.marginLeft, 36 | rect.origin.y + _marginBottom, 37 | rect.size.width - self.marginLeft - self.marginRight, 38 | rect.size.height - self.marginBottom - self.marginTop); 39 | 40 | // vertically center 41 | NSSize titleSize = [[self attributedStringValue] size]; 42 | rectInset.origin.y += (rectInset.size.height - titleSize.height)/2.0 - 0.5; 43 | 44 | return [super drawingRectForBounds:rectInset]; 45 | } 46 | 47 | 48 | - (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView 49 | { 50 | [super drawInteriorWithFrame:cellFrame inView:controlView]; 51 | 52 | if (self.bottomLineWidth) 53 | { 54 | CGFloat x = cellFrame.origin.x; 55 | CGFloat y = cellFrame.origin.y; 56 | CGFloat h = cellFrame.size.height; 57 | CGFloat w = cellFrame.size.width; 58 | 59 | [self.lineColor set]; 60 | 61 | [NSBezierPath setDefaultLineCapStyle:NSButtLineCapStyle]; 62 | 63 | NSBezierPath *aPath = [NSBezierPath bezierPath]; 64 | [aPath setLineWidth:self.bottomLineWidth]; 65 | [aPath moveToPoint:NSMakePoint(x, y+h)]; 66 | [aPath lineToPoint:NSMakePoint(x+w, y+h)]; 67 | [aPath setLineCapStyle:NSSquareLineCapStyle]; 68 | [aPath stroke]; 69 | } 70 | } 71 | 72 | - (void)highlight:(BOOL)flag withFrame:(NSRect)cellFrame inView:(NSView *)controlView 73 | { 74 | /* 75 | [super drawRect:dirtyRect]; 76 | [[NSColor whiteColor] set]; 77 | NSRectFill(dirtyRect); 78 | 79 | [self drawInteriorWithFrame:cellFrame inView:controlView]; 80 | */ 81 | } 82 | 83 | 84 | 85 | 86 | @end 87 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Helpers/MKCurrency.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKCurrency.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 8/11/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKCurrency.h" 10 | #import "MKExchangeRate.h" 11 | #import 12 | #import 13 | 14 | @implementation MKCurrency 15 | 16 | /* 17 | - (NSNumberFormatter *)priceFormatter 18 | { 19 | NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 20 | //[formatter setLocalizesFormat:NO]; 21 | [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 22 | [formatter setPartialStringValidationEnabled:YES]; 23 | [formatter setMinimum:0]; 24 | [formatter setMaximumFractionDigits:6]; 25 | [formatter setMaximumIntegerDigits:3]; 26 | return formatter; 27 | } 28 | */ 29 | 30 | - (NSString *)formattedPriceForSymbol:(NSString *)aSymbol 31 | { 32 | NSNumber *rateForSymbol = @1.0; 33 | NSInteger sigDigits = 1; 34 | 35 | if ([aSymbol isEqualToString:@"BTC"] || [aSymbol isEqualToString:@"XBT"]) 36 | { 37 | rateForSymbol = @1.0; 38 | sigDigits = 4; 39 | } 40 | else 41 | { 42 | MKExchangeRate *rate = [MKExchangeRate shared]; 43 | rateForSymbol = [rate btcPerSymbol:aSymbol]; 44 | } 45 | 46 | if (rateForSymbol == nil) 47 | { 48 | return nil; 49 | } 50 | 51 | NSNumber *priceForSymbol = @(self.btcAmount.floatValue * rateForSymbol.floatValue); 52 | NSString *formattedPrice = [priceForSymbol asFormattedStringWithFractionalDigits:sigDigits]; 53 | return formattedPrice; 54 | } 55 | 56 | - (NSArray *)defaultSymbols 57 | { 58 | return @[@"BTC", @"USD", @"EUR"]; 59 | } 60 | 61 | - (NSString *)formattedPriceSetString 62 | { 63 | NSString *outputString = @""; 64 | NSString *separator = @" "; 65 | 66 | for (NSString *symbol in self.defaultSymbols) 67 | { 68 | NSString *price = [self formattedPriceForSymbol:symbol]; 69 | 70 | if (price) 71 | { 72 | if (outputString.length) 73 | { 74 | outputString = [outputString stringByAppendingString:separator]; 75 | } 76 | 77 | outputString = [outputString stringByAppendingString:price]; 78 | //outputString = [outputString stringByAppendingString:@" "]; 79 | outputString = [outputString stringByAppendingString:symbol]; 80 | } 81 | } 82 | 83 | // /NSLog(@"outputString '%@'", outputString); 84 | return outputString; 85 | } 86 | 87 | @end 88 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Base/MKMarkets.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKMarkets.m 3 | // Bitmessage 4 | // 5 | // Created by Steve Dekorte on 3/13/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKMarkets.h" 10 | #import "MKExchangeRate.h" 11 | #import 12 | #import 13 | 14 | @implementation MKMarkets 15 | 16 | - (id)init 17 | { 18 | self = [super init]; 19 | self.nodeTitle = @"BitMarkets"; 20 | self.nodeSuggestedWidth = @150; 21 | 22 | self.nodeShouldSortChildren = @NO; 23 | 24 | _rootRegion = (MKRegion *)[MKRegion rootInstance]; 25 | 26 | [self addChild:self.rootRegion]; 27 | 28 | if (NO) 29 | { 30 | [_rootRegion setShouldInlineChildren:YES]; 31 | _rootRegion.nodeSuggestedWidth = @250; 32 | } 33 | 34 | self.mkChannel = [[MKMarketChannel alloc] init]; 35 | [self addChild:self.mkChannel]; 36 | 37 | self.mkDirectMessages = [[MKDirectMessages alloc] init]; 38 | //[self addChild:self.mkDirectMessages]; 39 | 40 | //self.mkUpdatesSubscription = [[MKUpdatesSubscription alloc] init]; 41 | 42 | self.buys = [[MKBuys alloc] init]; 43 | //[_buys read]; 44 | [self addChild:_buys]; 45 | 46 | self.sells = [[MKSells alloc] init]; 47 | //[_sells read]; 48 | [self addChild:_sells]; 49 | 50 | [self.mkChannel performSelector:@selector(fetch) withObject:nil afterDelay:0.0]; 51 | [self.rootRegion updateCounts]; 52 | self.rootRegion.nodeDoesRememberChildPath = @YES; 53 | 54 | //[MKExchangeRate shared]; 55 | 56 | [self setRefreshInterval:10]; 57 | return self; 58 | } 59 | 60 | - (void)read 61 | { 62 | [_buys read]; 63 | [_sells read]; 64 | } 65 | 66 | - (void)write 67 | { 68 | [_buys write]; 69 | [_sells write]; 70 | } 71 | 72 | - (BOOL)handleMsg:(MKMsg *)msg 73 | { 74 | if ([self.sells handleMsg:msg]) 75 | { 76 | return YES; 77 | } 78 | 79 | if ([self.buys handleMsg:msg]) 80 | { 81 | return YES; 82 | } 83 | 84 | return NO; 85 | } 86 | 87 | - (void)refresh 88 | { 89 | if (BNErrorReport.sharedBNErrorReport.isOpen) 90 | { 91 | return; 92 | } 93 | 94 | @try 95 | { 96 | [self.sells update]; 97 | [self.buys update]; 98 | [self.mkChannel fetch]; 99 | 100 | //[NSException raise:@"test error report" format:@""]; 101 | } 102 | @catch (NSException *exception) 103 | { 104 | [BNErrorReport.sharedBNErrorReport reportException:exception]; 105 | } 106 | } 107 | 108 | - (void)delete 109 | { 110 | return; 111 | } 112 | 113 | @end 114 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Views/BNKeyView.m: -------------------------------------------------------------------------------- 1 | // 2 | // BNKeyView.m 3 | // BitMarkets 4 | // 5 | // Created by Steve Dekorte on 4/29/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "BNKeyView.h" 12 | 13 | @implementation BNKeyView 14 | 15 | - (id)initWithFrame:(NSRect)frame 16 | { 17 | self = [super initWithFrame:frame]; 18 | 19 | if (self) 20 | { 21 | [self setAutoresizesSubviews:YES]; 22 | [self setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable]; 23 | 24 | self.qrWidth = 512; 25 | self.qrCodeImageView = [[NSImageView alloc] initWithFrame:NSMakeRect(0, 0, _qrWidth, _qrWidth)]; 26 | [self addSubview:self.qrCodeImageView]; 27 | 28 | self.qrCodeTextView = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, _qrWidth, 20)]; 29 | [self addSubview:self.qrCodeTextView]; 30 | 31 | [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(syncToNode) name:nil object:self.node]; 32 | } 33 | 34 | return self; 35 | } 36 | 37 | - (void)dealloc 38 | { 39 | [NSNotificationCenter.defaultCenter removeObserver:self]; 40 | } 41 | 42 | - (void)syncToNode 43 | { 44 | NSLog(@"_node.address = %@", _node.address); 45 | 46 | self.qrCodeImageView.image = [QRCodeGenerator qrImageForString:_node.address imageSize:_qrWidth]; 47 | self.qrCodeTextView.string = _node.address; 48 | [_qrCodeTextView setThemePath:@"qr/address"]; 49 | [_qrCodeTextView setEditable:NO]; 50 | [_qrCodeTextView setNeedsDisplay:YES]; 51 | } 52 | 53 | - (void)drawRect:(NSRect)dirtyRect 54 | { 55 | [super drawRect:dirtyRect]; 56 | [[NSColor whiteColor] set]; 57 | NSRectFill(dirtyRect); 58 | } 59 | 60 | - (void)setNode:(BNKey *)node 61 | { 62 | if (_node != node) 63 | { 64 | [NSNotificationCenter.defaultCenter removeObserver:self name:nil object:_node]; 65 | _node = node; 66 | [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(syncToNode) name:nil object:_node]; 67 | [self syncToNode]; 68 | } 69 | 70 | [self layout]; 71 | } 72 | 73 | - (void)setFrame:(NSRect)frameRect 74 | { 75 | [super setFrame:frameRect]; 76 | [self layout]; 77 | } 78 | 79 | - (void)layout 80 | { 81 | CGFloat minx = self.superview.width/2; 82 | CGFloat miny = self.superview.height/2; 83 | CGFloat min = minx < miny ? minx : miny; 84 | 85 | [self.qrCodeImageView setHeight:min]; 86 | [self.qrCodeImageView setWidth:min]; 87 | 88 | [self.qrCodeImageView centerXInSuperview]; 89 | [self.qrCodeImageView centerYInSuperview]; 90 | [self.qrCodeTextView placeYBelow:self.qrCodeImageView margin:20]; 91 | [self.qrCodeTextView centerXInSuperview]; 92 | [self setNeedsDisplay:YES]; 93 | } 94 | 95 | @end 96 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | #Note 3 | 4 | This OSX repo has been deprecated as we are working on a Javascript/Electron implementation of Bitmarkets now. We'll be releasing that repo when it's ready. 5 | 6 | 7 | #Bitmarkets 8 | 9 | Bitmarkets is a protocol and client used to implement a p2p online marketplace client using Bitmessage for communications and Bitcoin for payments. 10 | 11 | 12 | #compiling 13 | 14 | After cloning the git repo, you'll need to init and pull all the submodules by running init.sh and pull.sh. Then you should be able to build and run in Xcode. 15 | 16 | To verify/audit the build you'll need to download and compile some of the statically built executables (e.g. python and tor in BitmessageKit) seperately. 17 | 18 | #security notes 19 | 20 | Bitmarkets talks to the network in three ways: 21 | - BitcoinJ talks to other Bitcoin nodes via Tor 22 | - Bitmessage talks to other Bitmessage nodes via Tor 23 | - HTTP requests to blockchain.info are used get the current Bitcoin exchange rate. 24 | 25 | Client side files are not currently encrypted. We recommend at least using FileVault. 26 | 27 | 28 | #dev path high priority 29 | 30 | - GNUstep port to Linux and Windows 31 | - ability to choose between bid addresses 32 | - auto-updates 33 | - app store release 34 | - automated tests 35 | - encrypt all local data files and add password login 36 | - deterministic builds (see https://gitian.org) 37 | - use tor for blockchain.info bitcoin price updates 38 | 39 | #dev path low priority 40 | 41 | - UI for accepting multiple sales on a single post? 42 | - support stores with namecoin (a namecoin name to bitmessage address entry) 43 | - option for using separate pubkey for each post 44 | - ui update, image browsing view option within a category 45 | - use ntimelock to avoid utx pollution for transactions that fail to reach agreement? 46 | 47 | 48 | #links 49 | 50 | - website: http://voluntary.net 51 | - twitter: https://twitter.com/voluntarynet 52 | 53 | 54 | #architecture notes 55 | 56 | On starting, the app launches three child processes: 57 | 58 | 1) a Tor server, which is used by the Bitmessage and BitcoinJ servers use to route their communications to the Bitmessage network and Bitcoin network (respectively) through the Tor network. 59 | 60 | 2) a Bitmessage server, which is used for posting sales to a public Bitmessage channel and for sending messages between buyers and sellers to 1) place and accept bids 2) setup escrow 3) send physical delivery address to seller 4) release escrow via payment or refund 61 | 62 | 3) a BitcoinJ server, which is used as the app's' Bitcoin wallet and to construct and trackthe escrow transactions. 63 | 64 | 65 | #versions 66 | 67 | v0.8.9: 68 | - BitcoinJ now uses Tor 69 | - POW limited to 1 core 70 | - image attachments auto resized to fit in 32kb JPEG 71 | 72 | v0.8.8 73 | - server launch fix 74 | - performance improvements 75 | -- caching address valid requests 76 | -- coallessing node notifications 77 | -------------------------------------------------------------------------------- /BitMarkets/Classes/Market/Transactions/Msg/MKSetupLockMsg.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKSetupLockMsg.m 3 | // BitMarkets 4 | // 5 | // Created by Rich Collins on 7/8/14. 6 | // Copyright (c) 2014 voluntary.net. All rights reserved. 7 | // 8 | 9 | #import "MKSetupLockMsg.h" 10 | #import "MKLock.h" 11 | 12 | @implementation MKSetupLockMsg 13 | 14 | - (id)init 15 | { 16 | self = [super init]; 17 | [self addPropertyName:@"broadcastDateNumber"]; 18 | return self; 19 | } 20 | 21 | - (void)configureAndBroadcastTx 22 | { 23 | BNTx *escrowTx = [self.runningWallet newTx]; 24 | [escrowTx configureForEscrowWithValue:self.lockNode.lockEscrowPriceInSatoshi]; 25 | self.lockNode.error = nil; 26 | 27 | if (escrowTx.error) 28 | { 29 | if (escrowTx.error.insufficientValue) 30 | { 31 | self.lockNode.error = [NSString stringWithFormat:@"%@BTC Required", escrowTx.error.insufficientValue.satoshiToBtc]; 32 | } 33 | else 34 | { 35 | self.lockNode.error = @"unknown error while constructing change tx"; 36 | } 37 | 38 | return; 39 | } 40 | 41 | NSNumber *value = [NSNumber numberWithLongLong: 42 | [(BNTxOut *)[escrowTx.outputs firstObject] value].longLongValue + [escrowTx fee].longLongValue]; 43 | 44 | self.tx = [self.runningWallet newTx]; 45 | [self.tx configureForOutputWithValue:value]; 46 | [self.tx subtractFee]; 47 | [self.tx sign]; 48 | [self.tx lockOutput:[self.tx firstOutput]]; 49 | self.payload = self.tx.asJSONObject; 50 | [self write]; 51 | [self.tx broadcast]; //TODO make sure that peers accepted it 52 | //[self broadcastIfNeeded]; 53 | } 54 | 55 | - (void)returnChangeToWallet 56 | { 57 | if (self.tx) 58 | { 59 | [self.tx unlockOutputs]; 60 | } 61 | } 62 | /* 63 | - (void)broadcastIfNeeded 64 | { 65 | NSTimeInterval broadcastTimeoutInSeconds = 20*60; 66 | 67 | if (self.tx && !self.tx.isConfirmed) 68 | { 69 | if ( 70 | !self.broadcastDate || 71 | ([self.broadcastDate ageInSeconds] > broadcastTimeoutInSeconds) 72 | ) 73 | { 74 | @try 75 | { 76 | [self.tx broadcast]; //TODO make sure that peers accepted it 77 | 78 | NSLog(@"MKSetupLockMsg broadcast change tx '%@'", self.tx.txHash); 79 | [self setBroadcastDate:[NSDate date]]; 80 | [self write]; 81 | } 82 | @catch (NSException *exception) 83 | { 84 | [self lockNode].error = [exception description]; 85 | NSLog(@"MKSetupLockMsg broadcast error '%@'",[exception description]); 86 | } 87 | } 88 | } 89 | } 90 | */ 91 | 92 | - (void)setBroadcastDate:(NSDate *)aDate 93 | { 94 | self.broadcastDateNumber = [aDate asNumber]; 95 | } 96 | 97 | - (NSDate *)broadcastDate 98 | { 99 | return [NSDate fromNumber:self.broadcastDateNumber]; 100 | } 101 | 102 | @end 103 | --------------------------------------------------------------------------------