diff --git a/.circleci/config.yml b/.circleci/config.yml index c0e085d519..538ea4d789 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -200,7 +200,7 @@ jobs: docker: - image: circleci/python - image: 0xorg/ganache-cli:2.2.2 - - image: 0xorg/launch-kit-ci + - image: 0xorg/launch-kit-ci:0.0.1 command: | yarn start:ts -p 3000:3000 steps: diff --git a/contracts/asset-proxy/CHANGELOG.json b/contracts/asset-proxy/CHANGELOG.json index d4a8083933..cd08c26182 100644 --- a/contracts/asset-proxy/CHANGELOG.json +++ b/contracts/asset-proxy/CHANGELOG.json @@ -1,11 +1,17 @@ [ + { + "version": "2.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "2.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Do not reexport external dependencies", "pr": 1682 @@ -17,8 +23,13 @@ { "note": "Bumped solidity version to ^0.5.5", "pr": 1701 + }, + { + "note": "Integration testing for ERC1155Proxy", + "pr": 1673 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/asset-proxy/CHANGELOG.md b/contracts/asset-proxy/CHANGELOG.md index fcc8b2f61e..add42d96b3 100644 --- a/contracts/asset-proxy/CHANGELOG.md +++ b/contracts/asset-proxy/CHANGELOG.md @@ -5,6 +5,17 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v2.0.0 - _March 20, 2019_ + + * Do not reexport external dependencies (#1682) + * Add ERC1155Proxy (#1661) + * Bumped solidity version to ^0.5.5 (#1701) + * Integration testing for ERC1155Proxy (#1673) + ## v1.0.9 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/asset-proxy/compiler.json b/contracts/asset-proxy/compiler.json index 28f73402ca..6bf9c16c56 100644 --- a/contracts/asset-proxy/compiler.json +++ b/contracts/asset-proxy/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, diff --git a/contracts/asset-proxy/contracts/src/ERC1155Proxy.sol b/contracts/asset-proxy/contracts/src/ERC1155Proxy.sol index 1249616714..4a80754532 100644 --- a/contracts/asset-proxy/contracts/src/ERC1155Proxy.sol +++ b/contracts/asset-proxy/contracts/src/ERC1155Proxy.sol @@ -26,7 +26,7 @@ contract ERC1155Proxy is { // Id of this proxy. - bytes4 constant internal PROXY_ID = bytes4(keccak256("ERC1155Token(address,uint256[],uint256[],bytes)")); + bytes4 constant internal PROXY_ID = bytes4(keccak256("ERC1155Assets(address,uint256[],uint256[],bytes)")); function () external diff --git a/contracts/asset-proxy/package.json b/contracts/asset-proxy/package.json index 36bda3404c..5d187ca41f 100644 --- a/contracts/asset-proxy/package.json +++ b/contracts/asset-proxy/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-asset-proxy", - "version": "1.0.9", + "version": "2.1.0", "engines": { "node": ">=6.12" }, @@ -46,11 +46,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/protocol/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -67,17 +67,17 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-erc20": "^1.0.9", - "@0x/contracts-erc721": "^1.0.9", - "@0x/contracts-erc1155": "^1.0.0", - "@0x/contracts-utils": "^2.0.8", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-erc1155": "^1.1.0", + "@0x/contracts-erc20": "^2.1.0", + "@0x/contracts-erc721": "^2.1.0", + "@0x/contracts-utils": "^3.1.0", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/asset-proxy/test/erc1155_proxy.ts b/contracts/asset-proxy/test/erc1155_proxy.ts index 7931fdfda0..f0044125f4 100644 --- a/contracts/asset-proxy/test/erc1155_proxy.ts +++ b/contracts/asset-proxy/test/erc1155_proxy.ts @@ -15,7 +15,7 @@ import { web3Wrapper, } from '@0x/contracts-test-utils'; import { BlockchainLifecycle } from '@0x/dev-utils'; -import { RevertReason } from '@0x/types'; +import { AssetProxyId, RevertReason } from '@0x/types'; import { BigNumber } from '@0x/utils'; import * as chai from 'chai'; import { LogWithDecodedArgs } from 'ethereum-types'; @@ -123,8 +123,7 @@ describe('ERC1155Proxy', () => { }); it('should have an id of 0x9645780d', async () => { const proxyId = await erc1155Proxy.getProxyId.callAsync(); - // proxy computed using -- bytes4(keccak256("erc1155Token(address,uint256[],uint256[],bytes)")); - const expectedProxyId = '0x9645780d'; + const expectedProxyId = AssetProxyId.ERC1155; expect(proxyId).to.equal(expectedProxyId); }); }); @@ -433,6 +432,50 @@ describe('ERC1155Proxy', () => { ]; await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); }); + it('should successfully transfer value to a smart contract and trigger its callback, when callback `data` is NULL', async () => { + // setup test parameters + const tokenHolders = [spender, receiverContract]; + const tokensToTransfer = fungibleTokens.slice(0, 1); + const valuesToTransfer = [fungibleValueToTransferLarge]; + const valueMultiplier = valueMultiplierSmall; + const totalValuesTransferred = _.map(valuesToTransfer, (value: BigNumber) => { + return value.times(valueMultiplier); + }); + // check balances before transfer + const expectedInitialBalances = [spenderInitialFungibleBalance, receiverContractInitialFungibleBalance]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // execute transfer + const nullReceiverCallbackData = '0x'; + const txReceipt = await erc1155ProxyWrapper.transferFromWithLogsAsync( + spender, + receiverContract, + erc1155Contract.address, + tokensToTransfer, + valuesToTransfer, + valueMultiplier, + nullReceiverCallbackData, + authorized, + ); + // check receiver log ignored extra asset data + expect(txReceipt.logs.length).to.be.equal(2); + const receiverLog = txReceipt.logs[1] as LogWithDecodedArgs< + DummyERC1155ReceiverBatchTokenReceivedEventArgs + >; + expect(receiverLog.args.operator).to.be.equal(erc1155Proxy.address); + expect(receiverLog.args.from).to.be.equal(spender); + expect(receiverLog.args.tokenIds.length).to.be.deep.equal(1); + expect(receiverLog.args.tokenIds[0]).to.be.bignumber.equal(tokensToTransfer[0]); + expect(receiverLog.args.tokenValues.length).to.be.deep.equal(1); + expect(receiverLog.args.tokenValues[0]).to.be.bignumber.equal(totalValuesTransferred[0]); + // note - if the `extraData` is ignored then the receiver log should ignore it as well. + expect(receiverLog.args.data).to.be.deep.equal(nullReceiverCallbackData); + // check balances after transfer + const expectedFinalBalances = [ + expectedInitialBalances[0].minus(totalValuesTransferred[0]), + expectedInitialBalances[1].plus(totalValuesTransferred[0]), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); it('should successfully transfer value and ignore extra assetData', async () => { // setup test parameters const tokenHolders = [spender, receiverContract]; diff --git a/contracts/asset-proxy/test/global_hooks.ts b/contracts/asset-proxy/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/asset-proxy/test/global_hooks.ts +++ b/contracts/asset-proxy/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/asset-proxy/test/proxies.ts b/contracts/asset-proxy/test/proxies.ts index 7977871358..81d1475d82 100644 --- a/contracts/asset-proxy/test/proxies.ts +++ b/contracts/asset-proxy/test/proxies.ts @@ -1,3 +1,4 @@ +import { ERC1155MintableContract, Erc1155Wrapper } from '@0x/contracts-erc1155'; import { artifacts as erc20Artifacts, DummyERC20TokenContract, @@ -30,6 +31,7 @@ import * as _ from 'lodash'; import { artifacts, + ERC1155ProxyWrapper, ERC20ProxyContract, ERC20Wrapper, ERC721ProxyContract, @@ -77,6 +79,15 @@ describe('Asset Transfer Proxies', () => { let erc721AFromTokenId: BigNumber; let erc721BFromTokenId: BigNumber; + let erc1155Proxy: ERC721ProxyContract; + let erc1155ProxyWrapper: ERC1155ProxyWrapper; + let erc1155Contract: ERC1155MintableContract; + let erc1155Contract2: ERC1155MintableContract; + let erc1155Wrapper: Erc1155Wrapper; + let erc1155Wrapper2: Erc1155Wrapper; + let erc1155FungibleTokens: BigNumber[]; + let erc1155NonFungibleTokensOwnedBySpender: BigNumber[]; + before(async () => { await blockchainLifecycle.startAsync(); }); @@ -127,6 +138,22 @@ describe('Asset Transfer Proxies', () => { constants.AWAIT_TRANSACTION_MINED_MS, ); + // Configure ERC115Proxy + erc1155ProxyWrapper = new ERC1155ProxyWrapper(provider, usedAddresses, owner); + erc1155Proxy = await erc1155ProxyWrapper.deployProxyAsync(); + await web3Wrapper.awaitTransactionSuccessAsync( + await erc1155Proxy.addAuthorizedAddress.sendTransactionAsync(authorized, { + from: owner, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + await web3Wrapper.awaitTransactionSuccessAsync( + await erc1155Proxy.addAuthorizedAddress.sendTransactionAsync(multiAssetProxy.address, { + from: owner, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + // Configure MultiAssetProxy await web3Wrapper.awaitTransactionSuccessAsync( await multiAssetProxy.addAuthorizedAddress.sendTransactionAsync(authorized, { @@ -146,6 +173,12 @@ describe('Asset Transfer Proxies', () => { }), constants.AWAIT_TRANSACTION_MINED_MS, ); + await web3Wrapper.awaitTransactionSuccessAsync( + await multiAssetProxy.registerAssetProxy.sendTransactionAsync(erc1155Proxy.address, { + from: owner, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); // Deploy and configure ERC20 tokens const numDummyErc20ToDeploy = 2; @@ -213,6 +246,22 @@ describe('Asset Transfer Proxies', () => { const erc721Balances = await erc721Wrapper.getBalancesAsync(); erc721AFromTokenId = erc721Balances[fromAddress][erc721TokenA.address][0]; erc721BFromTokenId = erc721Balances[fromAddress][erc721TokenB.address][0]; + + // Deploy & configure ERC1155 tokens and receiver + [erc1155Wrapper, erc1155Wrapper2] = await erc1155ProxyWrapper.deployDummyContractsAsync(); + erc1155Contract = erc1155Wrapper.getContract(); + erc1155Contract2 = erc1155Wrapper2.getContract(); + await erc1155ProxyWrapper.setBalancesAndAllowancesAsync(); + erc1155FungibleTokens = erc1155ProxyWrapper.getFungibleTokenIds(); + const nonFungibleTokens = erc1155ProxyWrapper.getNonFungibleTokenIds(); + const tokenBalances = await erc1155ProxyWrapper.getBalancesAsync(); + erc1155NonFungibleTokensOwnedBySpender = []; + _.each(nonFungibleTokens, (nonFungibleToken: BigNumber) => { + const nonFungibleTokenAsString = nonFungibleToken.toString(); + const nonFungibleTokenHeldBySpender = + tokenBalances.nonFungible[fromAddress][erc1155Contract.address][nonFungibleTokenAsString][0]; + erc1155NonFungibleTokensOwnedBySpender.push(nonFungibleTokenHeldBySpender); + }); }); beforeEach(async () => { await blockchainLifecycle.startAsync(); @@ -944,6 +993,314 @@ describe('Asset Transfer Proxies', () => { expect(newOwnerFromAsset1).to.be.equal(toAddress); expect(newOwnerFromAsset2).to.be.equal(toAddress); }); + it('should transfer a fungible ERC1155 token', async () => { + // setup test parameters + const tokenHolders = [fromAddress, toAddress]; + const tokensToTransfer = erc1155FungibleTokens.slice(0, 1); + const valuesToTransfer = [new BigNumber(25)]; + const valueMultiplier = new BigNumber(23); + const receiverCallbackData = '0x0102030405'; + // check balances before transfer + const expectedInitialBalances = [ + // from + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // to + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // encode erc1155 asset data + const erc1155AssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + tokensToTransfer, + valuesToTransfer, + receiverCallbackData, + ); + // encode multi-asset data + const multiAssetAmount = new BigNumber(5); + const amounts = [valueMultiplier]; + const nestedAssetData = [erc1155AssetData]; + const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData); + const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData( + assetData, + fromAddress, + toAddress, + multiAssetAmount, + ); + // execute transfer + await web3Wrapper.awaitTransactionSuccessAsync( + await web3Wrapper.sendTransactionAsync({ + to: multiAssetProxy.address, + data, + from: authorized, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + // check balances + const totalValueTransferred = valuesToTransfer[0].times(valueMultiplier).times(multiAssetAmount); + const expectedFinalBalances = [ + // from + expectedInitialBalances[0].minus(totalValueTransferred), + // to + expectedInitialBalances[1].plus(totalValueTransferred), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); + it('should successfully transfer multiple fungible tokens of the same ERC1155 contract', async () => { + // setup test parameters + const tokenHolders = [fromAddress, toAddress]; + const tokensToTransfer = erc1155FungibleTokens.slice(0, 3); + const valuesToTransfer = [new BigNumber(25), new BigNumber(35), new BigNumber(45)]; + const valueMultiplier = new BigNumber(23); + const receiverCallbackData = '0x0102030405'; + // check balances before transfer + const expectedInitialBalances = [ + // from + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // to + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // encode erc1155 asset data + const erc1155AssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + tokensToTransfer, + valuesToTransfer, + receiverCallbackData, + ); + // encode multi-asset data + const multiAssetAmount = new BigNumber(5); + const amounts = [valueMultiplier]; + const nestedAssetData = [erc1155AssetData]; + const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData); + const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData( + assetData, + fromAddress, + toAddress, + multiAssetAmount, + ); + // execute transfer + await web3Wrapper.awaitTransactionSuccessAsync( + await web3Wrapper.sendTransactionAsync({ + to: multiAssetProxy.address, + data, + from: authorized, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + // check balances + const totalValuesTransferred = _.map(valuesToTransfer, (value: BigNumber) => { + return value.times(valueMultiplier).times(multiAssetAmount); + }); + const expectedFinalBalances = [ + // from + expectedInitialBalances[0].minus(totalValuesTransferred[0]), + expectedInitialBalances[1].minus(totalValuesTransferred[1]), + expectedInitialBalances[2].minus(totalValuesTransferred[2]), + // to + expectedInitialBalances[3].plus(totalValuesTransferred[0]), + expectedInitialBalances[4].plus(totalValuesTransferred[1]), + expectedInitialBalances[5].plus(totalValuesTransferred[2]), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); + it('should successfully transfer multiple fungible/non-fungible tokens of the same ERC1155 contract', async () => { + // setup test parameters + const tokenHolders = [fromAddress, toAddress]; + const fungibleTokensToTransfer = erc1155FungibleTokens.slice(0, 1); + const nonFungibleTokensToTransfer = erc1155NonFungibleTokensOwnedBySpender.slice(0, 1); + const tokensToTransfer = fungibleTokensToTransfer.concat(nonFungibleTokensToTransfer); + const valuesToTransfer = [new BigNumber(25), new BigNumber(1)]; + const valueMultiplier = new BigNumber(1); + const receiverCallbackData = '0x0102030405'; + // check balances before transfer + const nftOwnerBalance = new BigNumber(1); + const nftNotOwnerBalance = new BigNumber(0); + const expectedInitialBalances = [ + // from + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + nftOwnerBalance, + // to + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + nftNotOwnerBalance, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // encode erc1155 asset data + const erc1155AssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + tokensToTransfer, + valuesToTransfer, + receiverCallbackData, + ); + // encode multi-asset data + const multiAssetAmount = new BigNumber(1); + const amounts = [valueMultiplier]; + const nestedAssetData = [erc1155AssetData]; + const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData); + const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData( + assetData, + fromAddress, + toAddress, + multiAssetAmount, + ); + // execute transfer + await web3Wrapper.awaitTransactionSuccessAsync( + await web3Wrapper.sendTransactionAsync({ + to: multiAssetProxy.address, + data, + from: authorized, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + // check balances + const totalValuesTransferred = _.map(valuesToTransfer, (value: BigNumber) => { + return value.times(valueMultiplier).times(multiAssetAmount); + }); + const expectedFinalBalances = [ + // from + expectedInitialBalances[0].minus(totalValuesTransferred[0]), + expectedInitialBalances[1].minus(totalValuesTransferred[1]), + // to + expectedInitialBalances[2].plus(totalValuesTransferred[0]), + expectedInitialBalances[3].plus(totalValuesTransferred[1]), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); + it('should successfully transfer multiple different ERC1155 tokens', async () => { + // setup test parameters + const tokenHolders = [fromAddress, toAddress]; + const tokensToTransfer = erc1155FungibleTokens.slice(0, 1); + const valuesToTransfer = [new BigNumber(25)]; + const valueMultiplier = new BigNumber(23); + const receiverCallbackData = '0x0102030405'; + // check balances before transfer + const expectedInitialBalances = [ + // from + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // to + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + await erc1155Wrapper2.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // encode erc1155 asset data + const erc1155AssetData1 = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + tokensToTransfer, + valuesToTransfer, + receiverCallbackData, + ); + const erc1155AssetData2 = assetDataUtils.encodeERC1155AssetData( + erc1155Contract2.address, + tokensToTransfer, + valuesToTransfer, + receiverCallbackData, + ); + // encode multi-asset data + const multiAssetAmount = new BigNumber(5); + const amounts = [valueMultiplier, valueMultiplier]; + const nestedAssetData = [erc1155AssetData1, erc1155AssetData2]; + const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData); + const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData( + assetData, + fromAddress, + toAddress, + multiAssetAmount, + ); + // execute transfer + await web3Wrapper.awaitTransactionSuccessAsync( + await web3Wrapper.sendTransactionAsync({ + to: multiAssetProxy.address, + data, + from: authorized, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + // check balances + const totalValueTransferred = valuesToTransfer[0].times(valueMultiplier).times(multiAssetAmount); + const expectedFinalBalances = [ + // from + expectedInitialBalances[0].minus(totalValueTransferred), + // to + expectedInitialBalances[1].plus(totalValueTransferred), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + await erc1155Wrapper2.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); + it('should successfully transfer a combination of ERC20, ERC721, and ERC1155 tokens', async () => { + // setup test parameters + const inputAmount = new BigNumber(1); + const erc20Amount = new BigNumber(10); + const erc20AssetData = assetDataUtils.encodeERC20AssetData(erc20TokenA.address); + const erc721Amount = new BigNumber(1); + const erc721AssetData = assetDataUtils.encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId); + const erc1155TokenHolders = [fromAddress, toAddress]; + const erc1155TokensToTransfer = erc1155FungibleTokens.slice(0, 1); + const erc1155ValuesToTransfer = [new BigNumber(25)]; + const erc1155Amount = new BigNumber(23); + const erc1155ReceiverCallbackData = '0x0102030405'; + const erc1155AssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + erc1155TokensToTransfer, + erc1155ValuesToTransfer, + erc1155ReceiverCallbackData, + ); + const amounts = [erc20Amount, erc721Amount, erc1155Amount]; + const nestedAssetData = [erc20AssetData, erc721AssetData, erc1155AssetData]; + const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData); + const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData( + assetData, + fromAddress, + toAddress, + inputAmount, + ); + // check balances before transfer + const erc20Balances = await erc20Wrapper.getBalancesAsync(); + const ownerFromAsset = await erc721TokenA.ownerOf.callAsync(erc721AFromTokenId); + expect(ownerFromAsset).to.be.equal(fromAddress); + const erc1155ExpectedInitialBalances = [ + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + ]; + await erc1155Wrapper.assertBalancesAsync( + erc1155TokenHolders, + erc1155TokensToTransfer, + erc1155ExpectedInitialBalances, + ); + // execute transfer + await web3Wrapper.awaitTransactionSuccessAsync( + await web3Wrapper.sendTransactionAsync({ + to: multiAssetProxy.address, + data, + from: authorized, + gas: 1000000, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + // check balances after transfer + const newBalances = await erc20Wrapper.getBalancesAsync(); + const totalAmount = inputAmount.times(erc20Amount); + expect(newBalances[fromAddress][erc20TokenA.address]).to.be.bignumber.equal( + erc20Balances[fromAddress][erc20TokenA.address].minus(totalAmount), + ); + expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal( + erc20Balances[toAddress][erc20TokenA.address].plus(totalAmount), + ); + const newOwnerFromAsset = await erc721TokenA.ownerOf.callAsync(erc721AFromTokenId); + expect(newOwnerFromAsset).to.be.equal(toAddress); + const erc1155TotalValueTransferred = erc1155ValuesToTransfer[0].times(erc1155Amount).times(inputAmount); + const expectedFinalBalances = [ + erc1155ExpectedInitialBalances[0].minus(erc1155TotalValueTransferred), + erc1155ExpectedInitialBalances[1].plus(erc1155TotalValueTransferred), + ]; + await erc1155Wrapper.assertBalancesAsync( + erc1155TokenHolders, + erc1155TokensToTransfer, + expectedFinalBalances, + ); + }); it('should successfully transfer a combination of ERC20 and ERC721 tokens', async () => { const inputAmount = new BigNumber(1); const erc20Amount = new BigNumber(10); diff --git a/contracts/coordinator/CHANGELOG.json b/contracts/coordinator/CHANGELOG.json index 9aae87f350..0efc92c116 100644 --- a/contracts/coordinator/CHANGELOG.json +++ b/contracts/coordinator/CHANGELOG.json @@ -1,6 +1,29 @@ [ { - "version": "0.0.1", + "version": "2.0.0", + "changes": [ + { + "note": "Make `decodeOrdersFromFillData`, `getCoordinatorApprovalHash`, and `getTransactionHash` public", + "pr": 1729 + }, + { + "note": "Make `assertValidTransactionOrdersApproval` internal", + "pr": 1729 + } + ] + }, + { + "version": "1.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, + { + "version": "1.0.0", "changes": [ { "note": "Created Coordinator package" @@ -12,7 +35,12 @@ { "note": "Add `SignatureType.Invalid`", "pr": 1705 + }, + { + "note": "Set `evmVersion` to `constantinople`", + "pr": 1707 } - ] + ], + "timestamp": 1553091633 } ] diff --git a/contracts/coordinator/CHANGELOG.md b/contracts/coordinator/CHANGELOG.md index 1004e94271..7abad801a4 100644 --- a/contracts/coordinator/CHANGELOG.md +++ b/contracts/coordinator/CHANGELOG.md @@ -4,3 +4,14 @@ Edit the package's CHANGELOG.json file only. --> CHANGELOG + +## v1.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v1.0.0 - _March 20, 2019_ + + * Created Coordinator package + * Use separate EIP712 domains for transactions and approvals (#1705) + * Add `SignatureType.Invalid` (#1705) + * Set `evmVersion` to `constantinople` (#1707) diff --git a/contracts/coordinator/compiler.json b/contracts/coordinator/compiler.json index 40b486d1a7..b5e9e3e156 100644 --- a/contracts/coordinator/compiler.json +++ b/contracts/coordinator/compiler.json @@ -3,7 +3,7 @@ "contractsDir": "./contracts", "useDockerisedSolc": true, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, @@ -21,10 +21,5 @@ } } }, - "contracts": [ - "src/Coordinator.sol", - "src/registry/CoordinatorRegistry.sol", - "test/TestLibs.sol", - "test/TestMixins.sol" - ] + "contracts": ["src/Coordinator.sol", "src/registry/CoordinatorRegistry.sol"] } diff --git a/contracts/coordinator/contracts/src/MixinCoordinatorApprovalVerifier.sol b/contracts/coordinator/contracts/src/MixinCoordinatorApprovalVerifier.sol index 408fa69b4e..bb3be65a73 100644 --- a/contracts/coordinator/contracts/src/MixinCoordinatorApprovalVerifier.sol +++ b/contracts/coordinator/contracts/src/MixinCoordinatorApprovalVerifier.sol @@ -58,7 +58,7 @@ contract MixinCoordinatorApprovalVerifier is view { // Get the orders from the the Exchange calldata in the 0x transaction - LibOrder.Order[] memory orders = decodeFillDataOrders(transaction.data); + LibOrder.Order[] memory orders = decodeOrdersFromFillData(transaction.data); // No approval is required for non-fill methods if (orders.length > 0) { @@ -74,6 +74,57 @@ contract MixinCoordinatorApprovalVerifier is } } + /// @dev Decodes the orders from Exchange calldata representing any fill method. + /// @param data Exchange calldata representing a fill method. + /// @return The orders from the Exchange calldata. + function decodeOrdersFromFillData(bytes memory data) + public + pure + returns (LibOrder.Order[] memory orders) + { + bytes4 selector = data.readBytes4(0); + if ( + selector == FILL_ORDER_SELECTOR || + selector == FILL_ORDER_NO_THROW_SELECTOR || + selector == FILL_OR_KILL_ORDER_SELECTOR + ) { + // Decode single order + (LibOrder.Order memory order) = abi.decode( + data.slice(4, data.length), + (LibOrder.Order) + ); + orders = new LibOrder.Order[](1); + orders[0] = order; + } else if ( + selector == BATCH_FILL_ORDERS_SELECTOR || + selector == BATCH_FILL_ORDERS_NO_THROW_SELECTOR || + selector == BATCH_FILL_OR_KILL_ORDERS_SELECTOR || + selector == MARKET_BUY_ORDERS_SELECTOR || + selector == MARKET_BUY_ORDERS_NO_THROW_SELECTOR || + selector == MARKET_SELL_ORDERS_SELECTOR || + selector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR + ) { + // Decode all orders + // solhint-disable indent + (orders) = abi.decode( + data.slice(4, data.length), + (LibOrder.Order[]) + ); + } else if (selector == MATCH_ORDERS_SELECTOR) { + // Decode left and right orders + (LibOrder.Order memory leftOrder, LibOrder.Order memory rightOrder) = abi.decode( + data.slice(4, data.length), + (LibOrder.Order, LibOrder.Order) + ); + + // Create array of orders + orders = new LibOrder.Order[](2); + orders[0] = leftOrder; + orders[1] = rightOrder; + } + return orders; + } + /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction. /// @param transaction 0x transaction containing salt, signerAddress, and data. /// @param orders Array of order structs containing order specifications. @@ -89,7 +140,7 @@ contract MixinCoordinatorApprovalVerifier is uint256[] memory approvalExpirationTimeSeconds, bytes[] memory approvalSignatures ) - public + internal view { // Verify that Ethereum tx signer is the same as the approved txOrigin @@ -149,55 +200,4 @@ contract MixinCoordinatorApprovalVerifier is ); } } - - /// @dev Decodes the orders from Exchange calldata representing any fill method. - /// @param data Exchange calldata representing a fill method. - /// @return The orders from the Exchange calldata. - function decodeFillDataOrders(bytes memory data) - internal - pure - returns (LibOrder.Order[] memory orders) - { - bytes4 selector = data.readBytes4(0); - if ( - selector == FILL_ORDER_SELECTOR || - selector == FILL_ORDER_NO_THROW_SELECTOR || - selector == FILL_OR_KILL_ORDER_SELECTOR - ) { - // Decode single order - (LibOrder.Order memory order) = abi.decode( - data.slice(4, data.length), - (LibOrder.Order) - ); - orders = new LibOrder.Order[](1); - orders[0] = order; - } else if ( - selector == BATCH_FILL_ORDERS_SELECTOR || - selector == BATCH_FILL_ORDERS_NO_THROW_SELECTOR || - selector == BATCH_FILL_OR_KILL_ORDERS_SELECTOR || - selector == MARKET_BUY_ORDERS_SELECTOR || - selector == MARKET_BUY_ORDERS_NO_THROW_SELECTOR || - selector == MARKET_SELL_ORDERS_SELECTOR || - selector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR - ) { - // Decode all orders - // solhint-disable indent - (orders) = abi.decode( - data.slice(4, data.length), - (LibOrder.Order[]) - ); - } else if (selector == MATCH_ORDERS_SELECTOR) { - // Decode left and right orders - (LibOrder.Order memory leftOrder, LibOrder.Order memory rightOrder) = abi.decode( - data.slice(4, data.length), - (LibOrder.Order, LibOrder.Order) - ); - - // Create array of orders - orders = new LibOrder.Order[](2); - orders[0] = leftOrder; - orders[1] = rightOrder; - } - return orders; - } } diff --git a/contracts/coordinator/contracts/src/interfaces/ICoordinatorApprovalVerifier.sol b/contracts/coordinator/contracts/src/interfaces/ICoordinatorApprovalVerifier.sol index c603e7a4fa..c0f8ccf4e0 100644 --- a/contracts/coordinator/contracts/src/interfaces/ICoordinatorApprovalVerifier.sol +++ b/contracts/coordinator/contracts/src/interfaces/ICoordinatorApprovalVerifier.sol @@ -42,21 +42,11 @@ contract ICoordinatorApprovalVerifier { public view; - /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction. - /// @param transaction 0x transaction containing salt, signerAddress, and data. - /// @param orders Array of order structs containing order specifications. - /// @param txOrigin Required signer of Ethereum transaction calling this function. - /// @param transactionSignature Proof that the transaction has been signed by the signer. - /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires. - /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order. - function assertValidTransactionOrdersApproval( - LibZeroExTransaction.ZeroExTransaction memory transaction, - LibOrder.Order[] memory orders, - address txOrigin, - bytes memory transactionSignature, - uint256[] memory approvalExpirationTimeSeconds, - bytes[] memory approvalSignatures - ) + /// @dev Decodes the orders from Exchange calldata representing any fill method. + /// @param data Exchange calldata representing a fill method. + /// @return The orders from the Exchange calldata. + function decodeOrdersFromFillData(bytes memory data) public - view; + pure + returns (LibOrder.Order[] memory orders); } diff --git a/contracts/coordinator/contracts/src/libs/LibCoordinatorApproval.sol b/contracts/coordinator/contracts/src/libs/LibCoordinatorApproval.sol index 7f9ec9b134..15bd656176 100644 --- a/contracts/coordinator/contracts/src/libs/LibCoordinatorApproval.sol +++ b/contracts/coordinator/contracts/src/libs/LibCoordinatorApproval.sol @@ -17,6 +17,7 @@ */ pragma solidity ^0.5.5; +pragma experimental "ABIEncoderV2"; import "./LibEIP712Domain.sol"; @@ -37,16 +38,16 @@ contract LibCoordinatorApproval is struct CoordinatorApproval { address txOrigin; // Required signer of Ethereum transaction that is submitting approval. - bytes32 transactionHash; // EIP712 hash of the transaction, using the domain separator of this contract. + bytes32 transactionHash; // EIP712 hash of the transaction. bytes transactionSignature; // Signature of the 0x transaction. - uint256 approvalExpirationTimeSeconds; // Timestamp in seconds for which the signature expires. + uint256 approvalExpirationTimeSeconds; // Timestamp in seconds for which the approval expires. } /// @dev Calculated the EIP712 hash of the Coordinator approval mesasage using the domain separator of this contract. /// @param approval Coordinator approval message containing the transaction hash, transaction signature, and expiration of the approval. /// @return EIP712 hash of the Coordinator approval message with the domain separator of this contract. function getCoordinatorApprovalHash(CoordinatorApproval memory approval) - internal + public view returns (bytes32 approvalHash) { @@ -71,9 +72,10 @@ contract LibCoordinatorApproval is // Assembly for more efficiently computing: // keccak256(abi.encodePacked( // EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH, + // approval.txOrigin, // approval.transactionHash, // keccak256(approval.transactionSignature) - // approval.expiration, + // approval.approvalExpirationTimeSeconds, // )); assembly { diff --git a/contracts/coordinator/contracts/src/libs/LibZeroExTransaction.sol b/contracts/coordinator/contracts/src/libs/LibZeroExTransaction.sol index 8d388a55a2..a5e16f9694 100644 --- a/contracts/coordinator/contracts/src/libs/LibZeroExTransaction.sol +++ b/contracts/coordinator/contracts/src/libs/LibZeroExTransaction.sol @@ -17,6 +17,7 @@ */ pragma solidity ^0.5.5; +pragma experimental "ABIEncoderV2"; import "./LibEIP712Domain.sol"; @@ -40,11 +41,11 @@ contract LibZeroExTransaction is bytes data; // AbiV2 encoded calldata. } - /// @dev Calculates the EIP712 hash of a 0x transaction using the domain separator of this contract. + /// @dev Calculates the EIP712 hash of a 0x transaction using the domain separator of the Exchange contract. /// @param transaction 0x transaction containing salt, signerAddress, and data. /// @return EIP712 hash of the transaction with the domain separator of this contract. function getTransactionHash(ZeroExTransaction memory transaction) - internal + public view returns (bytes32 transactionHash) { diff --git a/contracts/coordinator/contracts/src/mixins/MCoordinatorApprovalVerifier.sol b/contracts/coordinator/contracts/src/mixins/MCoordinatorApprovalVerifier.sol index d8e217279b..302350c357 100644 --- a/contracts/coordinator/contracts/src/mixins/MCoordinatorApprovalVerifier.sol +++ b/contracts/coordinator/contracts/src/mixins/MCoordinatorApprovalVerifier.sol @@ -26,11 +26,21 @@ import "../interfaces/ICoordinatorApprovalVerifier.sol"; contract MCoordinatorApprovalVerifier is ICoordinatorApprovalVerifier { - /// @dev Decodes the orders from Exchange calldata representing any fill method. - /// @param data Exchange calldata representing a fill method. - /// @return The orders from the Exchange calldata. - function decodeFillDataOrders(bytes memory data) + /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction. + /// @param transaction 0x transaction containing salt, signerAddress, and data. + /// @param orders Array of order structs containing order specifications. + /// @param txOrigin Required signer of Ethereum transaction calling this function. + /// @param transactionSignature Proof that the transaction has been signed by the signer. + /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires. + /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order. + function assertValidTransactionOrdersApproval( + LibZeroExTransaction.ZeroExTransaction memory transaction, + LibOrder.Order[] memory orders, + address txOrigin, + bytes memory transactionSignature, + uint256[] memory approvalExpirationTimeSeconds, + bytes[] memory approvalSignatures + ) internal - pure - returns (LibOrder.Order[] memory orders); + view; } diff --git a/contracts/coordinator/contracts/test/TestLibs.sol b/contracts/coordinator/contracts/test/TestLibs.sol deleted file mode 100644 index 8c615a5d42..0000000000 --- a/contracts/coordinator/contracts/test/TestLibs.sol +++ /dev/null @@ -1,61 +0,0 @@ -/* - - Copyright 2018 ZeroEx Intl. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -pragma solidity ^0.5.5; -pragma experimental "ABIEncoderV2"; - -import "../src/libs/LibConstants.sol"; -import "../src/libs/LibCoordinatorApproval.sol"; -import "../src/libs/LibZeroExTransaction.sol"; - - -// solhint-disable no-empty-blocks -contract TestLibs is - LibConstants, - LibCoordinatorApproval, - LibZeroExTransaction -{ - constructor (address _exchange) - public - LibConstants(_exchange) - {} - - /// @dev Calculated the EIP712 hash of the Coordinator approval mesasage using the domain separator of this contract. - /// @param approval Coordinator approval message containing the transaction hash, transaction signature, and expiration of the approval. - /// @return EIP712 hash of the Coordinator approval message with the domain separator of this contract. - function publicGetCoordinatorApprovalHash(CoordinatorApproval memory approval) - public - view - returns (bytes32 approvalHash) - { - approvalHash = getCoordinatorApprovalHash(approval); - return approvalHash; - } - - /// @dev Calculates the EIP712 hash of a 0x transaction using the domain separator of the Exchange contract. - /// @param transaction 0x transaction containing salt, signerAddress, and data. - /// @return EIP712 hash of the transaction with the domain separator of the Exchange contract. - function publicGetTransactionHash(ZeroExTransaction memory transaction) - public - view - returns (bytes32 transactionHash) - { - transactionHash = getTransactionHash(transaction); - return transactionHash; - } -} diff --git a/contracts/coordinator/contracts/test/TestMixins.sol b/contracts/coordinator/contracts/test/TestMixins.sol deleted file mode 100644 index cdadce171c..0000000000 --- a/contracts/coordinator/contracts/test/TestMixins.sol +++ /dev/null @@ -1,37 +0,0 @@ -/* - - Copyright 2018 ZeroEx Intl. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -pragma solidity ^0.5.5; -pragma experimental "ABIEncoderV2"; - -import "../src/libs/LibConstants.sol"; -import "../src/MixinSignatureValidator.sol"; -import "../src/MixinCoordinatorApprovalVerifier.sol"; - - -// solhint-disable no-empty-blocks -contract TestMixins is - LibConstants, - MixinSignatureValidator, - MixinCoordinatorApprovalVerifier -{ - constructor (address _exchange) - public - LibConstants(_exchange) - {} -} diff --git a/contracts/coordinator/package.json b/contracts/coordinator/package.json index b78e923e62..afc8a0adc3 100644 --- a/contracts/coordinator/package.json +++ b/contracts/coordinator/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-coordinator", - "version": "0.0.1", + "version": "1.1.0", "engines": { "node": ">=6.12" }, @@ -33,7 +33,7 @@ "lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol" }, "config": { - "abis": "./generated-artifacts/@(Coordinator|CoordinatorRegistry|TestLibs|TestMixins).json", + "abis": "./generated-artifacts/@(Coordinator|CoordinatorRegistry).json", "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually." }, "repository": { @@ -46,11 +46,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -67,18 +67,18 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-asset-proxy": "^1.0.9", - "@0x/contracts-erc20": "^1.0.9", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-asset-proxy": "^2.1.0", + "@0x/contracts-erc20": "^2.1.0", "@0x/contracts-exchange": "1.0.2", - "@0x/contracts-exchange-libs": "^1.1.3", - "@0x/contracts-utils": "^2.0.8", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/contracts-exchange-libs": "^2.1.0", + "@0x/contracts-utils": "^3.1.0", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11" }, diff --git a/contracts/coordinator/src/artifacts.ts b/contracts/coordinator/src/artifacts.ts index e32e231879..8276964486 100644 --- a/contracts/coordinator/src/artifacts.ts +++ b/contracts/coordinator/src/artifacts.ts @@ -7,11 +7,7 @@ import { ContractArtifact } from 'ethereum-types'; import * as Coordinator from '../generated-artifacts/Coordinator.json'; import * as CoordinatorRegistry from '../generated-artifacts/CoordinatorRegistry.json'; -import * as TestLibs from '../generated-artifacts/TestLibs.json'; -import * as TestMixins from '../generated-artifacts/TestMixins.json'; export const artifacts = { Coordinator: Coordinator as ContractArtifact, CoordinatorRegistry: CoordinatorRegistry as ContractArtifact, - TestLibs: TestLibs as ContractArtifact, - TestMixins: TestMixins as ContractArtifact, }; diff --git a/contracts/coordinator/src/wrappers.ts b/contracts/coordinator/src/wrappers.ts index d8e6cc9857..a88791dffa 100644 --- a/contracts/coordinator/src/wrappers.ts +++ b/contracts/coordinator/src/wrappers.ts @@ -5,5 +5,3 @@ */ export * from '../generated-wrappers/coordinator'; export * from '../generated-wrappers/coordinator_registry'; -export * from '../generated-wrappers/test_libs'; -export * from '../generated-wrappers/test_mixins'; diff --git a/contracts/coordinator/test/coordinator.ts b/contracts/coordinator/test/coordinator.ts index 6215213652..912d48d922 100644 --- a/contracts/coordinator/test/coordinator.ts +++ b/contracts/coordinator/test/coordinator.ts @@ -435,7 +435,7 @@ describe('Coordinator tests', () => { describe('cancels', () => { it('cancelOrder call should be successful without an approval', async () => { const orders = [await orderFactory.newSignedOrderAsync()]; - const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.CANCEL_ORDERS, orders); + const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.CANCEL_ORDER, orders); const transaction = makerTransactionFactory.newSignedTransaction(data); const transactionReceipt = await web3Wrapper.awaitTransactionSuccessAsync( await coordinatorContract.executeTransaction.sendTransactionAsync( diff --git a/contracts/coordinator/test/global_hooks.ts b/contracts/coordinator/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/coordinator/test/global_hooks.ts +++ b/contracts/coordinator/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/coordinator/test/libs.ts b/contracts/coordinator/test/libs.ts index 85291d3583..8c08f0ec59 100644 --- a/contracts/coordinator/test/libs.ts +++ b/contracts/coordinator/test/libs.ts @@ -4,14 +4,14 @@ import { transactionHashUtils } from '@0x/order-utils'; import { BigNumber } from '@0x/utils'; import * as chai from 'chai'; -import { artifacts, hashUtils, TestLibsContract } from '../src'; +import { artifacts, CoordinatorContract, hashUtils } from '../src'; chaiSetup.configure(); const expect = chai.expect; const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); describe('Libs tests', () => { - let testLibs: TestLibsContract; + let coordinatorContract: CoordinatorContract; const exchangeAddress = addressUtils.generatePseudoRandomAddress(); before(async () => { @@ -21,8 +21,8 @@ describe('Libs tests', () => { await blockchainLifecycle.revertAsync(); }); before(async () => { - testLibs = await TestLibsContract.deployFrom0xArtifactAsync( - artifacts.TestLibs, + coordinatorContract = await CoordinatorContract.deployFrom0xArtifactAsync( + artifacts.Coordinator, provider, txDefaults, exchangeAddress, @@ -44,7 +44,7 @@ describe('Libs tests', () => { data: '0x1234', }; const expectedTxHash = transactionHashUtils.getTransactionHashHex(tx); - const txHash = await testLibs.publicGetTransactionHash.callAsync(tx); + const txHash = await coordinatorContract.getTransactionHash.callAsync(tx); expect(expectedTxHash).to.eq(txHash); }); }); @@ -68,11 +68,11 @@ describe('Libs tests', () => { }; const expectedApprovalHash = hashUtils.getApprovalHashHex( signedTx, - testLibs.address, + coordinatorContract.address, txOrigin, approvalExpirationTimeSeconds, ); - const approvalHash = await testLibs.publicGetCoordinatorApprovalHash.callAsync(approval); + const approvalHash = await coordinatorContract.getCoordinatorApprovalHash.callAsync(approval); expect(expectedApprovalHash).to.eq(approvalHash); }); }); diff --git a/contracts/coordinator/test/mixins.ts b/contracts/coordinator/test/mixins.ts index a862791b0f..a500333048 100644 --- a/contracts/coordinator/test/mixins.ts +++ b/contracts/coordinator/test/mixins.ts @@ -16,7 +16,7 @@ import { BigNumber } from '@0x/utils'; import * as chai from 'chai'; import * as ethUtil from 'ethereumjs-util'; -import { ApprovalFactory, artifacts, constants, exchangeDataEncoder, TestMixinsContract } from '../src'; +import { ApprovalFactory, artifacts, constants, CoordinatorContract, exchangeDataEncoder } from '../src'; chaiSetup.configure(); const expect = chai.expect; @@ -26,7 +26,7 @@ describe('Mixins tests', () => { let transactionSignerAddress: string; let approvalSignerAddress1: string; let approvalSignerAddress2: string; - let mixins: TestMixinsContract; + let mixins: CoordinatorContract; let transactionFactory: TransactionFactory; let approvalFactory1: ApprovalFactory; let approvalFactory2: ApprovalFactory; @@ -40,8 +40,8 @@ describe('Mixins tests', () => { await blockchainLifecycle.revertAsync(); }); before(async () => { - mixins = await TestMixinsContract.deployFrom0xArtifactAsync( - artifacts.TestMixins, + mixins = await CoordinatorContract.deployFrom0xArtifactAsync( + artifacts.Coordinator, provider, txDefaults, exchangeAddress, @@ -135,6 +135,70 @@ describe('Mixins tests', () => { }); }); + describe('decodeOrdersFromFillData', () => { + for (const fnName of constants.SINGLE_FILL_FN_NAMES) { + it(`should correctly decode the orders for ${fnName} data`, async () => { + const orders = [defaultOrder]; + const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); + const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data); + const decodedSignedOrders = decodedOrders.map(order => ({ + ...order, + exchangeAddress: devConstants.NULL_ADDRESS, + signature: devConstants.NULL_BYTES, + })); + expect(orders).to.deep.eq(decodedSignedOrders); + }); + } + for (const fnName of constants.BATCH_FILL_FN_NAMES) { + it(`should correctly decode the orders for ${fnName} data`, async () => { + const orders = [defaultOrder, defaultOrder]; + const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); + const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data); + const decodedSignedOrders = decodedOrders.map(order => ({ + ...order, + exchangeAddress: devConstants.NULL_ADDRESS, + signature: devConstants.NULL_BYTES, + })); + expect(orders).to.deep.eq(decodedSignedOrders); + }); + } + for (const fnName of constants.MARKET_FILL_FN_NAMES) { + it(`should correctly decode the orders for ${fnName} data`, async () => { + const orders = [defaultOrder, defaultOrder]; + const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); + const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data); + const decodedSignedOrders = decodedOrders.map(order => ({ + ...order, + exchangeAddress: devConstants.NULL_ADDRESS, + signature: devConstants.NULL_BYTES, + })); + expect(orders).to.deep.eq(decodedSignedOrders); + }); + } + for (const fnName of [constants.CANCEL_ORDER, constants.BATCH_CANCEL_ORDERS, constants.CANCEL_ORDERS_UP_TO]) { + it(`should correctly decode the orders for ${fnName} data`, async () => { + const orders = [defaultOrder, defaultOrder]; + const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); + const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data); + const emptyArray: any[] = []; + expect(emptyArray).to.deep.eq(decodedOrders); + }); + } + it('should decode an empty array for invalid data', async () => { + const data = '0x0123456789'; + const decodedOrders = await mixins.decodeOrdersFromFillData.callAsync(data); + const emptyArray: any[] = []; + expect(emptyArray).to.deep.eq(decodedOrders); + }); + it('should revert if data is less than 4 bytes long', async () => { + const data = '0x010203'; + await expectContractCallFailedAsync( + mixins.decodeOrdersFromFillData.callAsync(data), + RevertReason.LibBytesGreaterOrEqualTo4LengthRequired, + ); + }); + }); + describe('Single order approvals', () => { for (const fnName of constants.SINGLE_FILL_FN_NAMES) { it(`Should be successful: function=${fnName}, caller=tx_signer, senderAddress=[verifier], approval_sig=[approver1], expiration=[valid]`, async () => { @@ -148,15 +212,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval.signature], - { from: transactionSignerAddress }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, transactionSignerAddress, @@ -181,15 +236,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval.signature], - { from: transactionSignerAddress }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, transactionSignerAddress, @@ -203,15 +249,6 @@ describe('Mixins tests', () => { const orders = [defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); const transaction = transactionFactory.newSignedTransaction(data); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - approvalSignerAddress1, - transaction.signature, - [], - [], - { from: approvalSignerAddress1 }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, approvalSignerAddress1, @@ -234,15 +271,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - approvalSignerAddress1, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval.signature], - { from: approvalSignerAddress1 }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, approvalSignerAddress1, @@ -256,15 +284,6 @@ describe('Mixins tests', () => { const orders = [defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); const transaction = transactionFactory.newSignedTransaction(data); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - approvalSignerAddress1, - transaction.signature, - [], - [], - { from: approvalSignerAddress1 }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, approvalSignerAddress1, @@ -288,18 +307,6 @@ describe('Mixins tests', () => { approvalExpirationTimeSeconds, ); const signature = `${approval.signature.slice(0, 4)}FFFFFFFF${approval.signature.slice(12)}`; - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [signature], - { from: transactionSignerAddress }, - ), - RevertReason.InvalidApprovalSignature, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -323,18 +330,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval.signature], - { from: transactionSignerAddress }, - ), - RevertReason.ApprovalExpired, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -358,18 +353,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval.signature], - { from: approvalSignerAddress2 }, - ), - RevertReason.InvalidOrigin, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -401,15 +384,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval.signature], - { from: transactionSignerAddress }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, transactionSignerAddress, @@ -433,15 +407,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval.signature], - { from: transactionSignerAddress }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, transactionSignerAddress, @@ -458,15 +423,6 @@ describe('Mixins tests', () => { })); const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); const transaction = transactionFactory.newSignedTransaction(data); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [], - [], - { from: transactionSignerAddress }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, transactionSignerAddress, @@ -487,15 +443,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval.signature], - { from: transactionSignerAddress }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, transactionSignerAddress, @@ -521,15 +468,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds, approvalExpirationTimeSeconds], - [approval1.signature, approval2.signature], - { from: transactionSignerAddress }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, transactionSignerAddress, @@ -543,15 +481,6 @@ describe('Mixins tests', () => { const orders = [defaultOrder, defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); const transaction = transactionFactory.newSignedTransaction(data); - await mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - approvalSignerAddress1, - transaction.signature, - [], - [], - { from: approvalSignerAddress1 }, - ); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, approvalSignerAddress1, @@ -572,18 +501,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval2.signature], - { from: approvalSignerAddress1 }, - ), - RevertReason.InvalidOrigin, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -600,18 +517,6 @@ describe('Mixins tests', () => { const orders = [defaultOrder, defaultOrder]; const data = exchangeDataEncoder.encodeOrdersToExchangeData(fnName, orders); const transaction = transactionFactory.newSignedTransaction(data); - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [], - [], - { from: transactionSignerAddress }, - ), - RevertReason.InvalidApprovalSignature, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -636,18 +541,6 @@ describe('Mixins tests', () => { approvalExpirationTimeSeconds, ); const signature = `${approval.signature.slice(0, 4)}FFFFFFFF${approval.signature.slice(12)}`; - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [signature], - { from: transactionSignerAddress }, - ), - RevertReason.InvalidApprovalSignature, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -677,18 +570,6 @@ describe('Mixins tests', () => { approvalExpirationTimeSeconds, ); const approvalSignature2 = `${approval2.signature.slice(0, 4)}FFFFFFFF${approval2.signature.slice(12)}`; - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds, approvalExpirationTimeSeconds], - [approval1.signature, approvalSignature2], - { from: transactionSignerAddress }, - ), - RevertReason.InvalidApprovalSignature, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -713,18 +594,6 @@ describe('Mixins tests', () => { approvalExpirationTimeSeconds, ); const approvalSignature2 = `${approval2.signature.slice(0, 4)}FFFFFFFF${approval2.signature.slice(12)}`; - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - approvalSignerAddress1, - transaction.signature, - [approvalExpirationTimeSeconds], - [approvalSignature2], - { from: approvalSignerAddress1 }, - ), - RevertReason.InvalidApprovalSignature, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -754,18 +623,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds2, ); - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds1, approvalExpirationTimeSeconds2], - [approval1.signature, approval2.signature], - { from: transactionSignerAddress }, - ), - RevertReason.ApprovalExpired, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -789,18 +646,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - approvalSignerAddress1, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval2.signature], - { from: approvalSignerAddress1 }, - ), - RevertReason.ApprovalExpired, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -824,18 +669,6 @@ describe('Mixins tests', () => { transactionSignerAddress, approvalExpirationTimeSeconds, ); - expectContractCallFailedAsync( - mixins.assertValidTransactionOrdersApproval.callAsync( - transaction, - orders, - transactionSignerAddress, - transaction.signature, - [approvalExpirationTimeSeconds], - [approval1.signature], - { from: approvalSignerAddress2 }, - ), - RevertReason.InvalidOrigin, - ); expectContractCallFailedAsync( mixins.assertValidCoordinatorApprovals.callAsync( transaction, @@ -851,9 +684,9 @@ describe('Mixins tests', () => { } }); describe('cancels', () => { - it('should allow the tx signer to call `cancelOrders` without approval', async () => { + it('should allow the tx signer to call `cancelOrder` without approval', async () => { const orders = [defaultOrder]; - const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.CANCEL_ORDERS, orders); + const data = exchangeDataEncoder.encodeOrdersToExchangeData(constants.CANCEL_ORDER, orders); const transaction = transactionFactory.newSignedTransaction(data); await mixins.assertValidCoordinatorApprovals.callAsync( transaction, diff --git a/contracts/coordinator/test/utils/constants.ts b/contracts/coordinator/test/utils/constants.ts index e83a636418..fd52a86b64 100644 --- a/contracts/coordinator/test/utils/constants.ts +++ b/contracts/coordinator/test/utils/constants.ts @@ -5,7 +5,7 @@ export const constants = { BATCH_FILL_FN_NAMES: ['batchFillOrders', 'batchFillOrKillOrders', 'batchFillOrdersNoThrow'], MARKET_FILL_FN_NAMES: ['marketBuyOrders', 'marketBuyOrdersNoThrow', 'marketSellOrders', 'marketSellOrdersNoThrow'], MATCH_ORDERS: 'matchOrders', - CANCEL_ORDERS: 'cancelOrders', + CANCEL_ORDER: 'cancelOrder', BATCH_CANCEL_ORDERS: 'batchCancelOrders', CANCEL_ORDERS_UP_TO: 'cancelOrdersUpTo', TIME_BUFFER: new BigNumber(1000), diff --git a/contracts/coordinator/test/utils/exchange_data_encoder.ts b/contracts/coordinator/test/utils/exchange_data_encoder.ts index 784c009671..8622331b6e 100644 --- a/contracts/coordinator/test/utils/exchange_data_encoder.ts +++ b/contracts/coordinator/test/utils/exchange_data_encoder.ts @@ -37,7 +37,7 @@ export const exchangeDataEncoder = { orders[0].signature, orders[1].signature, ); - } else if (fnName === constants.CANCEL_ORDERS) { + } else if (fnName === constants.CANCEL_ORDER) { data = exchangeInstance.cancelOrder.getABIEncodedTransactionData(orders[0]); } else if (fnName === constants.BATCH_CANCEL_ORDERS) { data = exchangeInstance.batchCancelOrders.getABIEncodedTransactionData(orders); diff --git a/contracts/coordinator/test/utils/hash_utils.ts b/contracts/coordinator/test/utils/hash_utils.ts index caba4cf3c8..e6a128229d 100644 --- a/contracts/coordinator/test/utils/hash_utils.ts +++ b/contracts/coordinator/test/utils/hash_utils.ts @@ -1,5 +1,4 @@ -import { eip712Utils, transactionHashUtils } from '@0x/order-utils'; -import { constants } from '@0x/order-utils/lib/src/constants'; +import { eip712Utils } from '@0x/order-utils'; import { SignedZeroExTransaction } from '@0x/types'; import { BigNumber, signTypedDataUtils } from '@0x/utils'; import * as _ from 'lodash'; @@ -11,25 +10,11 @@ export const hashUtils = { txOrigin: string, approvalExpirationTimeSeconds: BigNumber, ): Buffer { - const domain = { - name: constants.COORDINATOR_DOMAIN_NAME, - version: constants.COORDINATOR_DOMAIN_VERSION, + const typedData = eip712Utils.createCoordinatorApprovalTypedData( + transaction, verifyingContractAddress, - }; - const transactionHash = transactionHashUtils.getTransactionHashHex(transaction); - const approval = { txOrigin, - transactionHash, - transactionSignature: transaction.signature, - approvalExpirationTimeSeconds: approvalExpirationTimeSeconds.toString(), - }; - const typedData = eip712Utils.createTypedData( - constants.COORDINATOR_APPROVAL_SCHEMA.name, - { - CoordinatorApproval: constants.COORDINATOR_APPROVAL_SCHEMA.parameters, - }, - approval, - domain, + approvalExpirationTimeSeconds, ); const hashBuffer = signTypedDataUtils.generateTypedDataHash(typedData); return hashBuffer; diff --git a/contracts/coordinator/tsconfig.json b/contracts/coordinator/tsconfig.json index 9de6c34a60..ba2c48b6cd 100644 --- a/contracts/coordinator/tsconfig.json +++ b/contracts/coordinator/tsconfig.json @@ -2,11 +2,6 @@ "extends": "../../tsconfig", "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true }, "include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"], - "files": [ - "generated-artifacts/Coordinator.json", - "generated-artifacts/CoordinatorRegistry.json", - "generated-artifacts/TestLibs.json", - "generated-artifacts/TestMixins.json" - ], + "files": ["generated-artifacts/Coordinator.json", "generated-artifacts/CoordinatorRegistry.json"], "exclude": ["./deploy/solc/solc_bin"] } diff --git a/contracts/erc1155/CHANGELOG.json b/contracts/erc1155/CHANGELOG.json index 6eaa0ae9fd..4a52aa85ff 100644 --- a/contracts/erc1155/CHANGELOG.json +++ b/contracts/erc1155/CHANGELOG.json @@ -1,4 +1,23 @@ [ + { + "version": "1.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, + { + "timestamp": 1553091633, + "version": "1.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "1.0.0", "changes": [ diff --git a/contracts/erc1155/CHANGELOG.md b/contracts/erc1155/CHANGELOG.md index 1004e94271..91cafbe214 100644 --- a/contracts/erc1155/CHANGELOG.md +++ b/contracts/erc1155/CHANGELOG.md @@ -4,3 +4,15 @@ Edit the package's CHANGELOG.json file only. --> CHANGELOG + +## v1.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v1.0.1 - _March 20, 2019_ + + * Dependencies updated + +## v1.0.0 - _Invalid date_ + + * Created ERC1155 contracts package (#1657) diff --git a/contracts/erc1155/compiler.json b/contracts/erc1155/compiler.json index e545f46b08..2c3318284a 100644 --- a/contracts/erc1155/compiler.json +++ b/contracts/erc1155/compiler.json @@ -3,7 +3,7 @@ "contractsDir": "contracts", "useDockerisedSolc": true, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000 }, "outputSelection": { "*": { diff --git a/contracts/erc1155/package.json b/contracts/erc1155/package.json index 28125dd162..b5e0ba99d8 100644 --- a/contracts/erc1155/package.json +++ b/contracts/erc1155/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-erc1155", - "version": "1.0.0", + "version": "1.1.0", "engines": { "node": ">=6.12" }, @@ -46,11 +46,10 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -67,13 +66,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-utils": "^2.0.8", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/contracts-utils": "^3.1.0", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/erc1155/test/global_hooks.ts b/contracts/erc1155/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/erc1155/test/global_hooks.ts +++ b/contracts/erc1155/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/erc20/CHANGELOG.json b/contracts/erc20/CHANGELOG.json index 7d2d6d8218..812564a559 100644 --- a/contracts/erc20/CHANGELOG.json +++ b/contracts/erc20/CHANGELOG.json @@ -1,16 +1,23 @@ [ + { + "version": "2.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "2.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Upgrade contracts to Solidity 0.5.5", "pr": 1682 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/erc20/CHANGELOG.md b/contracts/erc20/CHANGELOG.md index 59748641f0..203bd1be0f 100644 --- a/contracts/erc20/CHANGELOG.md +++ b/contracts/erc20/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v2.0.0 - _March 20, 2019_ + + * Upgrade contracts to Solidity 0.5.5 (#1682) + ## v1.0.9 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/erc20/compiler.json b/contracts/erc20/compiler.json index 714ee44df9..c84caf47f1 100644 --- a/contracts/erc20/compiler.json +++ b/contracts/erc20/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, diff --git a/contracts/erc20/package.json b/contracts/erc20/package.json index 3725d02b78..d742904029 100644 --- a/contracts/erc20/package.json +++ b/contracts/erc20/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-erc20", - "version": "1.0.9", + "version": "2.1.0", "engines": { "node": ">=6.12" }, @@ -46,11 +46,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -67,14 +67,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-exchange-libs": "^1.1.3", - "@0x/contracts-utils": "^2.0.8", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-exchange-libs": "^2.1.0", + "@0x/contracts-utils": "^3.1.0", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/erc20/test/global_hooks.ts b/contracts/erc20/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/erc20/test/global_hooks.ts +++ b/contracts/erc20/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/erc721/CHANGELOG.json b/contracts/erc721/CHANGELOG.json index f7cfc8b6b5..26547ae1d8 100644 --- a/contracts/erc721/CHANGELOG.json +++ b/contracts/erc721/CHANGELOG.json @@ -1,16 +1,23 @@ [ + { + "version": "2.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "2.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Upgrade contracts to Solidity 0.5.5", "pr": 1682 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/erc721/CHANGELOG.md b/contracts/erc721/CHANGELOG.md index 1c586ff337..912401de5d 100644 --- a/contracts/erc721/CHANGELOG.md +++ b/contracts/erc721/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v2.0.0 - _March 20, 2019_ + + * Upgrade contracts to Solidity 0.5.5 (#1682) + ## v1.0.9 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/erc721/compiler.json b/contracts/erc721/compiler.json index d7294e62ae..a3b8f417d5 100644 --- a/contracts/erc721/compiler.json +++ b/contracts/erc721/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, diff --git a/contracts/erc721/package.json b/contracts/erc721/package.json index 4fd19b07c9..1353374fca 100644 --- a/contracts/erc721/package.json +++ b/contracts/erc721/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-erc721", - "version": "1.0.9", + "version": "2.1.0", "engines": { "node": ">=6.12" }, @@ -46,11 +46,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -67,13 +67,13 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-utils": "^2.0.8", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-utils": "^3.1.0", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/erc721/test/global_hooks.ts b/contracts/erc721/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/erc721/test/global_hooks.ts +++ b/contracts/erc721/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/exchange-forwarder/CHANGELOG.json b/contracts/exchange-forwarder/CHANGELOG.json index 50d4375ca1..c0486759d4 100644 --- a/contracts/exchange-forwarder/CHANGELOG.json +++ b/contracts/exchange-forwarder/CHANGELOG.json @@ -1,16 +1,23 @@ [ + { + "version": "2.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "2.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Do not reexport external dependencies", "pr": 1682 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/exchange-forwarder/CHANGELOG.md b/contracts/exchange-forwarder/CHANGELOG.md index 61afba9d11..61dd06d75c 100644 --- a/contracts/exchange-forwarder/CHANGELOG.md +++ b/contracts/exchange-forwarder/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v2.0.0 - _March 20, 2019_ + + * Do not reexport external dependencies (#1682) + ## v1.0.9 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/exchange-forwarder/compiler.json b/contracts/exchange-forwarder/compiler.json index deb76ddfa8..d49cd34b7d 100644 --- a/contracts/exchange-forwarder/compiler.json +++ b/contracts/exchange-forwarder/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, diff --git a/contracts/exchange-forwarder/package.json b/contracts/exchange-forwarder/package.json index 31777c0df0..905da9f2b5 100644 --- a/contracts/exchange-forwarder/package.json +++ b/contracts/exchange-forwarder/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-exchange-forwarder", - "version": "1.0.9", + "version": "2.1.0", "engines": { "node": ">=6.12" }, @@ -46,12 +46,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contract-wrappers": "^8.0.3", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contract-wrappers": "^8.0.5", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -68,19 +68,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-asset-proxy": "^1.0.9", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-asset-proxy": "^2.1.0", "@0x/contracts-erc20": "1.0.8", "@0x/contracts-erc721": "1.0.8", "@0x/contracts-exchange": "1.0.2", "@0x/contracts-exchange-libs": "1.0.2", "@0x/contracts-utils": "2.0.1", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/exchange-forwarder/test/global_hooks.ts b/contracts/exchange-forwarder/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/exchange-forwarder/test/global_hooks.ts +++ b/contracts/exchange-forwarder/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/exchange-libs/CHANGELOG.json b/contracts/exchange-libs/CHANGELOG.json index 23d12e531d..6fbf4e3c12 100644 --- a/contracts/exchange-libs/CHANGELOG.json +++ b/contracts/exchange-libs/CHANGELOG.json @@ -1,16 +1,23 @@ [ + { + "version": "2.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "2.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Upgrade contracts to Solidity 0.5.5", "pr": 1682 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/exchange-libs/CHANGELOG.md b/contracts/exchange-libs/CHANGELOG.md index 64aa74d546..6e3be33a21 100644 --- a/contracts/exchange-libs/CHANGELOG.md +++ b/contracts/exchange-libs/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v2.0.0 - _March 20, 2019_ + + * Upgrade contracts to Solidity 0.5.5 (#1682) + ## v1.1.3 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/exchange-libs/compiler.json b/contracts/exchange-libs/compiler.json index 8523e1155e..fed143589c 100644 --- a/contracts/exchange-libs/compiler.json +++ b/contracts/exchange-libs/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, diff --git a/contracts/exchange-libs/package.json b/contracts/exchange-libs/package.json index e779bd9b58..79e4eb7233 100644 --- a/contracts/exchange-libs/package.json +++ b/contracts/exchange-libs/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-exchange-libs", - "version": "1.1.3", + "version": "2.1.0", "engines": { "node": ">=6.12" }, @@ -46,11 +46,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/libs/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -67,14 +67,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-utils": "^2.0.8", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-utils": "^3.1.0", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/exchange-libs/test/global_hooks.ts b/contracts/exchange-libs/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/exchange-libs/test/global_hooks.ts +++ b/contracts/exchange-libs/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/exchange/CHANGELOG.json b/contracts/exchange/CHANGELOG.json index 76bad01b67..f66cc2e00a 100644 --- a/contracts/exchange/CHANGELOG.json +++ b/contracts/exchange/CHANGELOG.json @@ -1,11 +1,17 @@ [ + { + "version": "2.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "2.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Do not reexport external dependencies", "pr": 1682 @@ -13,8 +19,13 @@ { "note": "Upgrade contracts to Solidity 0.5.5", "pr": 1682 + }, + { + "note": "Integration testing for ERC1155Proxy", + "pr": 1673 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/exchange/CHANGELOG.md b/contracts/exchange/CHANGELOG.md index 725c237289..70b8e2afe2 100644 --- a/contracts/exchange/CHANGELOG.md +++ b/contracts/exchange/CHANGELOG.md @@ -5,6 +5,16 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v2.0.0 - _March 20, 2019_ + + * Do not reexport external dependencies (#1682) + * Upgrade contracts to Solidity 0.5.5 (#1682) + * Integration testing for ERC1155Proxy (#1673) + ## v1.0.9 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/exchange/compiler.json b/contracts/exchange/compiler.json index dfbf86a0bc..c1f8663d37 100644 --- a/contracts/exchange/compiler.json +++ b/contracts/exchange/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, diff --git a/contracts/exchange/package.json b/contracts/exchange/package.json index 69ba190525..6f4f51bae6 100644 --- a/contracts/exchange/package.json +++ b/contracts/exchange/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-exchange", - "version": "1.0.9", + "version": "2.1.0", "engines": { "node": ">=6.12" }, @@ -46,11 +46,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/protocol/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -67,18 +67,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-asset-proxy": "^1.0.9", - "@0x/contracts-erc20": "^1.0.9", - "@0x/contracts-erc721": "^1.0.9", - "@0x/contracts-exchange-libs": "^1.1.3", - "@0x/contracts-utils": "^2.0.8", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-asset-proxy": "^2.1.0", + "@0x/contracts-erc1155": "^1.1.0", + "@0x/contracts-erc20": "^2.1.0", + "@0x/contracts-erc721": "^2.1.0", + "@0x/contracts-exchange-libs": "^2.1.0", + "@0x/contracts-utils": "^3.1.0", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11" }, diff --git a/contracts/exchange/test/core.ts b/contracts/exchange/test/core.ts index 7acb4e2aba..ff6874c0ea 100644 --- a/contracts/exchange/test/core.ts +++ b/contracts/exchange/test/core.ts @@ -1,11 +1,13 @@ import { artifacts as proxyArtifacts, + ERC1155ProxyWrapper, ERC20ProxyContract, ERC20Wrapper, ERC721ProxyContract, ERC721Wrapper, MultiAssetProxyContract, } from '@0x/contracts-asset-proxy'; +import { ERC1155MintableContract } from '@0x/contracts-erc1155'; import { artifacts as erc20Artifacts, DummyERC20TokenContract, @@ -36,6 +38,7 @@ import { LogWithDecodedArgs } from 'ethereum-types'; import ethUtil = require('ethereumjs-util'); import * as _ from 'lodash'; +import { Erc1155Wrapper } from '../../erc1155/lib/src'; import { artifacts, ExchangeCancelEventArgs, @@ -64,19 +67,26 @@ describe('Exchange core', () => { let exchange: ExchangeContract; let erc20Proxy: ERC20ProxyContract; let erc721Proxy: ERC721ProxyContract; + let erc1155Proxy: ERC721ProxyContract; let multiAssetProxy: MultiAssetProxyContract; let maliciousWallet: TestStaticCallReceiverContract; let maliciousValidator: TestStaticCallReceiverContract; + let erc1155Contract: ERC1155MintableContract; let signedOrder: SignedOrder; let erc20Balances: ERC20BalancesByOwner; let exchangeWrapper: ExchangeWrapper; let erc20Wrapper: ERC20Wrapper; let erc721Wrapper: ERC721Wrapper; + let erc1155Wrapper: Erc1155Wrapper; + let erc1155ProxyWrapper: ERC1155ProxyWrapper; let orderFactory: OrderFactory; let erc721MakerAssetIds: BigNumber[]; let erc721TakerAssetIds: BigNumber[]; + let erc1155FungibleTokens: BigNumber[]; + let erc1155NonFungibleTokensOwnedByMaker: BigNumber[]; + let erc1155NonFungibleTokensOwnedByTaker: BigNumber[]; let defaultMakerAssetAddress: string; let defaultTakerAssetAddress: string; @@ -93,6 +103,7 @@ describe('Exchange core', () => { erc20Wrapper = new ERC20Wrapper(provider, usedAddresses, owner); erc721Wrapper = new ERC721Wrapper(provider, usedAddresses, owner); + erc1155ProxyWrapper = new ERC1155ProxyWrapper(provider, usedAddresses, owner); // Deploy AssetProxies, Exchange, tokens, and malicious contracts erc20Proxy = await erc20Wrapper.deployProxyAsync(); @@ -108,6 +119,9 @@ describe('Exchange core', () => { constants.DUMMY_TOKEN_DECIMALS, ); [erc721Token] = await erc721Wrapper.deployDummyTokensAsync(); + erc1155Proxy = await erc1155ProxyWrapper.deployProxyAsync(); + [erc1155Wrapper] = await erc1155ProxyWrapper.deployDummyContractsAsync(); + erc1155Contract = erc1155Wrapper.getContract(); exchange = await ExchangeContract.deployFrom0xArtifactAsync( artifacts.Exchange, provider, @@ -154,6 +168,20 @@ describe('Exchange core', () => { constants.AWAIT_TRANSACTION_MINED_MS, ); + // Configure ERC1155Proxy + await web3Wrapper.awaitTransactionSuccessAsync( + await erc1155Proxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { + from: owner, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + await web3Wrapper.awaitTransactionSuccessAsync( + await erc1155Proxy.addAuthorizedAddress.sendTransactionAsync(multiAssetProxy.address, { + from: owner, + }), + constants.AWAIT_TRANSACTION_MINED_MS, + ); + // Configure MultiAssetProxy await web3Wrapper.awaitTransactionSuccessAsync( await multiAssetProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { @@ -178,6 +206,7 @@ describe('Exchange core', () => { exchangeWrapper = new ExchangeWrapper(exchange, provider); await exchangeWrapper.registerAssetProxyAsync(erc20Proxy.address, owner); await exchangeWrapper.registerAssetProxyAsync(erc721Proxy.address, owner); + await exchangeWrapper.registerAssetProxyAsync(erc1155Proxy.address, owner); await exchangeWrapper.registerAssetProxyAsync(multiAssetProxy.address, owner); // Configure ERC20 tokens @@ -189,6 +218,23 @@ describe('Exchange core', () => { erc721MakerAssetIds = erc721Balances[makerAddress][erc721Token.address]; erc721TakerAssetIds = erc721Balances[takerAddress][erc721Token.address]; + // Configure ERC1155 tokens + await erc1155ProxyWrapper.setBalancesAndAllowancesAsync(); + erc1155FungibleTokens = erc1155ProxyWrapper.getFungibleTokenIds(); + const nonFungibleTokens = erc1155ProxyWrapper.getNonFungibleTokenIds(); + const tokenBalances = await erc1155ProxyWrapper.getBalancesAsync(); + erc1155NonFungibleTokensOwnedByMaker = []; + erc1155NonFungibleTokensOwnedByTaker = []; + _.each(nonFungibleTokens, (nonFungibleToken: BigNumber) => { + const nonFungibleTokenAsString = nonFungibleToken.toString(); + const nonFungibleTokenHeldByMaker = + tokenBalances.nonFungible[makerAddress][erc1155Contract.address][nonFungibleTokenAsString][0]; + erc1155NonFungibleTokensOwnedByMaker.push(nonFungibleTokenHeldByMaker); + const nonFungibleTokenHeldByTaker = + tokenBalances.nonFungible[takerAddress][erc1155Contract.address][nonFungibleTokenAsString][0]; + erc1155NonFungibleTokensOwnedByTaker.push(nonFungibleTokenHeldByTaker); + }); + // Configure order defaults defaultMakerAssetAddress = erc20TokenA.address; defaultTakerAssetAddress = erc20TokenB.address; @@ -1040,6 +1086,435 @@ describe('Exchange core', () => { ); }); }); + describe('Testing exchange of erc1155 assets', () => { + it('should allow a single fungible erc1155 asset to be exchanged for another', async () => { + // setup test parameters + const tokenHolders = [makerAddress, takerAddress]; + const makerAssetsToTransfer = erc1155FungibleTokens.slice(0, 1); + const takerAssetsToTransfer = erc1155FungibleTokens.slice(1, 2); + const makerValuesToTransfer = [new BigNumber(500)]; + const takerValuesToTransfer = [new BigNumber(200)]; + const tokensToTransfer = makerAssetsToTransfer.concat(takerAssetsToTransfer); + const makerAssetAmount = new BigNumber(1); + const takerAssetAmount = new BigNumber(1); + const totalMakerValuesTransferred = _.map(makerValuesToTransfer, (value: BigNumber) => { + return value.times(makerAssetAmount); + }); + const totalTakerValuesTransferred = _.map(takerValuesToTransfer, (value: BigNumber) => { + return value.times(takerAssetAmount); + }); + const receiverCallbackData = '0x'; + const makerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + makerAssetsToTransfer, + makerValuesToTransfer, + receiverCallbackData, + ); + const takerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + takerAssetsToTransfer, + takerValuesToTransfer, + receiverCallbackData, + ); + signedOrder = await orderFactory.newSignedOrderAsync({ + makerAssetData, + takerAssetData, + makerAssetAmount, + takerAssetAmount, + makerFee: constants.ZERO_AMOUNT, + takerFee: constants.ZERO_AMOUNT, + }); + const takerAssetFillAmount = new BigNumber(1); + // check balances before transfer + const expectedInitialBalances = [ + // makerAddress / makerToken + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / takerToken + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / makerToken + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / takerToken + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // execute transfer + await exchangeWrapper.fillOrderAsync(signedOrder, takerAddress, { + takerAssetFillAmount, + }); + // check balances after transfer + const expectedFinalBalances = [ + // makerAddress / makerToken + expectedInitialBalances[0].minus(totalMakerValuesTransferred[0]), + // makerAddress / takerToken + expectedInitialBalances[1].plus(totalTakerValuesTransferred[0]), + // takerAddress / makerToken + expectedInitialBalances[2].plus(totalMakerValuesTransferred[0]), + // takerAddress / takerToken + expectedInitialBalances[3].minus(totalTakerValuesTransferred[0]), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); + it('should allow a single non-fungible erc1155 asset to be exchanged for another', async () => { + // setup test parameters + const tokenHolders = [makerAddress, takerAddress]; + const makerAssetsToTransfer = erc1155NonFungibleTokensOwnedByMaker.slice(0, 1); + const takerAssetsToTransfer = erc1155NonFungibleTokensOwnedByTaker.slice(0, 1); + const makerValuesToTransfer = [new BigNumber(1)]; + const takerValuesToTransfer = [new BigNumber(1)]; + const tokensToTransfer = makerAssetsToTransfer.concat(takerAssetsToTransfer); + const makerAssetAmount = new BigNumber(1); + const takerAssetAmount = new BigNumber(1); + const totalMakerValuesTransferred = _.map(makerValuesToTransfer, (value: BigNumber) => { + return value.times(makerAssetAmount); + }); + const totalTakerValuesTransferred = _.map(takerValuesToTransfer, (value: BigNumber) => { + return value.times(takerAssetAmount); + }); + const receiverCallbackData = '0x'; + const makerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + makerAssetsToTransfer, + makerValuesToTransfer, + receiverCallbackData, + ); + const takerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + takerAssetsToTransfer, + takerValuesToTransfer, + receiverCallbackData, + ); + signedOrder = await orderFactory.newSignedOrderAsync({ + makerAssetData, + takerAssetData, + makerAssetAmount, + takerAssetAmount, + makerFee: constants.ZERO_AMOUNT, + takerFee: constants.ZERO_AMOUNT, + }); + const takerAssetFillAmount = new BigNumber(1); + // check balances before transfer + const nftOwnerBalance = new BigNumber(1); + const nftNotOwnerBalance = new BigNumber(0); + const expectedInitialBalances = [ + // makerAddress / makerToken + nftOwnerBalance, + // makerAddress / takerToken + nftNotOwnerBalance, + // takerAddress / makerToken + nftNotOwnerBalance, + // takerAddress / takerToken + nftOwnerBalance, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // execute transfer + await exchangeWrapper.fillOrderAsync(signedOrder, takerAddress, { + takerAssetFillAmount, + }); + // check balances after transfer + const expectedFinalBalances = [ + // makerAddress / makerToken + expectedInitialBalances[0].minus(totalMakerValuesTransferred[0]), + // makerAddress / takerToken + expectedInitialBalances[1].plus(totalTakerValuesTransferred[0]), + // takerAddress / makerToken + expectedInitialBalances[2].plus(totalMakerValuesTransferred[0]), + // takerAddress / takerToken + expectedInitialBalances[3].minus(totalTakerValuesTransferred[0]), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); + it('should allow multiple erc1155 assets to be exchanged for a single asset', async () => { + // setup test parameters + const tokenHolders = [makerAddress, takerAddress]; + const makerAssetsToTransfer = erc1155FungibleTokens.slice(0, 3); + const takerAssetsToTransfer = erc1155NonFungibleTokensOwnedByTaker.slice(0, 1); + const makerValuesToTransfer = [new BigNumber(500), new BigNumber(700), new BigNumber(900)]; + const takerValuesToTransfer = [new BigNumber(1)]; + const tokensToTransfer = makerAssetsToTransfer.concat(takerAssetsToTransfer); + const makerAssetAmount = new BigNumber(1); + const takerAssetAmount = new BigNumber(1); + const totalMakerValuesTransferred = _.map(makerValuesToTransfer, (value: BigNumber) => { + return value.times(makerAssetAmount); + }); + const totalTakerValuesTransferred = _.map(takerValuesToTransfer, (value: BigNumber) => { + return value.times(takerAssetAmount); + }); + const receiverCallbackData = '0x'; + const makerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + makerAssetsToTransfer, + makerValuesToTransfer, + receiverCallbackData, + ); + const takerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + takerAssetsToTransfer, + takerValuesToTransfer, + receiverCallbackData, + ); + signedOrder = await orderFactory.newSignedOrderAsync({ + makerAssetData, + takerAssetData, + makerAssetAmount, + takerAssetAmount, + makerFee: constants.ZERO_AMOUNT, + takerFee: constants.ZERO_AMOUNT, + }); + const takerAssetFillAmount = new BigNumber(1); + // check balances before transfer + const nftOwnerBalance = new BigNumber(1); + const nftNotOwnerBalance = new BigNumber(0); + const expectedInitialBalances = [ + // makerAddress / makerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / makerToken[1] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / makerToken[2] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / takerToken + nftNotOwnerBalance, + // takerAddress / makerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / makerToken[1] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / makerToken[2] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / takerToken + nftOwnerBalance, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // execute transfer + await exchangeWrapper.fillOrderAsync(signedOrder, takerAddress, { + takerAssetFillAmount, + }); + // check balances after transfer + const expectedFinalBalances = [ + // makerAddress / makerToken[0] + expectedInitialBalances[0].minus(totalMakerValuesTransferred[0]), + // makerAddress / makerToken[1] + expectedInitialBalances[1].minus(totalMakerValuesTransferred[1]), + // makerAddress / makerToken[2] + expectedInitialBalances[2].minus(totalMakerValuesTransferred[2]), + // makerAddress / takerToken + expectedInitialBalances[3].plus(totalTakerValuesTransferred[0]), + // takerAddress / makerToken[0] + expectedInitialBalances[4].plus(totalMakerValuesTransferred[0]), + // takerAddress / makerToken[1] + expectedInitialBalances[5].plus(totalMakerValuesTransferred[1]), + // takerAddress / makerToken[2] + expectedInitialBalances[6].plus(totalMakerValuesTransferred[2]), + // takerAddress / takerToken + expectedInitialBalances[7].minus(totalTakerValuesTransferred[0]), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); + it('should allow multiple erc1155 assets to be exchanged for multiple erc1155 assets, mixed fungible/non-fungible', async () => { + // setup test parameters + // the maker is trading two fungibles & one non-fungible + // the taker is trading one fungible & two non-fungibles + const tokenHolders = [makerAddress, takerAddress]; + const makerFungibleAssetsToTransfer = erc1155FungibleTokens.slice(0, 2); + const makerNonFungibleAssetsToTransfer = erc1155NonFungibleTokensOwnedByMaker.slice(0, 1); + const makerAssetsToTransfer = makerFungibleAssetsToTransfer.concat(makerNonFungibleAssetsToTransfer); + const takerFungibleAssetsToTransfer = erc1155FungibleTokens.slice(2, 3); + const takerNonFungibleAssetsToTransfer = erc1155NonFungibleTokensOwnedByTaker.slice(0, 2); + const takerAssetsToTransfer = takerFungibleAssetsToTransfer.concat(takerNonFungibleAssetsToTransfer); + const makerValuesToTransfer = [new BigNumber(500), new BigNumber(700), new BigNumber(1)]; + const takerValuesToTransfer = [new BigNumber(900), new BigNumber(1), new BigNumber(1)]; + const tokensToTransfer = makerAssetsToTransfer.concat(takerAssetsToTransfer); + const makerAssetAmount = new BigNumber(1); + const takerAssetAmount = new BigNumber(1); + const totalMakerValuesTransferred = _.map(makerValuesToTransfer, (value: BigNumber) => { + return value.times(makerAssetAmount); + }); + const totalTakerValuesTransferred = _.map(takerValuesToTransfer, (value: BigNumber) => { + return value.times(takerAssetAmount); + }); + const receiverCallbackData = '0x'; + const makerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + makerAssetsToTransfer, + makerValuesToTransfer, + receiverCallbackData, + ); + const takerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + takerAssetsToTransfer, + takerValuesToTransfer, + receiverCallbackData, + ); + signedOrder = await orderFactory.newSignedOrderAsync({ + makerAssetData, + takerAssetData, + makerAssetAmount, + takerAssetAmount, + makerFee: constants.ZERO_AMOUNT, + takerFee: constants.ZERO_AMOUNT, + }); + const takerAssetFillAmount = new BigNumber(1); + // check balances before transfer + const nftOwnerBalance = new BigNumber(1); + const nftNotOwnerBalance = new BigNumber(0); + const expectedInitialBalances = [ + // makerAddress / makerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / makerToken[1] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / makerToken[2] + nftOwnerBalance, + // makerAddress / takerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / takerToken[1] + nftNotOwnerBalance, + // makerAddress / takerToken[2] + nftNotOwnerBalance, + // takerAddress / makerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / makerToken[1] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / makerToken[2] + nftNotOwnerBalance, + // takerAddress / takerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / takerToken[1] + nftOwnerBalance, + // takerAddress / takerToken[2] + nftOwnerBalance, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // execute transfer + await exchangeWrapper.fillOrderAsync(signedOrder, takerAddress, { + takerAssetFillAmount, + }); + // check balances after transfer + const expectedFinalBalances = [ + // makerAddress / makerToken[0] + expectedInitialBalances[0].minus(totalMakerValuesTransferred[0]), + // makerAddress / makerToken[1] + expectedInitialBalances[1].minus(totalMakerValuesTransferred[1]), + // makerAddress / makerToken[2] + expectedInitialBalances[2].minus(totalMakerValuesTransferred[2]), + // makerAddress / takerToken[0] + expectedInitialBalances[3].plus(totalTakerValuesTransferred[0]), + // makerAddress / takerToken[1] + expectedInitialBalances[4].plus(totalTakerValuesTransferred[1]), + // makerAddress / takerToken[2] + expectedInitialBalances[5].plus(totalTakerValuesTransferred[2]), + // takerAddress / makerToken[0] + expectedInitialBalances[6].plus(totalMakerValuesTransferred[0]), + // takerAddress / makerToken[1] + expectedInitialBalances[7].plus(totalMakerValuesTransferred[1]), + // takerAddress / makerToken[2] + expectedInitialBalances[8].plus(totalMakerValuesTransferred[2]), + // takerAddress / takerToken[0] + expectedInitialBalances[9].minus(totalTakerValuesTransferred[0]), + // takerAddress / takerToken[1] + expectedInitialBalances[10].minus(totalTakerValuesTransferred[1]), + // takerAddress / takerToken[2] + expectedInitialBalances[11].minus(totalTakerValuesTransferred[2]), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + }); + it('should allow an order exchanging erc1155 assets to be partially filled', async () => { + // NOTICE: + // As-per the eip1155 standard, there is no way to distinguish between a fungible or non-fungible erc1155 assets. + // Hence we cannot force partial fills to fail if there is a non-fungible asset (which should be fill or kill). + // We considered encoding whether an asset is fungible/non-fungible in erc1155 assetData, but + // this is no more robust than a simple check by the client. Enforcing this at the smart contract level + // is something that could be done with the upcoming static call proxy. + // + // setup test parameters + // the maker is trading two fungibles and the taker is trading one fungible + // note that this will result in a partial fill because the `takerAssetAmount` + // less than the `takerAssetAmount` of the order. + const takerAssetFillAmount = new BigNumber(6); + const tokenHolders = [makerAddress, takerAddress]; + const makerAssetsToTransfer = erc1155FungibleTokens.slice(0, 2); + const takerAssetsToTransfer = erc1155FungibleTokens.slice(2, 3); + const makerValuesToTransfer = [new BigNumber(500), new BigNumber(700)]; + const takerValuesToTransfer = [new BigNumber(900)]; + const tokensToTransfer = makerAssetsToTransfer.concat(takerAssetsToTransfer); + const makerAssetAmount = new BigNumber(10); + const takerAssetAmount = new BigNumber(20); + const totalMakerValuesTransferred = _.map(makerValuesToTransfer, (value: BigNumber) => { + return value + .times(makerAssetAmount) + .times(takerAssetFillAmount) + .dividedToIntegerBy(takerAssetAmount); + }); + const totalTakerValuesTransferred = _.map(takerValuesToTransfer, (value: BigNumber) => { + return value + .times(takerAssetAmount) + .times(takerAssetFillAmount) + .dividedToIntegerBy(takerAssetAmount); + }); + const receiverCallbackData = '0x'; + const makerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + makerAssetsToTransfer, + makerValuesToTransfer, + receiverCallbackData, + ); + const takerAssetData = assetDataUtils.encodeERC1155AssetData( + erc1155Contract.address, + takerAssetsToTransfer, + takerValuesToTransfer, + receiverCallbackData, + ); + signedOrder = await orderFactory.newSignedOrderAsync({ + makerAssetData, + takerAssetData, + makerAssetAmount, + takerAssetAmount, + makerFee: constants.ZERO_AMOUNT, + takerFee: constants.ZERO_AMOUNT, + }); + // check balances before transfer + const expectedInitialBalances = [ + // makerAddress / makerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / makerToken[1] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // makerAddress / takerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / makerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / makerToken[1] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + // takerAddress / takerToken[0] + constants.INITIAL_ERC1155_FUNGIBLE_BALANCE, + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedInitialBalances); + // execute transfer + await exchangeWrapper.fillOrderAsync(signedOrder, takerAddress, { + takerAssetFillAmount, + }); + // check balances after transfer + const expectedFinalBalances = [ + // makerAddress / makerToken[0] + expectedInitialBalances[0].minus(totalMakerValuesTransferred[0]), + // makerAddress / makerToken[1] + expectedInitialBalances[1].minus(totalMakerValuesTransferred[1]), + // makerAddress / takerToken[0] + expectedInitialBalances[2].plus(totalTakerValuesTransferred[0]), + // takerAddress / makerToken[0] + expectedInitialBalances[3].plus(totalMakerValuesTransferred[0]), + // takerAddress / makerToken[1] + expectedInitialBalances[4].plus(totalMakerValuesTransferred[1]), + // takerAddress / takerToken[0] + expectedInitialBalances[5].minus(totalTakerValuesTransferred[0]), + ]; + await erc1155Wrapper.assertBalancesAsync(tokenHolders, tokensToTransfer, expectedFinalBalances); + // check that the order is partially filled + const orderInfo = await exchangeWrapper.getOrderInfoAsync(signedOrder); + const expectedOrderHash = orderHashUtils.getOrderHashHex(signedOrder); + const expectedTakerAssetFilledAmount = takerAssetFillAmount; + const expectedOrderStatus = OrderStatus.Fillable; + expect(orderInfo.orderHash).to.be.equal(expectedOrderHash); + expect(orderInfo.orderTakerAssetFilledAmount).to.be.bignumber.equal(expectedTakerAssetFilledAmount); + expect(orderInfo.orderStatus).to.equal(expectedOrderStatus); + }); + }); describe('getOrderInfo', () => { beforeEach(async () => { diff --git a/contracts/exchange/test/global_hooks.ts b/contracts/exchange/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/exchange/test/global_hooks.ts +++ b/contracts/exchange/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/exchange/test/utils/exchange_wrapper.ts b/contracts/exchange/test/utils/exchange_wrapper.ts index fef8b55db3..a06e35a462 100644 --- a/contracts/exchange/test/utils/exchange_wrapper.ts +++ b/contracts/exchange/test/utils/exchange_wrapper.ts @@ -1,3 +1,4 @@ +import { artifacts as erc1155Artifacts } from '@0x/contracts-erc1155'; import { artifacts as erc20Artifacts } from '@0x/contracts-erc20'; import { artifacts as erc721Artifacts } from '@0x/contracts-erc721'; import { @@ -25,7 +26,12 @@ export class ExchangeWrapper { constructor(exchangeContract: ExchangeContract, provider: Web3ProviderEngine | ZeroExProvider) { this._exchange = exchangeContract; this._web3Wrapper = new Web3Wrapper(provider); - this._logDecoder = new LogDecoder(this._web3Wrapper, { ...artifacts, ...erc20Artifacts, ...erc721Artifacts }); + this._logDecoder = new LogDecoder(this._web3Wrapper, { + ...artifacts, + ...erc20Artifacts, + ...erc721Artifacts, + ...erc1155Artifacts, + }); } public async fillOrderAsync( signedOrder: SignedOrder, diff --git a/contracts/extensions/CHANGELOG.json b/contracts/extensions/CHANGELOG.json index 88f6fc4628..aa54e8e0bf 100644 --- a/contracts/extensions/CHANGELOG.json +++ b/contracts/extensions/CHANGELOG.json @@ -1,11 +1,17 @@ [ + { + "version": "3.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "3.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Do not reexport external dependencies", "pr": 1682 @@ -14,7 +20,8 @@ "note": "Upgrade contracts to Solidity 0.5.5", "pr": 1682 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/extensions/CHANGELOG.md b/contracts/extensions/CHANGELOG.md index a9eb1577b5..a9d71d11e5 100644 --- a/contracts/extensions/CHANGELOG.md +++ b/contracts/extensions/CHANGELOG.md @@ -5,6 +5,15 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v3.0.0 - _March 20, 2019_ + + * Do not reexport external dependencies (#1682) + * Upgrade contracts to Solidity 0.5.5 (#1682) + ## v2.0.8 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/extensions/compiler.json b/contracts/extensions/compiler.json index 9e8471e32b..bf3756c15b 100644 --- a/contracts/extensions/compiler.json +++ b/contracts/extensions/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, diff --git a/contracts/extensions/package.json b/contracts/extensions/package.json index e67c8d95a5..c5e17f2d16 100644 --- a/contracts/extensions/package.json +++ b/contracts/extensions/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-extensions", - "version": "2.0.8", + "version": "3.1.0", "engines": { "node": ">=6.12" }, @@ -46,12 +46,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contract-wrappers": "^8.0.3", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contract-wrappers": "^8.0.5", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -68,19 +68,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-asset-proxy": "^1.0.9", - "@0x/contracts-erc20": "^1.0.9", - "@0x/contracts-erc721": "^1.0.9", - "@0x/contracts-exchange": "^1.0.9", - "@0x/contracts-exchange-libs": "^1.1.3", - "@0x/contracts-utils": "^2.0.8", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-asset-proxy": "^2.1.0", + "@0x/contracts-erc20": "^2.1.0", + "@0x/contracts-erc721": "^2.1.0", + "@0x/contracts-exchange": "^2.1.0", + "@0x/contracts-exchange-libs": "^2.1.0", + "@0x/contracts-utils": "^3.1.0", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/extensions/test/global_hooks.ts b/contracts/extensions/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/extensions/test/global_hooks.ts +++ b/contracts/extensions/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/multisig/CHANGELOG.json b/contracts/multisig/CHANGELOG.json index de02c953b0..e969aa5324 100644 --- a/contracts/multisig/CHANGELOG.json +++ b/contracts/multisig/CHANGELOG.json @@ -1,16 +1,23 @@ [ + { + "version": "3.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "3.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Do not reexport external dependencies", "pr": 1682 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/multisig/CHANGELOG.md b/contracts/multisig/CHANGELOG.md index e362447478..6085cd1e0e 100644 --- a/contracts/multisig/CHANGELOG.md +++ b/contracts/multisig/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v3.0.0 - _March 20, 2019_ + + * Do not reexport external dependencies (#1682) + ## v2.0.8 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/multisig/compiler.json b/contracts/multisig/compiler.json index 2395d7c8ff..942df6bb25 100644 --- a/contracts/multisig/compiler.json +++ b/contracts/multisig/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, diff --git a/contracts/multisig/package.json b/contracts/multisig/package.json index 7fb45261c4..d53942ca15 100644 --- a/contracts/multisig/package.json +++ b/contracts/multisig/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-multisig", - "version": "2.0.8", + "version": "3.1.0", "engines": { "node": ">=6.12" }, @@ -46,11 +46,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/multisig/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/node": "*", @@ -67,15 +67,15 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/contracts-asset-proxy": "^1.0.9", - "@0x/contracts-erc20": "^1.0.9", + "@0x/base-contract": "^5.0.4", + "@0x/contracts-asset-proxy": "^2.1.0", + "@0x/contracts-erc20": "^2.1.0", "@0x/contracts-utils": "2.0.1", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/contracts/multisig/test/global_hooks.ts b/contracts/multisig/test/global_hooks.ts index 68eb4f8d5f..12b942e07a 100644 --- a/contracts/multisig/test/global_hooks.ts +++ b/contracts/multisig/test/global_hooks.ts @@ -1,9 +1,9 @@ -import { env, EnvVars } from '@0x/dev-utils'; - import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { env, EnvVars } from '@0x/dev-utils'; +import { providerUtils } from '@0x/utils'; -before('start web3 provider engine', () => { - provider.start(); +before('start web3 provider', () => { + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { diff --git a/contracts/test-utils/CHANGELOG.json b/contracts/test-utils/CHANGELOG.json index c85059a13b..1a649c0a91 100644 --- a/contracts/test-utils/CHANGELOG.json +++ b/contracts/test-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1553183790, + "version": "3.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "3.1.0", "changes": [ @@ -6,7 +15,8 @@ "note": "Added ERC1155Proxy test constants and interfaces", "pr": 1661 } - ] + ], + "timestamp": 1553091633 }, { "version": "3.0.9", diff --git a/contracts/test-utils/CHANGELOG.md b/contracts/test-utils/CHANGELOG.md index 0d151d19d5..b4e625254a 100644 --- a/contracts/test-utils/CHANGELOG.md +++ b/contracts/test-utils/CHANGELOG.md @@ -5,6 +5,19 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.1 - _March 21, 2019_ + + * Dependencies updated + +## v3.1.0 - _March 20, 2019_ + + * Added ERC1155Proxy test constants and interfaces (#1661) + +## v3.0.9 - _Invalid date_ + + * Set evmVersion to byzantium (#1678) + * Remove Coordinator EIP712 constants. They're now in the `order-utils` package. (#1705) + ## v3.0.8 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/test-utils/package.json b/contracts/test-utils/package.json index 685b4bf291..c79e2f20ee 100644 --- a/contracts/test-utils/package.json +++ b/contracts/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-test-utils", - "version": "3.0.8", + "version": "3.1.1", "engines": { "node": ">=6.12" }, @@ -40,19 +40,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/dev-utils": "^2.1.3", - "@0x/order-utils": "^7.0.2", - "@0x/sol-compiler": "^3.1.3", - "@0x/sol-coverage": "^3.0.0", - "@0x/sol-profiler": "^3.1.2", - "@0x/sol-trace": "^2.0.8", - "@0x/subproviders": "^4.0.2", + "@0x/abi-gen": "^2.0.8", + "@0x/dev-utils": "^2.2.0", + "@0x/order-utils": "^7.1.1", + "@0x/sol-compiler": "^3.1.5", + "@0x/sol-coverage": "^3.0.2", + "@0x/sol-profiler": "^3.1.4", + "@0x/sol-trace": "^2.0.10", + "@0x/subproviders": "^4.0.4", "@0x/tslint-config": "^3.0.0", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@types/bn.js": "^4.11.0", "@types/js-combinatorics": "^0.5.29", "@types/lodash": "4.14.104", @@ -62,7 +62,7 @@ "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", "dirty-chai": "^2.0.1", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "js-combinatorics": "^0.5.3", diff --git a/contracts/test-utils/src/constants.ts b/contracts/test-utils/src/constants.ts index 2e58d764d0..199042edc0 100644 --- a/contracts/test-utils/src/constants.ts +++ b/contracts/test-utils/src/constants.ts @@ -38,7 +38,7 @@ export const constants = { NUM_DUMMY_ERC20_TO_DEPLOY: 3, NUM_DUMMY_ERC721_TO_DEPLOY: 2, NUM_ERC721_TOKENS_TO_MINT: 2, - NUM_DUMMY_ERC1155_CONTRACTS_TO_DEPLOY: 1, + NUM_DUMMY_ERC1155_CONTRACTS_TO_DEPLOY: 2, NUM_ERC1155_FUNGIBLE_TOKENS_MINT: 3, NUM_ERC1155_NONFUNGIBLE_TOKENS_MINT: 3, NULL_ADDRESS: '0x0000000000000000000000000000000000000000', diff --git a/contracts/utils/CHANGELOG.json b/contracts/utils/CHANGELOG.json index a3787b8dbc..d95a53890b 100644 --- a/contracts/utils/CHANGELOG.json +++ b/contracts/utils/CHANGELOG.json @@ -1,11 +1,17 @@ [ + { + "version": "3.1.0", + "changes": [ + { + "note": "Added `startProviderEngine` to `providerUtils`. Preventing excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, { "version": "3.0.0", "changes": [ - { - "note": "Set evmVersion to byzantium", - "pr": 1678 - }, { "note": "Optimize loops in LibAddressArray", "pr": 1668 @@ -17,8 +23,17 @@ { "note": "Added Address.sol with test for whether or not an address is a contract", "pr": 1657 + }, + { + "note": "Add unit tests for `LibAddressArray`", + "pr": 1712 + }, + { + "note": "Fix `LibAddressArray.indexOf` returning incorrect index.", + "pr": 1712 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/contracts/utils/CHANGELOG.md b/contracts/utils/CHANGELOG.md index d1556986c9..e48dd2c08d 100644 --- a/contracts/utils/CHANGELOG.md +++ b/contracts/utils/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.0 - _March 21, 2019_ + + * Added `startProviderEngine` to `providerUtils`. Preventing excess block polling (#1695) + +## v3.0.0 - _March 20, 2019_ + + * Optimize loops in LibAddressArray (#1668) + * Upgrade contracts to Solidity 0.5.5 (#1682) + * Added Address.sol with test for whether or not an address is a contract (#1657) + * Add unit tests for `LibAddressArray` (#1712) + * Fix `LibAddressArray.indexOf` returning incorrect index. (#1712) + ## v2.0.8 - _March 1, 2019_ * Dependencies updated diff --git a/contracts/utils/compiler.json b/contracts/utils/compiler.json index 7dd36ba4d9..8cab311419 100644 --- a/contracts/utils/compiler.json +++ b/contracts/utils/compiler.json @@ -4,7 +4,7 @@ "useDockerisedSolc": true, "isOfflineMode": false, "compilerSettings": { - "evmVersion": "byzantium", + "evmVersion": "constantinople", "optimizer": { "enabled": true, "runs": 1000000, @@ -30,6 +30,7 @@ "src/SafeMath.sol", "src/interfaces/IOwnable.sol", "test/TestConstants.sol", + "test/TestLibAddressArray.sol", "test/TestLibBytes.sol" ] } diff --git a/contracts/utils/contracts/src/LibAddressArray.sol b/contracts/utils/contracts/src/LibAddressArray.sol index 0d4ebb544e..259dc558aa 100644 --- a/contracts/utils/contracts/src/LibAddressArray.sol +++ b/contracts/utils/contracts/src/LibAddressArray.sol @@ -30,7 +30,7 @@ library LibAddressArray { /// @param addressArray Array of addresses. /// @param addressToAppend Address to append. /// @return Array of addresses: [... addressArray, addressToAppend] - function append(address[] memory addressArray, address addressToAppend) + function append(address[] memory addressArray, address addressToAppend) internal pure returns (address[] memory) @@ -148,7 +148,7 @@ library LibAddressArray { if eq(target, arrayElement) { // Set success and index success := 1 - index := div(i, 32) + index := div(sub(i, arrayContentsStart), 32) // Break loop i := arrayContentsEnd } diff --git a/contracts/utils/contracts/test/TestLibAddressArray.sol b/contracts/utils/contracts/test/TestLibAddressArray.sol new file mode 100644 index 0000000000..8f5e2b0868 --- /dev/null +++ b/contracts/utils/contracts/test/TestLibAddressArray.sol @@ -0,0 +1,106 @@ +/* + + Copyright 2018 ZeroEx Intl. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +pragma solidity ^0.5.5; + +import "../src/LibAddressArray.sol"; + + +contract TestLibAddressArray { + + using LibAddressArray for address[]; + + /// @dev Append a new address to an array of addresses. + /// The `addressArray` may need to be reallocated to make space + /// for the new address. Because of this we return the resulting + /// memory location of `addressArray`. + /// @param addressArray Array of addresses. + /// @param addressToAppend Address to append. + /// @return Array of addresses: [... addressArray, addressToAppend] + function publicAppend(address[] memory addressArray, address addressToAppend) + public + pure + returns (address[] memory) + { + return addressArray.append(addressToAppend); + } + + /// @dev Moves the free memory pointer by `freeMemOffset` bytes, + /// then performs the append. + /// This tests the behavior of the address array being reallocated if + /// the memory immediately after the old array is claimed. + /// @param addressArray Array of addresses. + /// @param freeMemOffset Number of (signed) bytes to offset the free memory pointer (0x40). + /// @param addressToAppend Address to append. + /// @return The new address array. + /// @return The memory address of the old address array. + /// @return The memory address of the new address array. + function testAppendRealloc( + address[] memory addressArray, + int256 freeMemOffset, + address addressToAppend + ) + public + pure + returns ( + address[] memory result, + uint256 oldArrayMemStart, + uint256 newArrayMemStart + ) + { + assembly { + // Remember the original memory address of the array. + oldArrayMemStart := addressArray + // Move the free memory pointer. + mstore(0x40, add(mload(0x40), freeMemOffset)) + } + + // Call append. + result = addressArray.append(addressToAppend); + + // Get the new array memory address. + assembly { + newArrayMemStart := result + } + } + + /// @dev Checks if an address array contains the target address. + /// @param addressArray Array of addresses. + /// @param target Address to search for in array. + /// @return True if the addressArray contains the target. + function publicContains(address[] memory addressArray, address target) + public + pure + returns (bool success) + { + return addressArray.contains(target); + } + + /// @dev Finds the index of an address within an array. + /// @param addressArray Array of addresses. + /// @param target Address to search for in array. + /// @return Existence and index of the target in the array. + function publicIndexOf(address[] memory addressArray, address target) + public + pure + returns (bool success, uint256 index) + { + (success, index) = addressArray.indexOf(target); + } + +} diff --git a/contracts/utils/package.json b/contracts/utils/package.json index 3d83834965..152738c841 100644 --- a/contracts/utils/package.json +++ b/contracts/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-utils", - "version": "2.0.8", + "version": "3.1.0", "engines": { "node": ">=6.12" }, @@ -33,7 +33,7 @@ "lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol" }, "config": { - "abis": "./generated-artifacts/@(IOwnable|LibBytes|Ownable|ReentrancyGuard|SafeMath|TestConstants|TestLibBytes).json", + "abis": "./generated-artifacts/@(Address|IOwnable|LibBytes|Ownable|ReentrancyGuard|SafeMath|TestConstants|TestLibAddressArray|TestLibBytes).json", "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually." }, "repository": { @@ -46,11 +46,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/contracts/utils/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", - "@0x/contracts-gen": "^1.0.5", - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/abi-gen": "^2.0.8", + "@0x/contracts-gen": "^1.0.7", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "@0x/tslint-config": "^3.0.0", "@types/bn.js": "^4.11.0", "@types/lodash": "4.14.104", @@ -68,14 +68,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/base-contract": "^5.0.2", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/base-contract": "^5.0.4", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "bn.js": "^4.11.8", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11" }, diff --git a/contracts/utils/src/artifacts.ts b/contracts/utils/src/artifacts.ts index 15a1abedfc..04ebb5b525 100644 --- a/contracts/utils/src/artifacts.ts +++ b/contracts/utils/src/artifacts.ts @@ -5,14 +5,17 @@ */ import { ContractArtifact } from 'ethereum-types'; +import * as Address from '../generated-artifacts/Address.json'; import * as IOwnable from '../generated-artifacts/IOwnable.json'; import * as LibBytes from '../generated-artifacts/LibBytes.json'; import * as Ownable from '../generated-artifacts/Ownable.json'; import * as ReentrancyGuard from '../generated-artifacts/ReentrancyGuard.json'; import * as SafeMath from '../generated-artifacts/SafeMath.json'; import * as TestConstants from '../generated-artifacts/TestConstants.json'; +import * as TestLibAddressArray from '../generated-artifacts/TestLibAddressArray.json'; import * as TestLibBytes from '../generated-artifacts/TestLibBytes.json'; export const artifacts = { + Address: Address as ContractArtifact, LibBytes: LibBytes as ContractArtifact, Ownable: Ownable as ContractArtifact, ReentrancyGuard: ReentrancyGuard as ContractArtifact, @@ -20,4 +23,5 @@ export const artifacts = { IOwnable: IOwnable as ContractArtifact, TestConstants: TestConstants as ContractArtifact, TestLibBytes: TestLibBytes as ContractArtifact, + TestLibAddressArray: TestLibAddressArray as ContractArtifact, }; diff --git a/contracts/utils/src/wrappers.ts b/contracts/utils/src/wrappers.ts index 8748cb074d..91a90bec6c 100644 --- a/contracts/utils/src/wrappers.ts +++ b/contracts/utils/src/wrappers.ts @@ -3,10 +3,12 @@ * Warning: This file is auto-generated by contracts-gen. Don't edit manually. * ----------------------------------------------------------------------------- */ +export * from '../generated-wrappers/address'; export * from '../generated-wrappers/i_ownable'; export * from '../generated-wrappers/lib_bytes'; export * from '../generated-wrappers/ownable'; export * from '../generated-wrappers/reentrancy_guard'; export * from '../generated-wrappers/safe_math'; export * from '../generated-wrappers/test_constants'; +export * from '../generated-wrappers/test_lib_address_array'; export * from '../generated-wrappers/test_lib_bytes'; diff --git a/contracts/utils/test/global_hooks.ts b/contracts/utils/test/global_hooks.ts index f8ace376a5..2ca47d433b 100644 --- a/contracts/utils/test/global_hooks.ts +++ b/contracts/utils/test/global_hooks.ts @@ -1,8 +1,10 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/contracts/utils/test/lib_address_array.ts b/contracts/utils/test/lib_address_array.ts new file mode 100644 index 0000000000..0a3464a406 --- /dev/null +++ b/contracts/utils/test/lib_address_array.ts @@ -0,0 +1,161 @@ +import { + addressUtils, + chaiSetup, + expectContractCallFailedAsync, + provider, + txDefaults, + web3Wrapper, +} from '@0x/contracts-test-utils'; +import { BlockchainLifecycle } from '@0x/dev-utils'; +import { RevertReason } from '@0x/types'; +import { BigNumber } from '@0x/utils'; +import * as chai from 'chai'; +import * as _ from 'lodash'; + +import { artifacts, TestLibAddressArrayContract } from '../src'; + +chaiSetup.configure(); +const expect = chai.expect; +const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); + +describe('LibAddressArray', () => { + let lib: TestLibAddressArrayContract; + + before(async () => { + await blockchainLifecycle.startAsync(); + }); + after(async () => { + await blockchainLifecycle.revertAsync(); + }); + before(async () => { + // Deploy LibAddressArray + lib = await TestLibAddressArrayContract.deployFrom0xArtifactAsync( + artifacts.TestLibAddressArray, + provider, + txDefaults, + ); + }); + beforeEach(async () => { + await blockchainLifecycle.startAsync(); + }); + afterEach(async () => { + await blockchainLifecycle.revertAsync(); + }); + + describe('append', () => { + it('should append to empty array', async () => { + const addr = addressUtils.generatePseudoRandomAddress(); + const result = await lib.publicAppend.callAsync([], addr); + const expected = [addr]; + expect(result).to.deep.equal(expected); + }); + + it('should append to non-empty array', async () => { + const arr = _.times(3, () => addressUtils.generatePseudoRandomAddress()); + const addr = addressUtils.generatePseudoRandomAddress(); + const expected = [...arr, addr]; + const result = await lib.publicAppend.callAsync(arr, addr); + expect(result).to.deep.equal(expected); + }); + + it('should revert if the free memory pointer was moved to before the end of the array', async () => { + const arr = _.times(3, () => addressUtils.generatePseudoRandomAddress()); + const addr = addressUtils.generatePseudoRandomAddress(); + const freeMemOffset = new BigNumber(-1); + return expectContractCallFailedAsync( + lib.testAppendRealloc.callAsync(arr, freeMemOffset, addr), + RevertReason.InvalidFreeMemoryPtr, + ); + }); + + it('should keep the same memory address if free memory pointer does not move', async () => { + const arr = _.times(3, () => addressUtils.generatePseudoRandomAddress()); + const addr = addressUtils.generatePseudoRandomAddress(); + const freeMemOffset = new BigNumber(0); + const expected = [...arr, addr]; + const [result, oldArrayMemStart, newArrayMemStart] = await lib.testAppendRealloc.callAsync( + arr, + freeMemOffset, + addr, + ); + expect(result).to.deep.equal(expected); + expect(newArrayMemStart).bignumber.to.be.equal(oldArrayMemStart); + }); + + it('should change memory address if free memory pointer advances', async () => { + const arr = _.times(3, () => addressUtils.generatePseudoRandomAddress()); + const addr = addressUtils.generatePseudoRandomAddress(); + const freeMemOffset = new BigNumber(1); + const expectedArray = [...arr, addr]; + const [result, oldArrayMemStart, newArrayMemStart] = await lib.testAppendRealloc.callAsync( + arr, + freeMemOffset, + addr, + ); + // The new location should be the end of the old array + freeMemOffset. + const expectedNewArrayMemStart = oldArrayMemStart.plus((arr.length + 1) * 32).plus(freeMemOffset); + expect(result).to.deep.equal(expectedArray); + expect(newArrayMemStart).bignumber.to.be.equal(expectedNewArrayMemStart); + }); + }); + + describe('contains', () => { + it('should return false on an empty array', async () => { + const addr = addressUtils.generatePseudoRandomAddress(); + const isFound = await lib.publicContains.callAsync([], addr); + expect(isFound).to.equal(false); + }); + + it('should return false on a missing item', async () => { + const arr = _.times(3, () => addressUtils.generatePseudoRandomAddress()); + const addr = addressUtils.generatePseudoRandomAddress(); + const isFound = await lib.publicContains.callAsync(arr, addr); + expect(isFound).to.equal(false); + }); + + it('should return true on an included item', async () => { + const arr = _.times(4, () => addressUtils.generatePseudoRandomAddress()); + const addr = _.sample(arr) as string; + const isFound = await lib.publicContains.callAsync(arr, addr); + expect(isFound).to.equal(true); + }); + + it('should return true on the only item in the array', async () => { + const arr = _.times(1, () => addressUtils.generatePseudoRandomAddress()); + const isFound = await lib.publicContains.callAsync(arr, arr[0]); + expect(isFound).to.equal(true); + }); + }); + + describe('indexOf', () => { + it('should fail on an empty array', async () => { + const addr = addressUtils.generatePseudoRandomAddress(); + const [isSuccess] = await lib.publicIndexOf.callAsync([], addr); + expect(isSuccess).to.equal(false); + }); + + it('should fail on a missing item', async () => { + const arr = _.times(3, () => addressUtils.generatePseudoRandomAddress()); + const addr = addressUtils.generatePseudoRandomAddress(); + const [isSuccess] = await lib.publicIndexOf.callAsync(arr, addr); + expect(isSuccess).to.equal(false); + }); + + it('should succeed on an included item', async () => { + const arr = _.times(4, () => addressUtils.generatePseudoRandomAddress()); + const expectedIndexOf = _.random(0, arr.length - 1); + const addr = arr[expectedIndexOf]; + const [isSuccess, index] = await lib.publicIndexOf.callAsync(arr, addr); + expect(isSuccess).to.equal(true); + expect(index).bignumber.to.equal(expectedIndexOf); + }); + + it('should succeed on the only item in the array', async () => { + const arr = _.times(1, () => addressUtils.generatePseudoRandomAddress()); + const [isSuccess, index] = await lib.publicIndexOf.callAsync(arr, arr[0]); + expect(isSuccess).to.equal(true); + expect(index).bignumber.to.equal(0); + }); + }); +}); +// tslint:disable:max-file-line-count diff --git a/contracts/utils/tsconfig.json b/contracts/utils/tsconfig.json index efd71ff937..dce54b101e 100644 --- a/contracts/utils/tsconfig.json +++ b/contracts/utils/tsconfig.json @@ -3,12 +3,14 @@ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true }, "include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"], "files": [ + "generated-artifacts/Address.json", "generated-artifacts/IOwnable.json", "generated-artifacts/LibBytes.json", "generated-artifacts/Ownable.json", "generated-artifacts/ReentrancyGuard.json", "generated-artifacts/SafeMath.json", "generated-artifacts/TestConstants.json", + "generated-artifacts/TestLibAddressArray.json", "generated-artifacts/TestLibBytes.json" ], "exclude": ["./deploy/solc/solc_bin"] diff --git a/packages/0x.js/CHANGELOG.json b/packages/0x.js/CHANGELOG.json index 2ac597db78..dbd19a48f2 100644 --- a/packages/0x.js/CHANGELOG.json +++ b/packages/0x.js/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "6.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "6.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "6.0.3", diff --git a/packages/0x.js/CHANGELOG.md b/packages/0x.js/CHANGELOG.md index 85a6625b5a..f835026ef1 100644 --- a/packages/0x.js/CHANGELOG.md +++ b/packages/0x.js/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.5 - _March 21, 2019_ + + * Dependencies updated + +## v6.0.4 - _March 20, 2019_ + + * Dependencies updated + ## v6.0.3 - _March 1, 2019_ * Dependencies updated diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index fd6849525c..d447a918c9 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -1,6 +1,6 @@ { "name": "0x.js", - "version": "6.0.3", + "version": "6.0.5", "engines": { "node": ">=6.12" }, @@ -42,10 +42,10 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/abi-gen-wrappers": "^4.0.2", - "@0x/contract-addresses": "^2.2.2", - "@0x/dev-utils": "^2.1.3", - "@0x/migrations": "^4.0.3", + "@0x/abi-gen-wrappers": "^4.1.0", + "@0x/contract-addresses": "^2.3.0", + "@0x/dev-utils": "^2.2.0", + "@0x/migrations": "^4.1.0", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -72,18 +72,18 @@ "webpack": "^4.20.2" }, "dependencies": { - "@0x/assert": "^2.0.6", - "@0x/base-contract": "^5.0.2", - "@0x/contract-wrappers": "^8.0.3", - "@0x/order-utils": "^7.0.2", - "@0x/order-watcher": "^4.0.3", - "@0x/subproviders": "^4.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/assert": "^2.0.8", + "@0x/base-contract": "^5.0.4", + "@0x/contract-wrappers": "^8.0.5", + "@0x/order-utils": "^7.1.1", + "@0x/order-watcher": "^4.0.5", + "@0x/subproviders": "^4.0.4", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@types/web3-provider-engine": "^14.0.0", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11", "web3-provider-engine": "14.0.6" diff --git a/packages/abi-gen-wrappers/CHANGELOG.json b/packages/abi-gen-wrappers/CHANGELOG.json index 39fb9974f9..f85a71cd29 100644 --- a/packages/abi-gen-wrappers/CHANGELOG.json +++ b/packages/abi-gen-wrappers/CHANGELOG.json @@ -1,4 +1,23 @@ [ + { + "version": "4.1.0", + "changes": [ + { + "note": "Add Coordinator and CoordinatorRegistry contract wrappers", + "pr": 1689 + } + ], + "timestamp": 1553183790 + }, + { + "timestamp": 1553091633, + "version": "4.0.3", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "4.0.2", diff --git a/packages/abi-gen-wrappers/CHANGELOG.md b/packages/abi-gen-wrappers/CHANGELOG.md index 3c6388d262..679d6fe678 100644 --- a/packages/abi-gen-wrappers/CHANGELOG.md +++ b/packages/abi-gen-wrappers/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.1.0 - _March 21, 2019_ + + * Add Coordinator and CoordinatorRegistry contract wrappers (#1689) + +## v4.0.3 - _March 20, 2019_ + + * Dependencies updated + ## v4.0.2 - _March 1, 2019_ * Dependencies updated diff --git a/packages/abi-gen-wrappers/package.json b/packages/abi-gen-wrappers/package.json index 7567ff13b1..527540a1d5 100644 --- a/packages/abi-gen-wrappers/package.json +++ b/packages/abi-gen-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen-wrappers", - "version": "4.0.2", + "version": "4.1.0", "engines": { "node": ">=6.12" }, @@ -18,7 +18,7 @@ "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output src/generated-wrappers --backend ethers" }, "config": { - "abis": "../contract-artifacts/artifacts/@(AssetProxyOwner|DutchAuction|DummyERC20Token|DummyERC721Token|ERC20Proxy|ERC20Token|ERC721Proxy|ERC721Token|Exchange|Forwarder|IValidator|IWallet|MultiAssetProxy|OrderValidator|WETH9|ZRXToken).json" + "abis": "../contract-artifacts/artifacts/@(AssetProxyOwner|DutchAuction|DummyERC20Token|DummyERC721Token|ERC20Proxy|ERC20Token|ERC721Proxy|ERC721Token|Exchange|Forwarder|IValidator|IWallet|MultiAssetProxy|OrderValidator|WETH9|ZRXToken|Coordinator|CoordinatorRegistry).json" }, "repository": { "type": "git", @@ -30,19 +30,19 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen-wrappers/README.md", "devDependencies": { - "@0x/abi-gen": "^2.0.6", + "@0x/abi-gen": "^2.0.8", "@0x/abi-gen-templates": "^2.0.1", "@0x/tslint-config": "^3.0.0", - "@0x/types": "^2.1.1", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/types": "^2.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11", "shx": "^0.2.2" }, "dependencies": { - "@0x/base-contract": "^5.0.2" + "@0x/base-contract": "^5.0.4" }, "publishConfig": { "access": "public" diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts new file mode 100644 index 0000000000..c102596d12 --- /dev/null +++ b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts @@ -0,0 +1,315 @@ +// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name +// tslint:disable:no-unused-variable +// tslint:disable:no-unbound-method +import { BaseContract } from '@0x/base-contract'; +import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, TxData, TxDataPayable, SupportedProvider } from 'ethereum-types'; +import { BigNumber, classUtils, logUtils, providerUtils } from '@0x/utils'; +import { SimpleContractArtifact } from '@0x/types'; +import { Web3Wrapper } from '@0x/web3-wrapper'; +import * as ethers from 'ethers'; +import * as _ from 'lodash'; +// tslint:enable:no-unused-variable + + +/* istanbul ignore next */ +// tslint:disable:no-parameter-reassignment +// tslint:disable-next-line:class-name +export class CoordinatorContract extends BaseContract { + public getSignerAddress = { + async callAsync( + hash: string, + signature: string, + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise { + const self = this as any as CoordinatorContract; + const encodedData = self._strictEncodeArguments('getSignerAddress(bytes32,bytes)', [hash, + signature + ]); + const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...callData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); + BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); + const abiEncoder = self._lookupAbiEncoder('getSignerAddress(bytes32,bytes)'); + // tslint:disable boolean-naming + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + // tslint:enable boolean-naming + return result; + }, + }; + public executeTransaction = { + async sendTransactionAsync( + transaction: {salt: BigNumber;signerAddress: string;data: string}, + txOrigin: string, + transactionSignature: string, + approvalExpirationTimeSeconds: BigNumber[], + approvalSignatures: string[], + txData: Partial = {}, + ): Promise { + const self = this as any as CoordinatorContract; + const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures + ]); + const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...txData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + self.executeTransaction.estimateGasAsync.bind( + self, + transaction, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures + ), + ); + const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + return txHash; + }, + async estimateGasAsync( + transaction: {salt: BigNumber;signerAddress: string;data: string}, + txOrigin: string, + transactionSignature: string, + approvalExpirationTimeSeconds: BigNumber[], + approvalSignatures: string[], + txData: Partial = {}, + ): Promise { + const self = this as any as CoordinatorContract; + const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures + ]); + const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...txData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + return gas; + }, + getABIEncodedTransactionData( + transaction: {salt: BigNumber;signerAddress: string;data: string}, + txOrigin: string, + transactionSignature: string, + approvalExpirationTimeSeconds: BigNumber[], + approvalSignatures: string[], + ): string { + const self = this as any as CoordinatorContract; + const abiEncodedTransactionData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures + ]); + return abiEncodedTransactionData; + }, + async callAsync( + transaction: {salt: BigNumber;signerAddress: string;data: string}, + txOrigin: string, + transactionSignature: string, + approvalExpirationTimeSeconds: BigNumber[], + approvalSignatures: string[], + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise { + const self = this as any as CoordinatorContract; + const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures + ]); + const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...callData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); + BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); + const abiEncoder = self._lookupAbiEncoder('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])'); + // tslint:disable boolean-naming + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + // tslint:enable boolean-naming + return result; + }, + }; + public assertValidCoordinatorApprovals = { + async callAsync( + transaction: {salt: BigNumber;signerAddress: string;data: string}, + txOrigin: string, + transactionSignature: string, + approvalExpirationTimeSeconds: BigNumber[], + approvalSignatures: string[], + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise { + const self = this as any as CoordinatorContract; + const encodedData = self._strictEncodeArguments('assertValidCoordinatorApprovals((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures + ]); + const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...callData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); + BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); + const abiEncoder = self._lookupAbiEncoder('assertValidCoordinatorApprovals((uint256,address,bytes),address,bytes,uint256[],bytes[])'); + // tslint:disable boolean-naming + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + // tslint:enable boolean-naming + return result; + }, + }; + public EIP712_DOMAIN_HASH = { + async callAsync( + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise { + const self = this as any as CoordinatorContract; + const encodedData = self._strictEncodeArguments('EIP712_DOMAIN_HASH()', []); + const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...callData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); + BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); + const abiEncoder = self._lookupAbiEncoder('EIP712_DOMAIN_HASH()'); + // tslint:disable boolean-naming + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + // tslint:enable boolean-naming + return result; + }, + }; + public assertValidTransactionOrdersApproval = { + async callAsync( + transaction: {salt: BigNumber;signerAddress: string;data: string}, + orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>, + txOrigin: string, + transactionSignature: string, + approvalExpirationTimeSeconds: BigNumber[], + approvalSignatures: string[], + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise { + const self = this as any as CoordinatorContract; + const encodedData = self._strictEncodeArguments('assertValidTransactionOrdersApproval((uint256,address,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes,uint256[],bytes[])', [transaction, + orders, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures + ]); + const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...callData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); + BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); + const abiEncoder = self._lookupAbiEncoder('assertValidTransactionOrdersApproval((uint256,address,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes,uint256[],bytes[])'); + // tslint:disable boolean-naming + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + // tslint:enable boolean-naming + return result; + }, + }; + public static async deployFrom0xArtifactAsync( + artifact: ContractArtifact | SimpleContractArtifact, + supportedProvider: SupportedProvider, + txDefaults: Partial, + _exchange: string, + ): Promise { + if (_.isUndefined(artifact.compilerOutput)) { + throw new Error('Compiler output not found in the artifact file'); + } + const provider = providerUtils.standardizeOrThrow(supportedProvider); + const bytecode = artifact.compilerOutput.evm.bytecode.object; + const abi = artifact.compilerOutput.abi; + return CoordinatorContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange +); + } + public static async deployAsync( + bytecode: string, + abi: ContractAbi, + supportedProvider: SupportedProvider, + txDefaults: Partial, + _exchange: string, + ): Promise { + const provider = providerUtils.standardizeOrThrow(supportedProvider); + const constructorAbi = BaseContract._lookupConstructorAbi(abi); + [_exchange +] = BaseContract._formatABIDataItemList( + constructorAbi.inputs, + [_exchange +], + BaseContract._bigNumberToString, + ); + const iface = new ethers.utils.Interface(abi); + const deployInfo = iface.deployFunction; + const txData = deployInfo.encode(bytecode, [_exchange +]); + const web3Wrapper = new Web3Wrapper(provider); + const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + {data: txData}, + txDefaults, + web3Wrapper.estimateGasAsync.bind(web3Wrapper), + ); + const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults); + logUtils.log(`transactionHash: ${txHash}`); + const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash); + logUtils.log(`Coordinator successfully deployed at ${txReceipt.contractAddress}`); + const contractInstance = new CoordinatorContract(abi, txReceipt.contractAddress as string, provider, txDefaults); + contractInstance.constructorArgs = [_exchange +]; + return contractInstance; + } + constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) { + super('Coordinator', abi, address, supportedProvider, txDefaults); + classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']); + } +} // tslint:disable:max-file-line-count +// tslint:enable:no-unbound-method diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator_registry.ts b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator_registry.ts new file mode 100644 index 0000000000..461849d718 --- /dev/null +++ b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator_registry.ts @@ -0,0 +1,182 @@ +// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name +// tslint:disable:no-unused-variable +// tslint:disable:no-unbound-method +import { BaseContract } from '@0x/base-contract'; +import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, TxData, TxDataPayable, SupportedProvider } from 'ethereum-types'; +import { BigNumber, classUtils, logUtils, providerUtils } from '@0x/utils'; +import { SimpleContractArtifact } from '@0x/types'; +import { Web3Wrapper } from '@0x/web3-wrapper'; +import * as ethers from 'ethers'; +import * as _ from 'lodash'; +// tslint:enable:no-unused-variable + +export type CoordinatorRegistryEventArgs = + | CoordinatorRegistryCoordinatorEndpointSetEventArgs; + +export enum CoordinatorRegistryEvents { + CoordinatorEndpointSet = 'CoordinatorEndpointSet', +} + +export interface CoordinatorRegistryCoordinatorEndpointSetEventArgs extends DecodedLogArgs { + coordinatorOperator: string; + coordinatorEndpoint: string; +} + + +/* istanbul ignore next */ +// tslint:disable:no-parameter-reassignment +// tslint:disable-next-line:class-name +export class CoordinatorRegistryContract extends BaseContract { + public setCoordinatorEndpoint = { + async sendTransactionAsync( + coordinatorEndpoint: string, + txData: Partial = {}, + ): Promise { + const self = this as any as CoordinatorRegistryContract; + const encodedData = self._strictEncodeArguments('setCoordinatorEndpoint(string)', [coordinatorEndpoint + ]); + const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...txData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + self.setCoordinatorEndpoint.estimateGasAsync.bind( + self, + coordinatorEndpoint + ), + ); + const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + return txHash; + }, + async estimateGasAsync( + coordinatorEndpoint: string, + txData: Partial = {}, + ): Promise { + const self = this as any as CoordinatorRegistryContract; + const encodedData = self._strictEncodeArguments('setCoordinatorEndpoint(string)', [coordinatorEndpoint + ]); + const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...txData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + return gas; + }, + getABIEncodedTransactionData( + coordinatorEndpoint: string, + ): string { + const self = this as any as CoordinatorRegistryContract; + const abiEncodedTransactionData = self._strictEncodeArguments('setCoordinatorEndpoint(string)', [coordinatorEndpoint + ]); + return abiEncodedTransactionData; + }, + async callAsync( + coordinatorEndpoint: string, + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise { + const self = this as any as CoordinatorRegistryContract; + const encodedData = self._strictEncodeArguments('setCoordinatorEndpoint(string)', [coordinatorEndpoint + ]); + const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...callData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); + BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); + const abiEncoder = self._lookupAbiEncoder('setCoordinatorEndpoint(string)'); + // tslint:disable boolean-naming + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + // tslint:enable boolean-naming + return result; + }, + }; + public getCoordinatorEndpoint = { + async callAsync( + coordinatorOperator: string, + callData: Partial = {}, + defaultBlock?: BlockParam, + ): Promise { + const self = this as any as CoordinatorRegistryContract; + const encodedData = self._strictEncodeArguments('getCoordinatorEndpoint(address)', [coordinatorOperator + ]); + const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...callData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); + BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); + const abiEncoder = self._lookupAbiEncoder('getCoordinatorEndpoint(address)'); + // tslint:disable boolean-naming + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + // tslint:enable boolean-naming + return result; + }, + }; + public static async deployFrom0xArtifactAsync( + artifact: ContractArtifact | SimpleContractArtifact, + supportedProvider: SupportedProvider, + txDefaults: Partial, + ): Promise { + if (_.isUndefined(artifact.compilerOutput)) { + throw new Error('Compiler output not found in the artifact file'); + } + const provider = providerUtils.standardizeOrThrow(supportedProvider); + const bytecode = artifact.compilerOutput.evm.bytecode.object; + const abi = artifact.compilerOutput.abi; + return CoordinatorRegistryContract.deployAsync(bytecode, abi, provider, txDefaults, ); + } + public static async deployAsync( + bytecode: string, + abi: ContractAbi, + supportedProvider: SupportedProvider, + txDefaults: Partial, + ): Promise { + const provider = providerUtils.standardizeOrThrow(supportedProvider); + const constructorAbi = BaseContract._lookupConstructorAbi(abi); + [] = BaseContract._formatABIDataItemList( + constructorAbi.inputs, + [], + BaseContract._bigNumberToString, + ); + const iface = new ethers.utils.Interface(abi); + const deployInfo = iface.deployFunction; + const txData = deployInfo.encode(bytecode, []); + const web3Wrapper = new Web3Wrapper(provider); + const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + {data: txData}, + txDefaults, + web3Wrapper.estimateGasAsync.bind(web3Wrapper), + ); + const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults); + logUtils.log(`transactionHash: ${txHash}`); + const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash); + logUtils.log(`CoordinatorRegistry successfully deployed at ${txReceipt.contractAddress}`); + const contractInstance = new CoordinatorRegistryContract(abi, txReceipt.contractAddress as string, provider, txDefaults); + contractInstance.constructorArgs = []; + return contractInstance; + } + constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) { + super('CoordinatorRegistry', abi, address, supportedProvider, txDefaults); + classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']); + } +} // tslint:disable:max-file-line-count +// tslint:enable:no-unbound-method diff --git a/packages/abi-gen-wrappers/src/index.ts b/packages/abi-gen-wrappers/src/index.ts index 1a81c01875..54a41c37c7 100644 --- a/packages/abi-gen-wrappers/src/index.ts +++ b/packages/abi-gen-wrappers/src/index.ts @@ -14,3 +14,5 @@ export * from './generated-wrappers/multi_asset_proxy'; export * from './generated-wrappers/order_validator'; export * from './generated-wrappers/weth9'; export * from './generated-wrappers/zrx_token'; +export * from './generated-wrappers/coordinator'; +export * from './generated-wrappers/coordinator_registry'; diff --git a/packages/abi-gen/CHANGELOG.json b/packages/abi-gen/CHANGELOG.json index b8949d3ad7..df099913d5 100644 --- a/packages/abi-gen/CHANGELOG.json +++ b/packages/abi-gen/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "2.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "2.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "2.0.6", diff --git a/packages/abi-gen/CHANGELOG.md b/packages/abi-gen/CHANGELOG.md index b836ef9468..09d21f2411 100644 --- a/packages/abi-gen/CHANGELOG.md +++ b/packages/abi-gen/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.8 - _March 21, 2019_ + + * Dependencies updated + +## v2.0.7 - _March 20, 2019_ + + * Dependencies updated + ## v2.0.6 - _March 1, 2019_ * Dependencies updated diff --git a/packages/abi-gen/package.json b/packages/abi-gen/package.json index 5f81192db3..85a6203e63 100644 --- a/packages/abi-gen/package.json +++ b/packages/abi-gen/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen", - "version": "2.0.6", + "version": "2.0.8", "engines": { "node": ">=6.12" }, @@ -31,10 +31,10 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md", "dependencies": { - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", "chalk": "^2.3.0", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "glob": "^7.1.2", "handlebars": "^4.0.11", "lodash": "^4.17.11", diff --git a/packages/assert/CHANGELOG.json b/packages/assert/CHANGELOG.json index 8eea149d0f..84d233ab9f 100644 --- a/packages/assert/CHANGELOG.json +++ b/packages/assert/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "2.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "2.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "2.0.6", diff --git a/packages/assert/CHANGELOG.md b/packages/assert/CHANGELOG.md index 6e1ec5464a..1201cb0f65 100644 --- a/packages/assert/CHANGELOG.md +++ b/packages/assert/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.8 - _March 21, 2019_ + + * Dependencies updated + +## v2.0.7 - _March 20, 2019_ + + * Dependencies updated + ## v2.0.6 - _March 1, 2019_ * Dependencies updated diff --git a/packages/assert/package.json b/packages/assert/package.json index 1b7456e19c..c78c409c57 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -1,6 +1,6 @@ { "name": "@0x/assert", - "version": "2.0.6", + "version": "2.0.8", "engines": { "node": ">=6.12" }, @@ -44,9 +44,9 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/json-schemas": "^3.0.6", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", + "@0x/json-schemas": "^3.0.8", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", "lodash": "^4.17.11", "valid-url": "^1.0.9" }, diff --git a/packages/asset-buyer/CHANGELOG.json b/packages/asset-buyer/CHANGELOG.json index 851b403d32..a4800c1d79 100644 --- a/packages/asset-buyer/CHANGELOG.json +++ b/packages/asset-buyer/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "6.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "6.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "6.0.3", diff --git a/packages/asset-buyer/CHANGELOG.md b/packages/asset-buyer/CHANGELOG.md index b5a77e06cd..8fb898609e 100644 --- a/packages/asset-buyer/CHANGELOG.md +++ b/packages/asset-buyer/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.5 - _March 21, 2019_ + + * Dependencies updated + +## v6.0.4 - _March 20, 2019_ + + * Dependencies updated + ## v6.0.3 - _March 1, 2019_ * Dependencies updated diff --git a/packages/asset-buyer/package.json b/packages/asset-buyer/package.json index 06ec8f803b..6b26434eff 100644 --- a/packages/asset-buyer/package.json +++ b/packages/asset-buyer/package.json @@ -1,6 +1,6 @@ { "name": "@0x/asset-buyer", - "version": "6.0.3", + "version": "6.0.5", "engines": { "node": ">=6.12" }, @@ -36,17 +36,17 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/asset-buyer/README.md", "dependencies": { - "@0x/assert": "^2.0.6", - "@0x/connect": "^5.0.2", - "@0x/contract-wrappers": "^8.0.3", - "@0x/json-schemas": "^3.0.6", - "@0x/order-utils": "^7.0.2", - "@0x/subproviders": "^4.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/assert": "^2.0.8", + "@0x/connect": "^5.0.4", + "@0x/contract-wrappers": "^8.0.5", + "@0x/json-schemas": "^3.0.8", + "@0x/order-utils": "^7.1.1", + "@0x/subproviders": "^4.0.4", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "devDependencies": { diff --git a/packages/base-contract/CHANGELOG.json b/packages/base-contract/CHANGELOG.json index f68ebe468d..cdebb7a06a 100644 --- a/packages/base-contract/CHANGELOG.json +++ b/packages/base-contract/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "5.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "5.0.3", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "5.0.2", diff --git a/packages/base-contract/CHANGELOG.md b/packages/base-contract/CHANGELOG.md index c14de75851..37db8b8f0e 100644 --- a/packages/base-contract/CHANGELOG.md +++ b/packages/base-contract/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v5.0.4 - _March 21, 2019_ + + * Dependencies updated + +## v5.0.3 - _March 20, 2019_ + + * Dependencies updated + ## v5.0.2 - _March 1, 2019_ * Dependencies updated diff --git a/packages/base-contract/package.json b/packages/base-contract/package.json index 70a6b602c4..9d54c8faec 100644 --- a/packages/base-contract/package.json +++ b/packages/base-contract/package.json @@ -1,6 +1,6 @@ { "name": "@0x/base-contract", - "version": "5.0.2", + "version": "5.0.4", "engines": { "node": ">=6.12" }, @@ -40,10 +40,10 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11" }, diff --git a/packages/connect/CHANGELOG.json b/packages/connect/CHANGELOG.json index ca1104000a..694a3dfb16 100644 --- a/packages/connect/CHANGELOG.json +++ b/packages/connect/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1553183790, + "version": "5.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "5.0.3", "changes": [ @@ -6,7 +15,8 @@ "note": "Update websocket@^1.0.25 -> websocket@^1.0.26", "pr": 1685 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/packages/connect/CHANGELOG.md b/packages/connect/CHANGELOG.md index f34c5cc73d..7d6b718eaa 100644 --- a/packages/connect/CHANGELOG.md +++ b/packages/connect/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v5.0.4 - _March 21, 2019_ + + * Dependencies updated + +## v5.0.3 - _March 20, 2019_ + + * Update websocket@^1.0.25 -> websocket@^1.0.26 (#1685) + ## v5.0.2 - _March 1, 2019_ * Dependencies updated diff --git a/packages/connect/package.json b/packages/connect/package.json index 94d0c0603d..5c170209a7 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -1,6 +1,6 @@ { "name": "@0x/connect", - "version": "5.0.2", + "version": "5.0.4", "engines": { "node": ">=6.12" }, @@ -44,12 +44,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/connect/README.md", "dependencies": { - "@0x/assert": "^2.0.6", - "@0x/json-schemas": "^3.0.6", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", + "@0x/assert": "^2.0.8", + "@0x/json-schemas": "^3.0.8", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", "lodash": "^4.17.11", "query-string": "^6.0.0", "sinon": "^4.0.0", diff --git a/packages/contract-addresses/CHANGELOG.json b/packages/contract-addresses/CHANGELOG.json index ec04c440da..f5dc2d5445 100644 --- a/packages/contract-addresses/CHANGELOG.json +++ b/packages/contract-addresses/CHANGELOG.json @@ -1,4 +1,18 @@ [ + { + "version": "2.3.0", + "changes": [ + { + "note": "Add addresses for coordinator extension contract and coordinator registry", + "pr": 1689 + }, + { + "note": "Added Dutch Auction mainnet address", + "pr": 1715 + } + ], + "timestamp": 1553183790 + }, { "version": "2.2.2", "changes": [ diff --git a/packages/contract-addresses/CHANGELOG.md b/packages/contract-addresses/CHANGELOG.md index f625d56d81..3f27fb526a 100644 --- a/packages/contract-addresses/CHANGELOG.md +++ b/packages/contract-addresses/CHANGELOG.md @@ -5,6 +5,11 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.3.0 - _March 21, 2019_ + + * Add addresses for coordinator extension contract and coordinator registry (#1689) + * Added Dutch Auction mainnet address (#1715) + ## v2.2.2 - _February 25, 2019_ * Fixed Ganache addresses for OrderValidator & Forwarder diff --git a/packages/contract-addresses/package.json b/packages/contract-addresses/package.json index d7cce96882..1c0932580f 100644 --- a/packages/contract-addresses/package.json +++ b/packages/contract-addresses/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-addresses", - "version": "2.2.2", + "version": "2.3.0", "engines": { "node": ">=6.12" }, diff --git a/packages/contract-addresses/src/index.ts b/packages/contract-addresses/src/index.ts index 4f580e8256..b5318c38d8 100644 --- a/packages/contract-addresses/src/index.ts +++ b/packages/contract-addresses/src/index.ts @@ -10,6 +10,8 @@ export interface ContractAddresses { forwarder: string; orderValidator: string; dutchAuction: string; + coordinatorRegistry: string; + coordinator: string; } export enum NetworkId { @@ -32,8 +34,9 @@ const networkToAddresses: { [networkId: number]: ContractAddresses } = { assetProxyOwner: '0x17992e4ffb22730138e4b62aaa6367fa9d3699a6', forwarder: '0x5468a1dc173652ee28d249c271fa9933144746b1', orderValidator: '0x9463e518dea6810309563c81d5266c1b1d149138', - // @todo hysz/dekz: Add mainnet address once deployed. - dutchAuction: NULL_ADDRESS, + dutchAuction: '0x07b32a653754945666cfca91168bb207323dfe67', + coordinatorRegistry: '0x45797531b873fd5e519477a070a955764c1a5b07', + coordinator: '0x24675738816c87ad37e712cc24f309a0c906187f', }, 3: { erc20Proxy: '0xb1408f4c245a23c31b98d2c626777d4c0d766caa', @@ -45,6 +48,8 @@ const networkToAddresses: { [networkId: number]: ContractAddresses } = { forwarder: '0x2240dab907db71e64d3e0dba4800c83b5c502d4e', orderValidator: '0x90431a90516ab49af23a0530e04e8c7836e7122f', dutchAuction: '0x2df6b59309f35ada230ec7d61d7d97355017a1df', + coordinatorRegistry: '0x403cc23e88c17c4652fb904784d1af640a6722d9', + coordinator: '0xc442300dcb4df1ff1db0173e77556dc559de6006', }, 4: { exchange: '0xbce0b5f6eb618c565c3e5f5cd69652bbc279f44e', @@ -56,6 +61,8 @@ const networkToAddresses: { [networkId: number]: ContractAddresses } = { forwarder: '0x2d40589abbdee84961f3a7656b9af7adb0ee5ab4', orderValidator: '0x0c5173a51e26b29d6126c686756fb9fbef71f762', dutchAuction: '0xdd7bd6437e67c422879364740ab5855fe3dc41f7', + coordinatorRegistry: '0x1084b6a398e47907bae43fec3ff4b677db6e4fee', + coordinator: '0xc05e6c01b83eeedecac2f7bab9367da4d4c108df', }, 42: { erc20Proxy: '0xf1ec01d6236d3cd881a0bf0130ea25fe4234003e', @@ -67,6 +74,8 @@ const networkToAddresses: { [networkId: number]: ContractAddresses } = { forwarder: '0x17992e4ffb22730138e4b62aaa6367fa9d3699a6', orderValidator: '0xb389da3d204b412df2f75c6afb3d0a7ce0bc283d', dutchAuction: '0xe11667fb51f34c5367f40d7e379327ce32ee7150', + coordinatorRegistry: '0x09fb99968c016a3ff537bf58fb3d9fe55a7975d5', + coordinator: '0x04b2b090bad68b254881d7eb645a258ce66cc998', }, // NetworkId 50 represents our Ganache snapshot generated from migrations. 50: { @@ -79,6 +88,8 @@ const networkToAddresses: { [networkId: number]: ContractAddresses } = { forwarder: '0x6000eca38b8b5bba64986182fe2a69c57f6b5414', orderValidator: '0x32eecaf51dfea9618e9bc94e9fbfddb1bbdcba15', dutchAuction: '0x7e3f4e1deb8d3a05d9d2da87d9521268d0ec3239', + coordinatorRegistry: '0xaa86dda78e9434aca114b6676fc742a18d15a1cc', + coordinator: '0x4d3d5c850dd5bd9d6f4adda3dd039a3c8054ca29', }, }; diff --git a/packages/contract-artifacts/CHANGELOG.json b/packages/contract-artifacts/CHANGELOG.json index c488fa5c58..1fbfe90604 100644 --- a/packages/contract-artifacts/CHANGELOG.json +++ b/packages/contract-artifacts/CHANGELOG.json @@ -1,4 +1,14 @@ [ + { + "version": "1.4.0", + "changes": [ + { + "note": "Added artifact for `Coordinaotr` and `CoordinatorRegistry` contracts", + "pr": 1689 + } + ], + "timestamp": 1553183790 + }, { "version": "1.3.0", "changes": [ diff --git a/packages/contract-artifacts/CHANGELOG.md b/packages/contract-artifacts/CHANGELOG.md index c1118a3b91..0896220555 100644 --- a/packages/contract-artifacts/CHANGELOG.md +++ b/packages/contract-artifacts/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.4.0 - _March 21, 2019_ + + * Added artifact for `Coordinaotr` and `CoordinatorRegistry` contracts (#1689) + ## v1.3.0 - _January 15, 2019_ * Added artifact for `MultiAssetProxy` contract (#1503) diff --git a/packages/contract-artifacts/artifacts/Coordinator.json b/packages/contract-artifacts/artifacts/Coordinator.json new file mode 100644 index 0000000000..3cc8a1fdd5 --- /dev/null +++ b/packages/contract-artifacts/artifacts/Coordinator.json @@ -0,0 +1,364 @@ +{ + "schemaVersion": "2.0.0", + "contractName": "Coordinator", + "compilerOutput": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "hash", + "type": "bytes32" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "getSignerAddress", + "outputs": [ + { + "name": "signerAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "assertValidCoordinatorApprovals", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "EIP712_DOMAIN_HASH", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "components": [ + { + "name": "makerAddress", + "type": "address" + }, + { + "name": "takerAddress", + "type": "address" + }, + { + "name": "feeRecipientAddress", + "type": "address" + }, + { + "name": "senderAddress", + "type": "address" + }, + { + "name": "makerAssetAmount", + "type": "uint256" + }, + { + "name": "takerAssetAmount", + "type": "uint256" + }, + { + "name": "makerFee", + "type": "uint256" + }, + { + "name": "takerFee", + "type": "uint256" + }, + { + "name": "expirationTimeSeconds", + "type": "uint256" + }, + { + "name": "salt", + "type": "uint256" + }, + { + "name": "makerAssetData", + "type": "bytes" + }, + { + "name": "takerAssetData", + "type": "bytes" + } + ], + "name": "orders", + "type": "tuple[]" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "assertValidTransactionOrdersApproval", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_exchange", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "0x60806040523480156200001157600080fd5b506040516020806200238083398101806040526200003391908101906200022b565b604080517f454950373132446f6d61696e28000000000000000000000000000000000000006020808301919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8301527f737472696e672076657273696f6e2c000000000000000000000000000000000060398301527f6164647265737320766572696679696e67436f6e74726163740000000000000060488301527f29000000000000000000000000000000000000000000000000000000000000006061830152825180830360420181526062830180855281519183019190912060a28401855260179091527f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000060829093019290925282518084018452600581527f312e302e30000000000000000000000000000000000000000000000000000000908201528251808201929092527f626d101e477fd17dd52afb3f9ad9eb016bf60f6e377877f34e8f3ea84c930236828401527f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c6060830152306080808401919091528351808403909101815260a0909201909252805191012060005560018054600160a060020a031916600160a060020a039290921691909117905562000273565b600062000224825162000260565b9392505050565b6000602082840312156200023e57600080fd5b60006200024c848462000216565b949350505050565b600160a060020a031690565b60006200026d8262000254565b92915050565b6120fd80620002836000396000f3fe608060405234801561001057600080fd5b5060043610610084576000357c010000000000000000000000000000000000000000000000000000000090048063d2df07331161006d578063d2df0733146100c7578063e306f779146100da578063e3b1aa86146100ef57610084565b80630f7d8e391461008957806390c3bc3f146100b2575b600080fd5b61009c610097366004611888565b610102565b6040516100a99190611e6f565b60405180910390f35b6100c56100c036600461196e565b6104f7565b005b6100c56100d536600461196e565b6105a3565b6100e26105d4565b6040516100a99190611e7d565b6100c56100fd366004611a42565b6105da565b6000808251111515610149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f3b565b60405180910390fd5b600061015483610821565b7f010000000000000000000000000000000000000000000000000000000000000090049050600360ff8216106101b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b60008160ff1660038111156101c757fe5b905060008160038111156101d757fe5b141561020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f2b565b600181600381111561021d57fe5b141561035b57835160411461025e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b600084600081518110151561026f57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006102b186600163ffffffff6108e516565b905060006102c687602163ffffffff6108e516565b905060018884848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015196506104f195505050505050565b600281600381111561036957fe5b14156104bf5783516041146103aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b60008460008151811015156103bb57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006103fd86600163ffffffff6108e516565b9050600061041287602163ffffffff6108e516565b905060018860405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012084848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b92915050565b61050485858585856105a3565b6001548551602087015160408089015190517fbfc8bfce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9094169363bfc8bfce9361056a93909290918990600401611f5b565b600060405180830381600087803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b505050505050505050565b60606105b28660400151610930565b90506000815111156105cc576105cc8682878787876105da565b505050505050565b60005481565b3273ffffffffffffffffffffffffffffffffffffffff851614610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f0b565b600061063487610de8565b60408051600080825260208201909252845192935091905b80821461073c576000868281518110151561066357fe5b906020019060200201519050610677611220565b506040805160808101825273ffffffffffffffffffffffffffffffffffffffff8b16815260208101879052908101899052606081018290524282116106e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611edb565b60006106f382610dfb565b90506000610718828a8781518110151561070957fe5b90602001906020020151610102565b905061072a878263ffffffff610e0916565b9650506001909301925061064c915050565b5061074d823263ffffffff610e0916565b885190925060005b8082146108145789516000908b908390811061076d57fe5b906020019060200201516060015173ffffffffffffffffffffffffffffffffffffffff16141561079c5761080c565b60008a828151811015156107ac57fe5b6020908102909101015160400151905060006107ce868363ffffffff610ed316565b9050801515610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e9b565b50505b600101610755565b5050505050505050505050565b600080825111151561085f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f1b565b815182907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061088f57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507f0100000000000000000000000000000000000000000000000000000000000000908190040290565b600081602001835110151515610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eeb565b50016020015190565b60606000610944838263ffffffff610f1016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4be83d50000000000000000000000000000000000000000000000000000000014806109d757507fffffffff0000000000000000000000000000000000000000000000000000000081167f3e228bae00000000000000000000000000000000000000000000000000000000145b80610a2357507fffffffff0000000000000000000000000000000000000000000000000000000081167f64a3bc1500000000000000000000000000000000000000000000000000000000145b15610aad57610a30611248565b8351610a4690859060049063ffffffff610f7d16565b806020019051610a5991908101906118da565b604080516001808252818301909252919250816020015b610a78611248565b815260200190600190039081610a7057905050925080836000815181101515610a9d57fe5b6020908102909101015250610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f297bb70b000000000000000000000000000000000000000000000000000000001480610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f50dde19000000000000000000000000000000000000000000000000000000000145b80610b8a57507fffffffff0000000000000000000000000000000000000000000000000000000081167f4d0ae54600000000000000000000000000000000000000000000000000000000145b80610bd657507fffffffff0000000000000000000000000000000000000000000000000000000081167fe5fa431b00000000000000000000000000000000000000000000000000000000145b80610c2257507fffffffff0000000000000000000000000000000000000000000000000000000081167fa3e2038000000000000000000000000000000000000000000000000000000000145b80610c6e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f7e1d980800000000000000000000000000000000000000000000000000000000145b80610cba57507fffffffff0000000000000000000000000000000000000000000000000000000081167fdd1c7d1800000000000000000000000000000000000000000000000000000000145b15610cef578251610cd590849060049063ffffffff610f7d16565b806020019051610ce8919081019061184b565b9150610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f3c28d861000000000000000000000000000000000000000000000000000000001415610de257610d41611248565b610d49611248565b8451610d5f90869060049063ffffffff610f7d16565b806020019051610d72919081019061190f565b60408051600280825260608201909252929450909250816020015b610d95611248565b815260200190600190039081610d8d57905050935081846000815181101515610dba57fe5b602090810290910101528351819085906001908110610dd557fe5b6020908102909101015250505b50919050565b60006104f1610df683611049565b6110b7565b60006104f1610df6836110f7565b815160405160609184906020808202808401820192910182851015610e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ecb565b82851115610e7457610e6d858583611156565b8497508793505b600182019150602081019050808401925082945081885284604052868860018403815181101515610ea157fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152508694505050505092915050565b6000602083510260208401818101815b81811015610f0657805180871415610efd57600195508291505b50602001610ee3565b5050505092915050565b600081600401835110151515610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f4b565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610fb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eab565b8351821115610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ebb565b8282036040519080825280601f01601f191660200182016040528015611021576020820181803883390190505b5090506110426110308261121a565b8461103a8761121a565b018351611156565b9392505050565b604081810151825160209384015182519285019290922083517f213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c81529485019190915273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260608201526080902090565b6000546040517f19010000000000000000000000000000000000000000000000000000000000008152600281019190915260228101919091526042902090565b604080820151825160208085015160608681015185519584019590952086517f2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e058152938401949094529482015292830152608082015260a09020919050565b6020811015611180576001816020036101000a038019835116818551168082178652505050611215565b8282141561118d57611215565b828211156111c75760208103905080820181840181515b828510156111bf5784518652602095860195909401936111a4565b905250611215565b60208103905080820181840183515b8186121561121057825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111d6565b855250505b505050565b60200190565b6040805160808101825260008082526020820181905260609282018390529181019190915290565b61018060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b60006110428235612038565b60006110428251612038565b6000601f8201831361132b57600080fd5b813561133e61133982611fcd565b611fa6565b81815260209384019390925082018360005b83811015610f06578135860161136688826114b2565b8452506020928301929190910190600101611350565b6000601f8201831361138d57600080fd5b815161139b61133982611fcd565b81815260209384019390925082018360005b83811015610f0657815186016113c38882611690565b84525060209283019291909101906001016113ad565b6000601f820183136113ea57600080fd5b81356113f861133982611fcd565b81815260209384019390925082018360005b83811015610f0657813586016114208882611547565b845250602092830192919091019060010161140a565b6000601f8201831361144757600080fd5b813561145561133982611fcd565b9150818183526020840193506020810190508385602084028201111561147a57600080fd5b60005b83811015610f06578161149088826114a6565b845250602092830192919091019060010161147d565b60006110428235612043565b6000601f820183136114c357600080fd5b81356114d161133982611fee565b915080825260208301602083018583830111156114ed57600080fd5b6114f883828461205f565b50505092915050565b6000601f8201831361151257600080fd5b815161152061133982611fee565b9150808252602083016020830185838301111561153c57600080fd5b6114f883828461206b565b6000610180828403121561155a57600080fd5b611565610180611fa6565b905060006115738484611302565b825250602061158484848301611302565b602083015250604061159884828501611302565b60408301525060606115ac84828501611302565b60608301525060806115c0848285016114a6565b60808301525060a06115d4848285016114a6565b60a08301525060c06115e8848285016114a6565b60c08301525060e06115fc848285016114a6565b60e083015250610100611611848285016114a6565b61010083015250610120611627848285016114a6565b6101208301525061014082013567ffffffffffffffff81111561164957600080fd5b611655848285016114b2565b6101408301525061016082013567ffffffffffffffff81111561167757600080fd5b611683848285016114b2565b6101608301525092915050565b600061018082840312156116a357600080fd5b6116ae610180611fa6565b905060006116bc848461130e565b82525060206116cd8484830161130e565b60208301525060406116e18482850161130e565b60408301525060606116f58482850161130e565b60608301525060806117098482850161183f565b60808301525060a061171d8482850161183f565b60a08301525060c06117318482850161183f565b60c08301525060e06117458482850161183f565b60e08301525061010061175a8482850161183f565b610100830152506101206117708482850161183f565b6101208301525061014082015167ffffffffffffffff81111561179257600080fd5b61179e84828501611501565b6101408301525061016082015167ffffffffffffffff8111156117c057600080fd5b61168384828501611501565b6000606082840312156117de57600080fd5b6117e86060611fa6565b905060006117f684846114a6565b825250602061180784848301611302565b602083015250604082013567ffffffffffffffff81111561182757600080fd5b611833848285016114b2565b60408301525092915050565b60006110428251612043565b60006020828403121561185d57600080fd5b815167ffffffffffffffff81111561187457600080fd5b6118808482850161137c565b949350505050565b6000806040838503121561189b57600080fd5b60006118a785856114a6565b925050602083013567ffffffffffffffff8111156118c457600080fd5b6118d0858286016114b2565b9150509250929050565b6000602082840312156118ec57600080fd5b815167ffffffffffffffff81111561190357600080fd5b61188084828501611690565b6000806040838503121561192257600080fd5b825167ffffffffffffffff81111561193957600080fd5b61194585828601611690565b925050602083015167ffffffffffffffff81111561196257600080fd5b6118d085828601611690565b600080600080600060a0868803121561198657600080fd5b853567ffffffffffffffff81111561199d57600080fd5b6119a9888289016117cc565b95505060206119ba88828901611302565b945050604086013567ffffffffffffffff8111156119d757600080fd5b6119e3888289016114b2565b935050606086013567ffffffffffffffff811115611a0057600080fd5b611a0c88828901611436565b925050608086013567ffffffffffffffff811115611a2957600080fd5b611a358882890161131a565b9150509295509295909350565b60008060008060008060c08789031215611a5b57600080fd5b863567ffffffffffffffff811115611a7257600080fd5b611a7e89828a016117cc565b965050602087013567ffffffffffffffff811115611a9b57600080fd5b611aa789828a016113d9565b9550506040611ab889828a01611302565b945050606087013567ffffffffffffffff811115611ad557600080fd5b611ae189828a016114b2565b935050608087013567ffffffffffffffff811115611afe57600080fd5b611b0a89828a01611436565b92505060a087013567ffffffffffffffff811115611b2757600080fd5b611b3389828a0161131a565b9150509295509295509295565b611b4981612038565b82525050565b611b4981612043565b6000611b6382612034565b808452611b7781602086016020860161206b565b611b808161209b565b9093016020019392505050565b601281527f4c454e4754485f36355f52455155495245440000000000000000000000000000602082015260400190565b601a81527f494e56414c49445f415050524f56414c5f5349474e4154555245000000000000602082015260400190565b601a81527f46524f4d5f4c4553535f5448414e5f544f5f5245515549524544000000000000602082015260400190565b601c81527f544f5f4c4553535f5448414e5f4c454e4754485f524551554952454400000000602082015260400190565b601781527f494e56414c49445f465245455f4d454d4f52595f505452000000000000000000602082015260400190565b601081527f415050524f56414c5f4558504952454400000000000000000000000000000000602082015260400190565b602681527f475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f524560208201527f5155495245440000000000000000000000000000000000000000000000000000604082015260600190565b601581527f5349474e41545552455f554e535550504f525445440000000000000000000000602082015260400190565b600e81527f494e56414c49445f4f524947494e000000000000000000000000000000000000602082015260400190565b602181527f475245415445525f5448414e5f5a45524f5f4c454e4754485f5245515549524560208201527f4400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601181527f5349474e41545552455f494c4c4547414c000000000000000000000000000000602082015260400190565b601e81527f4c454e4754485f475245415445525f5448414e5f305f52455155495245440000602082015260400190565b602581527f475245415445525f4f525f455155414c5f544f5f345f4c454e4754485f52455160208201527f5549524544000000000000000000000000000000000000000000000000000000604082015260600190565b602081016104f18284611b40565b602081016104f18284611b4f565b602080825281016104f181611b8d565b602080825281016104f181611bbd565b602080825281016104f181611bed565b602080825281016104f181611c1d565b602080825281016104f181611c4d565b602080825281016104f181611c7d565b602080825281016104f181611cad565b602080825281016104f181611d03565b602080825281016104f181611d33565b602080825281016104f181611d63565b602080825281016104f181611db9565b602080825281016104f181611de9565b602080825281016104f181611e19565b60808101611f698287611b4f565b611f766020830186611b40565b8181036040830152611f888185611b58565b90508181036060830152611f9c8184611b58565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611fc557600080fd5b604052919050565b600067ffffffffffffffff821115611fe457600080fd5b5060209081020190565b600067ffffffffffffffff82111561200557600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b60006104f182612046565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561208657818101518382015260200161206e565b83811115612095576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a7230582013be4e9e281ff59b6be3d1c4c7af6075c7d255edc60be429d25841f98f287b3e6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x2380 DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE PUSH3 0x33 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x22B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x454950373132446F6D61696E2800000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x737472696E67206E616D652C0000000000000000000000000000000000000000 PUSH1 0x2D DUP4 ADD MSTORE PUSH32 0x737472696E672076657273696F6E2C0000000000000000000000000000000000 PUSH1 0x39 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x2900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x61 DUP4 ADD MSTORE DUP3 MLOAD DUP1 DUP4 SUB PUSH1 0x42 ADD DUP2 MSTORE PUSH1 0x62 DUP4 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xA2 DUP5 ADD DUP6 MSTORE PUSH1 0x17 SWAP1 SWAP2 MSTORE PUSH32 0x30782050726F746F636F6C20436F6F7264696E61746F72000000000000000000 PUSH1 0x82 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x312E302E30000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x626D101E477FD17DD52AFB3F9AD9EB016BF60F6E377877F34E8F3EA84C930236 DUP3 DUP5 ADD MSTORE PUSH32 0x6C015BD22B4C69690933C1058878EBDFEF31F9AAAE40BBE86D8A09FE1B2972C PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x273 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x224 DUP3 MLOAD PUSH3 0x260 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x24C DUP5 DUP5 PUSH3 0x216 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x26D DUP3 PUSH3 0x254 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20FD DUP1 PUSH3 0x283 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x84 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0xD2DF0733 GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD2DF0733 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0xE306F779 EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0xE3B1AA86 EQ PUSH2 0xEF JUMPI PUSH2 0x84 JUMP JUMPDEST DUP1 PUSH4 0xF7D8E39 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x90C3BC3F EQ PUSH2 0xB2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x1888 JUMP JUMPDEST PUSH2 0x102 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x4F7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH2 0xD5 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xE2 PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1A42 JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x149 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP4 PUSH2 0x821 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0x3 PUSH1 0xFF DUP3 AND LT PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F2B JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x35B JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x25E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x26F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x2B1 DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C6 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP7 POP PUSH2 0x4F1 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x369 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4BF JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x3BB JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x3FD DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x412 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP PUSH1 0x1C ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x504 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP1 DUP10 ADD MLOAD SWAP1 MLOAD PUSH32 0xBFC8BFCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND SWAP4 PUSH4 0xBFC8BFCE SWAP4 PUSH2 0x56A SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x598 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5B2 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x930 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0x5CC JUMPI PUSH2 0x5CC DUP7 DUP3 DUP8 DUP8 DUP8 DUP8 PUSH2 0x5DA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST ORIGIN PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x634 DUP8 PUSH2 0xDE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE DUP5 MLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 JUMPDEST DUP1 DUP3 EQ PUSH2 0x73C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x663 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD SWAP1 POP PUSH2 0x677 PUSH2 0x1220 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE TIMESTAMP DUP3 GT PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EDB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F3 DUP3 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x718 DUP3 DUP11 DUP8 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x709 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x102 JUMP JUMPDEST SWAP1 POP PUSH2 0x72A DUP8 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST SWAP7 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x64C SWAP2 POP POP JUMP JUMPDEST POP PUSH2 0x74D DUP3 ORIGIN PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST DUP9 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 JUMPDEST DUP1 DUP3 EQ PUSH2 0x814 JUMPI DUP10 MLOAD PUSH1 0x0 SWAP1 DUP12 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x76D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x79C JUMPI PUSH2 0x80C JUMP JUMPDEST PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x7AC JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7CE DUP7 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xED3 AND JUMP JUMPDEST SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x755 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F1B JUMP JUMPDEST DUP2 MLOAD DUP3 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 LT PUSH2 0x88F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0x927 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EEB JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x944 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF10 AND JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB4BE83D500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9D7 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3E228BAE00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xA23 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x64A3BC1500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xAAD JUMPI PUSH2 0xA30 PUSH2 0x1248 JUMP JUMPDEST DUP4 MLOAD PUSH2 0xA46 SWAP1 DUP6 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xA59 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xA78 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA70 JUMPI SWAP1 POP POP SWAP3 POP DUP1 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA9D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x297BB70B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xB3E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x50DDE19000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB8A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4D0AE54600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xBD6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xE5FA431B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC22 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xA3E2038000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC6E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x7E1D980800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCBA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDD1C7D1800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xCEF JUMPI DUP3 MLOAD PUSH2 0xCD5 SWAP1 DUP5 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xCE8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x184B JUMP JUMPDEST SWAP2 POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3C28D86100000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xDE2 JUMPI PUSH2 0xD41 PUSH2 0x1248 JUMP JUMPDEST PUSH2 0xD49 PUSH2 0x1248 JUMP JUMPDEST DUP5 MLOAD PUSH2 0xD5F SWAP1 DUP7 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xD72 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x190F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xD95 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD8D JUMPI SWAP1 POP POP SWAP4 POP DUP2 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xDBA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD DUP2 SWAP1 DUP6 SWAP1 PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0xDD5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x1049 JUMP JUMPDEST PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x10F7 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 MLOAD PUSH1 0x60 SWAP2 DUP5 SWAP1 PUSH1 0x20 DUP1 DUP3 MUL DUP1 DUP5 ADD DUP3 ADD SWAP3 SWAP2 ADD DUP3 DUP6 LT ISZERO PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1ECB JUMP JUMPDEST DUP3 DUP6 GT ISZERO PUSH2 0xE74 JUMPI PUSH2 0xE6D DUP6 DUP6 DUP4 PUSH2 0x1156 JUMP JUMPDEST DUP5 SWAP8 POP DUP8 SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP1 DUP5 ADD SWAP3 POP DUP3 SWAP5 POP DUP2 DUP9 MSTORE DUP5 PUSH1 0x40 MSTORE DUP7 DUP9 PUSH1 0x1 DUP5 SUB DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xEA1 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP7 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 MLOAD MUL PUSH1 0x20 DUP5 ADD DUP2 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP1 MLOAD DUP1 DUP8 EQ ISZERO PUSH2 0xEFD JUMPI PUSH1 0x1 SWAP6 POP DUP3 SWAP2 POP JUMPDEST POP PUSH1 0x20 ADD PUSH2 0xEE3 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F4B JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 GT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EAB JUMP JUMPDEST DUP4 MLOAD DUP3 GT ISZERO PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST DUP3 DUP3 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1042 PUSH2 0x1030 DUP3 PUSH2 0x121A JUMP JUMPDEST DUP5 PUSH2 0x103A DUP8 PUSH2 0x121A JUMP JUMPDEST ADD DUP4 MLOAD PUSH2 0x1156 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 DUP2 ADD MLOAD DUP3 MLOAD PUSH1 0x20 SWAP4 DUP5 ADD MLOAD DUP3 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP4 MLOAD PUSH32 0x213C6F636F3EA94E701C0ADF9B2624AA45A6C694F9A292C094F9A81C24B5DF4C DUP2 MSTORE SWAP5 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 DUP2 ADD MLOAD DUP6 MLOAD SWAP6 DUP5 ADD SWAP6 SWAP1 SWAP6 KECCAK256 DUP7 MLOAD PUSH32 0x2FBCDBAA76BC7589916958AE919DFBEF04D23F6BBF26DE6FF317B32C6CC01E05 DUP2 MSTORE SWAP4 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 DUP3 ADD MSTORE SWAP3 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1180 JUMPI PUSH1 0x1 DUP2 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP4 MLOAD AND DUP2 DUP6 MLOAD AND DUP1 DUP3 OR DUP7 MSTORE POP POP POP PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 EQ ISZERO PUSH2 0x118D JUMPI PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH2 0x11C7 JUMPI PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP2 MLOAD JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0x11BF JUMPI DUP5 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 MSTORE POP PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP4 MLOAD JUMPDEST DUP2 DUP7 SLT ISZERO PUSH2 0x1210 JUMPI DUP3 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x11D6 JUMP JUMPDEST DUP6 MSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x132B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x133E PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x1FA6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1366 DUP9 DUP3 PUSH2 0x14B2 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1350 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x139B PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x13C3 DUP9 DUP3 PUSH2 0x1690 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x13EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13F8 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1420 DUP9 DUP3 PUSH2 0x1547 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x140A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1455 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x147A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 PUSH2 0x1490 DUP9 DUP3 PUSH2 0x14A6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x14C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x14D1 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x14ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x205F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1520 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x153C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x206B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1565 PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1573 DUP5 DUP5 PUSH2 0x1302 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1584 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1598 DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x15AC DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x15C0 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x15D4 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x15E8 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x15FC DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x1611 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1627 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1655 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16AE PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16BC DUP5 DUP5 PUSH2 0x130E JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x16CD DUP5 DUP5 DUP4 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x16E1 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x16F5 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x1709 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x171D DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x1731 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x1745 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x175A DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1770 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x179E DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E8 PUSH1 0x60 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17F6 DUP5 DUP5 PUSH2 0x14A6 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1807 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1833 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x137C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x189B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18A7 DUP6 DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1945 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x199D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A9 DUP9 DUP3 DUP10 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x19BA DUP9 DUP3 DUP10 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19E3 DUP9 DUP3 DUP10 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A0C DUP9 DUP3 DUP10 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A35 DUP9 DUP3 DUP10 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1A5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7E DUP10 DUP3 DUP11 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA7 DUP10 DUP3 DUP11 ADD PUSH2 0x13D9 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x1AB8 DUP10 DUP3 DUP11 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AE1 DUP10 DUP3 DUP11 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B0A DUP10 DUP3 DUP11 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B33 DUP10 DUP3 DUP11 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2038 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x2034 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x1B77 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x206B JUMP JUMPDEST PUSH2 0x1B80 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH32 0x4C454E4754485F36355F52455155495245440000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x494E56414C49445F415050524F56414C5F5349474E4154555245000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x46524F4D5F4C4553535F5448414E5F544F5F5245515549524544000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1C DUP2 MSTORE PUSH32 0x544F5F4C4553535F5448414E5F4C454E4754485F524551554952454400000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x17 DUP2 MSTORE PUSH32 0x494E56414C49445F465245455F4D454D4F52595F505452000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x10 DUP2 MSTORE PUSH32 0x415050524F56414C5F4558504952454400000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F33325F4C454E4754485F5245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5155495245440000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x15 DUP2 MSTORE PUSH32 0x5349474E41545552455F554E535550504F525445440000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xE DUP2 MSTORE PUSH32 0x494E56414C49445F4F524947494E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x21 DUP2 MSTORE PUSH32 0x475245415445525F5448414E5F5A45524F5F4C454E4754485F52455155495245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH32 0x5349474E41545552455F494C4C4547414C000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1E DUP2 MSTORE PUSH32 0x4C454E4754485F475245415445525F5448414E5F305F52455155495245440000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x25 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F345F4C454E4754485F524551 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5549524544000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B40 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B4F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1B8D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C1D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C7D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1CAD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DB9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1E19 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1F69 DUP3 DUP8 PUSH2 0x1B4F JUMP JUMPDEST PUSH2 0x1F76 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1B40 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1F88 DUP2 DUP6 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1F9C DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 DUP3 PUSH2 0x2046 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2086 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x206E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 SGT 0xbe 0x4e SWAP15 0x28 0x1f CREATE2 SWAP12 PUSH12 0xE3D1C4C7AF6075C7D255EDC6 SIGNEXTEND 0xe4 0x29 0xd2 PC COINBASE 0xf9 DUP16 0x28 PUSH28 0x3E6C6578706572696D656E74616CF500370000000000000000000000 ", + "sourceMap": "837:227:0:-;;;977:85;8:9:-1;5:2;;;30:1;27;20:12;5:2;977:85:0;;;;;;;;;;;;;;;;;;;;;;1067:148:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1067:148:10;;;;;;1057:159;;;;;;;;;1533:18;;;;;;;;;;;;;;;;;;1583:21;;;;;;;;;;;;;;;1438:214;;;;;;;;;1517:36;1438:214;;;;1567:39;1438:214;;;;1636:4;1438:214;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1438:214:10;;;;;;;1428:225;;;;;-1:-1:-1;1407:246:10;1067:148;830:35:8;;-1:-1:-1;;;;;;830:35:8;-1:-1:-1;;;;;830:35:8;;;;;;;;;;837:227:0;;5:122:-1;;83:39;114:6;108:13;83:39;;;74:48;68:59;-1:-1;;;68:59;134:263;;249:2;237:9;228:7;224:23;220:32;217:2;;;265:1;262;255:12;217:2;300:1;317:64;373:7;353:9;317:64;;;307:74;211:186;-1:-1;;;;211:186;404:128;-1:-1;;;;;473:54;;456:76;539:105;;608:31;633:5;608:31;;;597:42;591:53;-1:-1;;591:53;;837:227:0;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b5060043610610084576000357c010000000000000000000000000000000000000000000000000000000090048063d2df07331161006d578063d2df0733146100c7578063e306f779146100da578063e3b1aa86146100ef57610084565b80630f7d8e391461008957806390c3bc3f146100b2575b600080fd5b61009c610097366004611888565b610102565b6040516100a99190611e6f565b60405180910390f35b6100c56100c036600461196e565b6104f7565b005b6100c56100d536600461196e565b6105a3565b6100e26105d4565b6040516100a99190611e7d565b6100c56100fd366004611a42565b6105da565b6000808251111515610149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f3b565b60405180910390fd5b600061015483610821565b7f010000000000000000000000000000000000000000000000000000000000000090049050600360ff8216106101b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b60008160ff1660038111156101c757fe5b905060008160038111156101d757fe5b141561020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f2b565b600181600381111561021d57fe5b141561035b57835160411461025e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b600084600081518110151561026f57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006102b186600163ffffffff6108e516565b905060006102c687602163ffffffff6108e516565b905060018884848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015196506104f195505050505050565b600281600381111561036957fe5b14156104bf5783516041146103aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b60008460008151811015156103bb57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006103fd86600163ffffffff6108e516565b9050600061041287602163ffffffff6108e516565b905060018860405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012084848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b92915050565b61050485858585856105a3565b6001548551602087015160408089015190517fbfc8bfce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9094169363bfc8bfce9361056a93909290918990600401611f5b565b600060405180830381600087803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b505050505050505050565b60606105b28660400151610930565b90506000815111156105cc576105cc8682878787876105da565b505050505050565b60005481565b3273ffffffffffffffffffffffffffffffffffffffff851614610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f0b565b600061063487610de8565b60408051600080825260208201909252845192935091905b80821461073c576000868281518110151561066357fe5b906020019060200201519050610677611220565b506040805160808101825273ffffffffffffffffffffffffffffffffffffffff8b16815260208101879052908101899052606081018290524282116106e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611edb565b60006106f382610dfb565b90506000610718828a8781518110151561070957fe5b90602001906020020151610102565b905061072a878263ffffffff610e0916565b9650506001909301925061064c915050565b5061074d823263ffffffff610e0916565b885190925060005b8082146108145789516000908b908390811061076d57fe5b906020019060200201516060015173ffffffffffffffffffffffffffffffffffffffff16141561079c5761080c565b60008a828151811015156107ac57fe5b6020908102909101015160400151905060006107ce868363ffffffff610ed316565b9050801515610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e9b565b50505b600101610755565b5050505050505050505050565b600080825111151561085f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f1b565b815182907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061088f57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507f0100000000000000000000000000000000000000000000000000000000000000908190040290565b600081602001835110151515610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eeb565b50016020015190565b60606000610944838263ffffffff610f1016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4be83d50000000000000000000000000000000000000000000000000000000014806109d757507fffffffff0000000000000000000000000000000000000000000000000000000081167f3e228bae00000000000000000000000000000000000000000000000000000000145b80610a2357507fffffffff0000000000000000000000000000000000000000000000000000000081167f64a3bc1500000000000000000000000000000000000000000000000000000000145b15610aad57610a30611248565b8351610a4690859060049063ffffffff610f7d16565b806020019051610a5991908101906118da565b604080516001808252818301909252919250816020015b610a78611248565b815260200190600190039081610a7057905050925080836000815181101515610a9d57fe5b6020908102909101015250610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f297bb70b000000000000000000000000000000000000000000000000000000001480610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f50dde19000000000000000000000000000000000000000000000000000000000145b80610b8a57507fffffffff0000000000000000000000000000000000000000000000000000000081167f4d0ae54600000000000000000000000000000000000000000000000000000000145b80610bd657507fffffffff0000000000000000000000000000000000000000000000000000000081167fe5fa431b00000000000000000000000000000000000000000000000000000000145b80610c2257507fffffffff0000000000000000000000000000000000000000000000000000000081167fa3e2038000000000000000000000000000000000000000000000000000000000145b80610c6e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f7e1d980800000000000000000000000000000000000000000000000000000000145b80610cba57507fffffffff0000000000000000000000000000000000000000000000000000000081167fdd1c7d1800000000000000000000000000000000000000000000000000000000145b15610cef578251610cd590849060049063ffffffff610f7d16565b806020019051610ce8919081019061184b565b9150610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f3c28d861000000000000000000000000000000000000000000000000000000001415610de257610d41611248565b610d49611248565b8451610d5f90869060049063ffffffff610f7d16565b806020019051610d72919081019061190f565b60408051600280825260608201909252929450909250816020015b610d95611248565b815260200190600190039081610d8d57905050935081846000815181101515610dba57fe5b602090810290910101528351819085906001908110610dd557fe5b6020908102909101015250505b50919050565b60006104f1610df683611049565b6110b7565b60006104f1610df6836110f7565b815160405160609184906020808202808401820192910182851015610e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ecb565b82851115610e7457610e6d858583611156565b8497508793505b600182019150602081019050808401925082945081885284604052868860018403815181101515610ea157fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152508694505050505092915050565b6000602083510260208401818101815b81811015610f0657805180871415610efd57600195508291505b50602001610ee3565b5050505092915050565b600081600401835110151515610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f4b565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610fb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eab565b8351821115610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ebb565b8282036040519080825280601f01601f191660200182016040528015611021576020820181803883390190505b5090506110426110308261121a565b8461103a8761121a565b018351611156565b9392505050565b604081810151825160209384015182519285019290922083517f213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c81529485019190915273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260608201526080902090565b6000546040517f19010000000000000000000000000000000000000000000000000000000000008152600281019190915260228101919091526042902090565b604080820151825160208085015160608681015185519584019590952086517f2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e058152938401949094529482015292830152608082015260a09020919050565b6020811015611180576001816020036101000a038019835116818551168082178652505050611215565b8282141561118d57611215565b828211156111c75760208103905080820181840181515b828510156111bf5784518652602095860195909401936111a4565b905250611215565b60208103905080820181840183515b8186121561121057825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111d6565b855250505b505050565b60200190565b6040805160808101825260008082526020820181905260609282018390529181019190915290565b61018060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b60006110428235612038565b60006110428251612038565b6000601f8201831361132b57600080fd5b813561133e61133982611fcd565b611fa6565b81815260209384019390925082018360005b83811015610f06578135860161136688826114b2565b8452506020928301929190910190600101611350565b6000601f8201831361138d57600080fd5b815161139b61133982611fcd565b81815260209384019390925082018360005b83811015610f0657815186016113c38882611690565b84525060209283019291909101906001016113ad565b6000601f820183136113ea57600080fd5b81356113f861133982611fcd565b81815260209384019390925082018360005b83811015610f0657813586016114208882611547565b845250602092830192919091019060010161140a565b6000601f8201831361144757600080fd5b813561145561133982611fcd565b9150818183526020840193506020810190508385602084028201111561147a57600080fd5b60005b83811015610f06578161149088826114a6565b845250602092830192919091019060010161147d565b60006110428235612043565b6000601f820183136114c357600080fd5b81356114d161133982611fee565b915080825260208301602083018583830111156114ed57600080fd5b6114f883828461205f565b50505092915050565b6000601f8201831361151257600080fd5b815161152061133982611fee565b9150808252602083016020830185838301111561153c57600080fd5b6114f883828461206b565b6000610180828403121561155a57600080fd5b611565610180611fa6565b905060006115738484611302565b825250602061158484848301611302565b602083015250604061159884828501611302565b60408301525060606115ac84828501611302565b60608301525060806115c0848285016114a6565b60808301525060a06115d4848285016114a6565b60a08301525060c06115e8848285016114a6565b60c08301525060e06115fc848285016114a6565b60e083015250610100611611848285016114a6565b61010083015250610120611627848285016114a6565b6101208301525061014082013567ffffffffffffffff81111561164957600080fd5b611655848285016114b2565b6101408301525061016082013567ffffffffffffffff81111561167757600080fd5b611683848285016114b2565b6101608301525092915050565b600061018082840312156116a357600080fd5b6116ae610180611fa6565b905060006116bc848461130e565b82525060206116cd8484830161130e565b60208301525060406116e18482850161130e565b60408301525060606116f58482850161130e565b60608301525060806117098482850161183f565b60808301525060a061171d8482850161183f565b60a08301525060c06117318482850161183f565b60c08301525060e06117458482850161183f565b60e08301525061010061175a8482850161183f565b610100830152506101206117708482850161183f565b6101208301525061014082015167ffffffffffffffff81111561179257600080fd5b61179e84828501611501565b6101408301525061016082015167ffffffffffffffff8111156117c057600080fd5b61168384828501611501565b6000606082840312156117de57600080fd5b6117e86060611fa6565b905060006117f684846114a6565b825250602061180784848301611302565b602083015250604082013567ffffffffffffffff81111561182757600080fd5b611833848285016114b2565b60408301525092915050565b60006110428251612043565b60006020828403121561185d57600080fd5b815167ffffffffffffffff81111561187457600080fd5b6118808482850161137c565b949350505050565b6000806040838503121561189b57600080fd5b60006118a785856114a6565b925050602083013567ffffffffffffffff8111156118c457600080fd5b6118d0858286016114b2565b9150509250929050565b6000602082840312156118ec57600080fd5b815167ffffffffffffffff81111561190357600080fd5b61188084828501611690565b6000806040838503121561192257600080fd5b825167ffffffffffffffff81111561193957600080fd5b61194585828601611690565b925050602083015167ffffffffffffffff81111561196257600080fd5b6118d085828601611690565b600080600080600060a0868803121561198657600080fd5b853567ffffffffffffffff81111561199d57600080fd5b6119a9888289016117cc565b95505060206119ba88828901611302565b945050604086013567ffffffffffffffff8111156119d757600080fd5b6119e3888289016114b2565b935050606086013567ffffffffffffffff811115611a0057600080fd5b611a0c88828901611436565b925050608086013567ffffffffffffffff811115611a2957600080fd5b611a358882890161131a565b9150509295509295909350565b60008060008060008060c08789031215611a5b57600080fd5b863567ffffffffffffffff811115611a7257600080fd5b611a7e89828a016117cc565b965050602087013567ffffffffffffffff811115611a9b57600080fd5b611aa789828a016113d9565b9550506040611ab889828a01611302565b945050606087013567ffffffffffffffff811115611ad557600080fd5b611ae189828a016114b2565b935050608087013567ffffffffffffffff811115611afe57600080fd5b611b0a89828a01611436565b92505060a087013567ffffffffffffffff811115611b2757600080fd5b611b3389828a0161131a565b9150509295509295509295565b611b4981612038565b82525050565b611b4981612043565b6000611b6382612034565b808452611b7781602086016020860161206b565b611b808161209b565b9093016020019392505050565b601281527f4c454e4754485f36355f52455155495245440000000000000000000000000000602082015260400190565b601a81527f494e56414c49445f415050524f56414c5f5349474e4154555245000000000000602082015260400190565b601a81527f46524f4d5f4c4553535f5448414e5f544f5f5245515549524544000000000000602082015260400190565b601c81527f544f5f4c4553535f5448414e5f4c454e4754485f524551554952454400000000602082015260400190565b601781527f494e56414c49445f465245455f4d454d4f52595f505452000000000000000000602082015260400190565b601081527f415050524f56414c5f4558504952454400000000000000000000000000000000602082015260400190565b602681527f475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f524560208201527f5155495245440000000000000000000000000000000000000000000000000000604082015260600190565b601581527f5349474e41545552455f554e535550504f525445440000000000000000000000602082015260400190565b600e81527f494e56414c49445f4f524947494e000000000000000000000000000000000000602082015260400190565b602181527f475245415445525f5448414e5f5a45524f5f4c454e4754485f5245515549524560208201527f4400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601181527f5349474e41545552455f494c4c4547414c000000000000000000000000000000602082015260400190565b601e81527f4c454e4754485f475245415445525f5448414e5f305f52455155495245440000602082015260400190565b602581527f475245415445525f4f525f455155414c5f544f5f345f4c454e4754485f52455160208201527f5549524544000000000000000000000000000000000000000000000000000000604082015260600190565b602081016104f18284611b40565b602081016104f18284611b4f565b602080825281016104f181611b8d565b602080825281016104f181611bbd565b602080825281016104f181611bed565b602080825281016104f181611c1d565b602080825281016104f181611c4d565b602080825281016104f181611c7d565b602080825281016104f181611cad565b602080825281016104f181611d03565b602080825281016104f181611d33565b602080825281016104f181611d63565b602080825281016104f181611db9565b602080825281016104f181611de9565b602080825281016104f181611e19565b60808101611f698287611b4f565b611f766020830186611b40565b8181036040830152611f888185611b58565b90508181036060830152611f9c8184611b58565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611fc557600080fd5b604052919050565b600067ffffffffffffffff821115611fe457600080fd5b5060209081020190565b600067ffffffffffffffff82111561200557600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b60006104f182612046565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561208657818101518382015260200161206e565b83811115612095576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a7230582013be4e9e281ff59b6be3d1c4c7af6075c7d255edc60be429d25841f98f287b3e6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x84 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0xD2DF0733 GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD2DF0733 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0xE306F779 EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0xE3B1AA86 EQ PUSH2 0xEF JUMPI PUSH2 0x84 JUMP JUMPDEST DUP1 PUSH4 0xF7D8E39 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x90C3BC3F EQ PUSH2 0xB2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x1888 JUMP JUMPDEST PUSH2 0x102 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x4F7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH2 0xD5 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xE2 PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1A42 JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x149 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP4 PUSH2 0x821 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0x3 PUSH1 0xFF DUP3 AND LT PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F2B JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x35B JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x25E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x26F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x2B1 DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C6 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP7 POP PUSH2 0x4F1 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x369 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4BF JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x3BB JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x3FD DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x412 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP PUSH1 0x1C ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x504 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP1 DUP10 ADD MLOAD SWAP1 MLOAD PUSH32 0xBFC8BFCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND SWAP4 PUSH4 0xBFC8BFCE SWAP4 PUSH2 0x56A SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x598 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5B2 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x930 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0x5CC JUMPI PUSH2 0x5CC DUP7 DUP3 DUP8 DUP8 DUP8 DUP8 PUSH2 0x5DA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST ORIGIN PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x634 DUP8 PUSH2 0xDE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE DUP5 MLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 JUMPDEST DUP1 DUP3 EQ PUSH2 0x73C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x663 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD SWAP1 POP PUSH2 0x677 PUSH2 0x1220 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE TIMESTAMP DUP3 GT PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EDB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F3 DUP3 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x718 DUP3 DUP11 DUP8 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x709 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x102 JUMP JUMPDEST SWAP1 POP PUSH2 0x72A DUP8 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST SWAP7 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x64C SWAP2 POP POP JUMP JUMPDEST POP PUSH2 0x74D DUP3 ORIGIN PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST DUP9 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 JUMPDEST DUP1 DUP3 EQ PUSH2 0x814 JUMPI DUP10 MLOAD PUSH1 0x0 SWAP1 DUP12 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x76D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x79C JUMPI PUSH2 0x80C JUMP JUMPDEST PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x7AC JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7CE DUP7 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xED3 AND JUMP JUMPDEST SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x755 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F1B JUMP JUMPDEST DUP2 MLOAD DUP3 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 LT PUSH2 0x88F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0x927 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EEB JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x944 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF10 AND JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB4BE83D500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9D7 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3E228BAE00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xA23 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x64A3BC1500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xAAD JUMPI PUSH2 0xA30 PUSH2 0x1248 JUMP JUMPDEST DUP4 MLOAD PUSH2 0xA46 SWAP1 DUP6 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xA59 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xA78 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA70 JUMPI SWAP1 POP POP SWAP3 POP DUP1 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA9D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x297BB70B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xB3E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x50DDE19000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB8A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4D0AE54600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xBD6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xE5FA431B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC22 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xA3E2038000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC6E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x7E1D980800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCBA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDD1C7D1800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xCEF JUMPI DUP3 MLOAD PUSH2 0xCD5 SWAP1 DUP5 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xCE8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x184B JUMP JUMPDEST SWAP2 POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3C28D86100000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xDE2 JUMPI PUSH2 0xD41 PUSH2 0x1248 JUMP JUMPDEST PUSH2 0xD49 PUSH2 0x1248 JUMP JUMPDEST DUP5 MLOAD PUSH2 0xD5F SWAP1 DUP7 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xD72 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x190F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xD95 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD8D JUMPI SWAP1 POP POP SWAP4 POP DUP2 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xDBA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD DUP2 SWAP1 DUP6 SWAP1 PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0xDD5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x1049 JUMP JUMPDEST PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x10F7 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 MLOAD PUSH1 0x60 SWAP2 DUP5 SWAP1 PUSH1 0x20 DUP1 DUP3 MUL DUP1 DUP5 ADD DUP3 ADD SWAP3 SWAP2 ADD DUP3 DUP6 LT ISZERO PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1ECB JUMP JUMPDEST DUP3 DUP6 GT ISZERO PUSH2 0xE74 JUMPI PUSH2 0xE6D DUP6 DUP6 DUP4 PUSH2 0x1156 JUMP JUMPDEST DUP5 SWAP8 POP DUP8 SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP1 DUP5 ADD SWAP3 POP DUP3 SWAP5 POP DUP2 DUP9 MSTORE DUP5 PUSH1 0x40 MSTORE DUP7 DUP9 PUSH1 0x1 DUP5 SUB DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xEA1 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP7 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 MLOAD MUL PUSH1 0x20 DUP5 ADD DUP2 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP1 MLOAD DUP1 DUP8 EQ ISZERO PUSH2 0xEFD JUMPI PUSH1 0x1 SWAP6 POP DUP3 SWAP2 POP JUMPDEST POP PUSH1 0x20 ADD PUSH2 0xEE3 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F4B JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 GT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EAB JUMP JUMPDEST DUP4 MLOAD DUP3 GT ISZERO PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST DUP3 DUP3 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1042 PUSH2 0x1030 DUP3 PUSH2 0x121A JUMP JUMPDEST DUP5 PUSH2 0x103A DUP8 PUSH2 0x121A JUMP JUMPDEST ADD DUP4 MLOAD PUSH2 0x1156 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 DUP2 ADD MLOAD DUP3 MLOAD PUSH1 0x20 SWAP4 DUP5 ADD MLOAD DUP3 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP4 MLOAD PUSH32 0x213C6F636F3EA94E701C0ADF9B2624AA45A6C694F9A292C094F9A81C24B5DF4C DUP2 MSTORE SWAP5 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 DUP2 ADD MLOAD DUP6 MLOAD SWAP6 DUP5 ADD SWAP6 SWAP1 SWAP6 KECCAK256 DUP7 MLOAD PUSH32 0x2FBCDBAA76BC7589916958AE919DFBEF04D23F6BBF26DE6FF317B32C6CC01E05 DUP2 MSTORE SWAP4 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 DUP3 ADD MSTORE SWAP3 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1180 JUMPI PUSH1 0x1 DUP2 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP4 MLOAD AND DUP2 DUP6 MLOAD AND DUP1 DUP3 OR DUP7 MSTORE POP POP POP PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 EQ ISZERO PUSH2 0x118D JUMPI PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH2 0x11C7 JUMPI PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP2 MLOAD JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0x11BF JUMPI DUP5 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 MSTORE POP PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP4 MLOAD JUMPDEST DUP2 DUP7 SLT ISZERO PUSH2 0x1210 JUMPI DUP3 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x11D6 JUMP JUMPDEST DUP6 MSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x132B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x133E PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x1FA6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1366 DUP9 DUP3 PUSH2 0x14B2 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1350 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x139B PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x13C3 DUP9 DUP3 PUSH2 0x1690 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x13EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13F8 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1420 DUP9 DUP3 PUSH2 0x1547 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x140A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1455 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x147A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 PUSH2 0x1490 DUP9 DUP3 PUSH2 0x14A6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x14C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x14D1 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x14ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x205F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1520 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x153C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x206B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1565 PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1573 DUP5 DUP5 PUSH2 0x1302 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1584 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1598 DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x15AC DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x15C0 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x15D4 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x15E8 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x15FC DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x1611 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1627 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1655 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16AE PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16BC DUP5 DUP5 PUSH2 0x130E JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x16CD DUP5 DUP5 DUP4 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x16E1 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x16F5 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x1709 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x171D DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x1731 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x1745 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x175A DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1770 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x179E DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E8 PUSH1 0x60 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17F6 DUP5 DUP5 PUSH2 0x14A6 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1807 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1833 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x137C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x189B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18A7 DUP6 DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1945 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x199D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A9 DUP9 DUP3 DUP10 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x19BA DUP9 DUP3 DUP10 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19E3 DUP9 DUP3 DUP10 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A0C DUP9 DUP3 DUP10 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A35 DUP9 DUP3 DUP10 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1A5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7E DUP10 DUP3 DUP11 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA7 DUP10 DUP3 DUP11 ADD PUSH2 0x13D9 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x1AB8 DUP10 DUP3 DUP11 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AE1 DUP10 DUP3 DUP11 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B0A DUP10 DUP3 DUP11 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B33 DUP10 DUP3 DUP11 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2038 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x2034 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x1B77 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x206B JUMP JUMPDEST PUSH2 0x1B80 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH32 0x4C454E4754485F36355F52455155495245440000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x494E56414C49445F415050524F56414C5F5349474E4154555245000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x46524F4D5F4C4553535F5448414E5F544F5F5245515549524544000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1C DUP2 MSTORE PUSH32 0x544F5F4C4553535F5448414E5F4C454E4754485F524551554952454400000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x17 DUP2 MSTORE PUSH32 0x494E56414C49445F465245455F4D454D4F52595F505452000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x10 DUP2 MSTORE PUSH32 0x415050524F56414C5F4558504952454400000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F33325F4C454E4754485F5245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5155495245440000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x15 DUP2 MSTORE PUSH32 0x5349474E41545552455F554E535550504F525445440000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xE DUP2 MSTORE PUSH32 0x494E56414C49445F4F524947494E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x21 DUP2 MSTORE PUSH32 0x475245415445525F5448414E5F5A45524F5F4C454E4754485F52455155495245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH32 0x5349474E41545552455F494C4C4547414C000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1E DUP2 MSTORE PUSH32 0x4C454E4754485F475245415445525F5448414E5F305F52455155495245440000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x25 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F345F4C454E4754485F524551 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5549524544000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B40 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B4F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1B8D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C1D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C7D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1CAD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DB9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1E19 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1F69 DUP3 DUP8 PUSH2 0x1B4F JUMP JUMPDEST PUSH2 0x1F76 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1B40 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1F88 DUP2 DUP6 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1F9C DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 DUP3 PUSH2 0x2046 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2086 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x206E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 SGT 0xbe 0x4e SWAP15 0x28 0x1f CREATE2 SWAP12 PUSH12 0xE3D1C4C7AF6075C7D255EDC6 SIGNEXTEND 0xe4 0x29 0xd2 PC COINBASE 0xf9 DUP16 0x28 PUSH28 0x3E6C6578706572696D656E74616CF500370000000000000000000000 ", + "sourceMap": "837:227:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;837:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;988:2549:3;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1627:801:2;;;;;;;;;:::i;:::-;;2108:913:1;;;;;;;;;:::i;1323:33:10:-;;;:::i;:::-;;;;;;;;3713:2773:1;;;;;;;;;:::i;988:2549:3:-;1097:21;1174:1;1155:9;:16;:20;1134:97;;;;;;;;;;;;;;;;;;;;;;;;1296:22;1327:23;:9;:21;:23::i;:::-;1321:30;;;;-1:-1:-1;1449:29:3;1424:55;;;;1403:123;;;;;;;;;;;;;;1537:27;1581:16;1567:31;;;;;;;;;;1537:61;-1:-1:-1;1948:21:3;1931:13;:38;;;;;;;;;1927:1260;;;1985:27;;;;;;;;;;;1927:1260;2085:20;2068:13;:37;;;;;;;;;2064:1123;;;2146:16;;2166:2;2146:22;2121:99;;;;;;;;;;;;;;2234:7;2250:9;2260:1;2250:12;;;;;;;;;;;;;;;;;;;;;2244:19;;-1:-1:-1;2277:9:3;2289:24;:9;2311:1;2289:24;:21;:24;:::i;:::-;2277:36;-1:-1:-1;2327:9:3;2339:25;:9;2361:2;2339:25;:21;:25;:::i;:::-;2327:37;;2394:102;2421:4;2443:1;2462;2481;2394:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2394:102:3;;;;;;-1:-1:-1;2510:20:3;;-1:-1:-1;;;;;;2510:20:3;2064:1123;2607:21;2590:13;:38;;;;;;;;;2586:601;;;2669:16;;2689:2;2669:22;2644:99;;;;;;;;;;;;;;2757:7;2773:9;2783:1;2773:12;;;;;;;;;;;;;;;;;;;;;2767:19;;-1:-1:-1;2800:9:3;2812:24;:9;2834:1;2812:24;:21;:24;:::i;:::-;2800:36;-1:-1:-1;2850:9:3;2862:25;:9;2884:2;2862:25;:21;:25;:::i;:::-;2850:37;;2917:225;3048:4;2954:116;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2954:116:3;;;2944:127;;;;;;3089:1;3108;3127;2917:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2586:601:3;3499:31;;;;;;;;;;;988:2549;;;;;:::o;1627:801:2:-;2008:197;2053:11;2078:8;2100:20;2134:29;2177:18;2008:31;:197::i;:::-;2251:8;;2292:16;;2322:25;;;;2361:16;;;;;2251:170;;;;;:8;;;;;:27;;:170;;2292:16;;2322:25;;2391:20;;2251:170;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2251:170:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2251:170:2;;;;1627:801;;;;;:::o;2108:913:1:-;2511:30;2544:38;2565:11;:16;;;2544:20;:38::i;:::-;2511:71;;2669:1;2653:6;:13;:17;2649:366;;;2754:250;2808:11;2837:6;2861:8;2887:20;2925:29;2972:18;2754:36;:250::i;:::-;2108:913;;;;;;:::o;1323:33:10:-;;;;:::o;3713:2773:1:-;4182:9;:21;;;;4161:82;;;;;;;;;;;;;;4285:23;4311:31;4330:11;4311:18;:31::i;:::-;4445:16;;;4459:1;4445:16;;;;;;;;;4499:25;;4285:57;;-1:-1:-1;4445:16:1;4499:25;4534:1151;4554:21;;;4534:1151;;4635:44;4682:29;4712:1;4682:32;;;;;;;;;;;;;;;;;;4635:79;;4728:35;;:::i;:::-;-1:-1:-1;4766:266:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:15;5181:54;;5094:191;;;;;;;;;;;;;;5364:20;5387:36;5414:8;5387:26;:36::i;:::-;5364:59;;5437:29;5469:53;5486:12;5500:18;5519:1;5500:21;;;;;;;;;;;;;;;;;;5469:16;:53::i;:::-;5437:85;-1:-1:-1;5621:53:1;:23;5437:85;5621:53;:30;:53;:::i;:::-;5595:79;-1:-1:-1;;4577:3:1;;;;;-1:-1:-1;4534:1151:1;;-1:-1:-1;;4534:1151:1;;-1:-1:-1;5801:41:1;:23;5832:9;5801:41;:30;:41;:::i;:::-;5884:13;;5775:67;;-1:-1:-1;5861:20:1;5907:573;5927:17;;;5907:573;;6043:9;;6078:1;;6043:6;;6050:1;;6043:9;;;;;;;;;;;;;;:23;;;:37;;;6039:84;;;6100:8;;6039:84;6214:23;6240:6;6247:1;6240:9;;;;;;;;;;;;;;;;;;;:29;;;;-1:-1:-1;6283:20:1;6306:49;:23;6240:29;6306:49;:32;:49;:::i;:::-;6283:72;;6394:15;6369:100;;;;;;;;;;;;;;;;5907:573;;;5946:3;;5907:573;;;;3713:2773;;;;;;;;;;:::o;8315:448:22:-;8399:13;8460:1;8449;:8;:12;8428:92;;;;;;;;;;;;;;;;8570:8;;8568:1;;8570:12;;;;8568:15;;;;;;;;;;8682:8;;8678:16;;8707:17;;;-1:-1:-1;8568:15:22;;;;;;;8315:448::o;13292:490::-;13413:14;13476:5;13484:2;13476:10;13464:1;:8;:22;;13443:107;;;;;;;;;;;;;;;;-1:-1:-1;13729:13:22;13631:2;13729:13;13723:20;;13292:490::o;6698:1760:1:-;6794:30;6840:15;6858:18;:4;6840:15;6858:18;:15;:18;:::i;:::-;6840:36;-1:-1:-1;6903:31:1;;;6915:19;6903:31;;:87;;-1:-1:-1;6950:40:1;;;6962:28;6950:40;6903:87;:142;;;-1:-1:-1;7006:39:1;;;7018:27;7006:39;6903:142;6886:1543;;;7106:27;;:::i;:::-;7179:11;;7165:26;;7179:4;;7176:1;;7165:26;:10;:26;:::i;:::-;7137:102;;;;;;;;;;;;;;7262:23;;;7283:1;7262:23;;;;;;;;;7105:134;;-1:-1:-1;7262:23:1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7253:32;;7311:5;7299:6;7306:1;7299:9;;;;;;;;;;;;;;;;;;:17;-1:-1:-1;6886:1543:1;;;7350:38;;;7362:26;7350:38;;:101;;-1:-1:-1;7404:47:1;;;7416:35;7404:47;7350:101;:163;;;-1:-1:-1;7467:46:1;;;7479:34;7467:46;7350:163;:217;;;-1:-1:-1;7529:38:1;;;7541:26;7529:38;7350:217;:280;;;-1:-1:-1;7583:47:1;;;7595:35;7583:47;7350:280;:335;;;-1:-1:-1;7646:39:1;;;7658:27;7646:39;7350:335;:399;;;-1:-1:-1;7701:48:1;;;7713:36;7701:48;7350:399;7333:1096;;;7898:11;;7884:26;;7898:4;;7895:1;;7884:26;:10;:26;:::i;:::-;7856:104;;;;;;;;;;;;;;7845:115;;7333:1096;;;7981:33;;;7993:21;7981:33;7977:452;;;8075:31;;:::i;:::-;8108:32;;:::i;:::-;8186:11;;8172:26;;8186:4;;8183:1;;8172:26;:10;:26;:::i;:::-;8144:118;;;;;;;;;;;;;;8324:23;;;8345:1;8324:23;;;;;;;;;8074:188;;-1:-1:-1;8074:188:1;;-1:-1:-1;8324:23:1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8315:32;;8373:9;8361:6;8368:1;8361:9;;;;;;;;;;;;;;;;;;:21;8396:9;;8408:10;;8396:6;;8403:1;;8396:9;;;;;;;;;;;;;;:22;-1:-1:-1;;7977:452:1;-1:-1:-1;6698:1760:1;;;:::o;1602:406:11:-;1715:23;1916:53;1934:34;1956:11;1934:21;:34::i;:::-;1916:17;:53::i;2006:259:9:-;2126:20;2177:52;2195:33;2219:8;2195:23;:33::i;1089:2103:21:-;1438:19;;1587:4;1581:11;1209:16;;1438:12;;1510:2;:23;;;1676:45;;;;;;1438:19;1504:30;2076:32;;;;2055:102;;;;;;;;;;;;;;2411:18;2398:10;:31;2394:273;;;2445:78;2462:10;2474:20;2496:26;2445:16;:78::i;:::-;2580:10;2564:26;;2631:12;2607:36;;2546:111;2735:1;2713:23;;;;2776:2;2746:32;;;;2832:26;2809:20;:49;2788:70;;2881:18;2868:31;;2991:18;2977:12;2970:40;3072:10;3066:4;3059:24;3141:15;3102:12;3136:1;3115:18;:22;3102:36;;;;;;;;;;:54;;;;:36;;;;;;;;;;:54;-1:-1:-1;3173:12:21;;-1:-1:-1;;;;;1089:2103:21;;;;:::o;3431:1034::-;3543:12;3686:2;3671:12;3665:19;3661:28;3799:2;3785:12;3781:21;3911:12;3891:18;3887:37;3985:18;3972:453;4011:16;4008:1;4005:23;3972:453;;;4130:1;4124:8;4226:12;4218:6;4215:24;4212:2;;;4316:1;4305:12;;4377:16;4372:21;;4212:2;-1:-1:-1;4042:2:21;4035:10;3972:453;;;-1:-1:-1;;;;3431:1034:21;;;;:::o;15595:687:22:-;15715:13;15777:5;15785:1;15777:9;15765:1;:8;:21;;15744:105;;;;;;;;;;;;;;;;-1:-1:-1;16023:13:22;15926:2;16023:13;16017:20;16176:66;16164:79;;15595:687::o;6453:617::-;6587:19;6643:10;;;;6622:83;;;;;;;;;;;;;;6742:8;;6736:14;;;6715:89;;;;;;;;;;;;;;6905:4;6900:2;:9;6890:20;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;6890:20:22;87:34:-1;135:17;;-1:-1;6890:20:22;;6881:29;;6920:120;6941:23;:6;:21;:23::i;:::-;6999:4;6978:18;:1;:16;:18::i;:::-;:25;7017:6;:13;6920:7;:120::i;:::-;6453:617;;;;;:::o;2255:1419:11:-;2489:16;;;;;2530;;2580:25;;;;;3004:11;;2989:13;;;2979:37;;;;3088:9;;992:66;3111:26;;3237:15;;;3230:29;;;;3382:42;3363:62;;;3346:15;;;3339:87;;;;2469:17;3464:15;;3457:33;3631:3;3613:22;;;2255:1419::o;1856:924:10:-;1950:14;2007:18;2319:2;2313:9;2351:66;2336:82;;2468:1;2456:14;;2449:40;;;;2586:2;2574:15;;2567:35;;;;2738:2;2720:21;;;1856:924::o;2605:1613:9:-;2858:29;;;;;2916:17;;2969:24;;;;;2822:33;3043:38;;;;3537:27;;3506:29;;;3496:69;;;;3641:9;;1085:66;3664:26;;3758:15;;;3751:33;;;;3839:15;;;3832:40;3927:15;;;3920:49;4036:3;4024:16;;4017:55;4175:3;4157:22;;2605:1613;;;:::o;1808:4337:22:-;1958:2;1949:6;:11;1945:4194;;;2247:1;2237:6;2233:2;2229:15;2224:3;2220:25;2216:33;2298:4;2294:9;2285:6;2279:13;2275:29;2347:4;2340;2334:11;2330:22;2388:1;2385;2382:8;2376:4;2369:22;2186:219;;;;;;2509:4;2499:6;:14;2495:59;;;2533:7;;2495:59;3243:4;3234:6;:13;3230:2899;;;3569:2;3561:6;3557:15;3547:25;;3617:6;3609;3605:19;3667:6;3661:4;3657:17;3974:4;3968:11;4242:198;4260:4;4252:6;4249:16;4242:198;;;4308:13;;4295:27;;4369:2;4405:13;;;;4357:15;;;;4242:198;;;4529:18;;-1:-1:-1;3276:1289:22;;;4810:2;4802:6;4798:15;4788:25;;4858:6;4850;4846:19;4908:6;4902:4;4898:17;5218:6;5212:13;5797:191;5814:4;5808;5804:15;5797:191;;;5862:11;;5849:25;;5907:13;;;;;5953;;;;5797:191;;;6078:19;;-1:-1:-1;;4612:1503:22;1808:4337;;;:::o;1341:228::-;1520:2;1509:14;;1341:228::o;837:227:0:-;;;;;;;;;-1:-1:-1;837:227:0;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;130:122;;208:39;239:6;233:13;208:39;;275:693;;390:4;378:17;;374:27;-1:-1;364:2;;415:1;412;405:12;364:2;452:6;439:20;474:85;489:69;551:6;489:69;;;474:85;;;587:21;;;631:4;619:17;;;;465:94;;-1:-1;644:14;;619:17;739:1;724:238;749:6;746:1;743:13;724:238;;;832:3;819:17;811:6;807:30;856:42;894:3;882:10;856:42;;;844:55;;-1:-1;922:4;913:14;;;;941;;;;;771:1;764:9;724:238;;1008:735;;1144:4;1132:17;;1128:27;-1:-1;1118:2;;1169:1;1166;1159:12;1118:2;1199:6;1193:13;1221:95;1236:79;1308:6;1236:79;;1221:95;1344:21;;;1388:4;1376:17;;;;1212:104;;-1:-1;1401:14;;1376:17;1496:1;1481:256;1506:6;1503:1;1500:13;1481:256;;;1582:3;1576:10;1568:6;1564:23;1606:67;1669:3;1657:10;1606:67;;;1594:80;;-1:-1;1697:4;1688:14;;;;1716;;;;;1528:1;1521:9;1481:256;;1783:735;;1912:4;1900:17;;1896:27;-1:-1;1886:2;;1937:1;1934;1927:12;1886:2;1974:6;1961:20;1996:99;2011:83;2087:6;2011:83;;1996:99;2123:21;;;2167:4;2155:17;;;;1987:108;;-1:-1;2180:14;;2155:17;2275:1;2260:252;2285:6;2282:1;2279:13;2260:252;;;2368:3;2355:17;2347:6;2343:30;2392:56;2444:3;2432:10;2392:56;;;2380:69;;-1:-1;2472:4;2463:14;;;;2491;;;;;2307:1;2300:9;2260:252;;2544:707;;2654:4;2642:17;;2638:27;-1:-1;2628:2;;2679:1;2676;2669:12;2628:2;2716:6;2703:20;2738:80;2753:64;2810:6;2753:64;;2738:80;2729:89;;2835:5;2860:6;2853:5;2846:21;2890:4;2882:6;2878:17;2868:27;;2912:4;2907:3;2903:14;2896:21;;2965:6;3012:3;3004:4;2996:6;2992:17;2987:3;2983:27;2980:36;2977:2;;;3029:1;3026;3019:12;2977:2;3054:1;3039:206;3064:6;3061:1;3058:13;3039:206;;;3122:3;3144:37;3177:3;3165:10;3144:37;;;3132:50;;-1:-1;3205:4;3196:14;;;;3224;;;;;3086:1;3079:9;3039:206;;3259:118;;3326:46;3364:6;3351:20;3326:46;;3385:432;;3475:4;3463:17;;3459:27;-1:-1;3449:2;;3500:1;3497;3490:12;3449:2;3537:6;3524:20;3559:60;3574:44;3611:6;3574:44;;3559:60;3550:69;;3639:6;3632:5;3625:21;3675:4;3667:6;3663:17;3708:4;3701:5;3697:16;3743:3;3734:6;3729:3;3725:16;3722:25;3719:2;;;3760:1;3757;3750:12;3719:2;3770:41;3804:6;3799:3;3794;3770:41;;;3442:375;;;;;;;;3826:434;;3927:4;3915:17;;3911:27;-1:-1;3901:2;;3952:1;3949;3942:12;3901:2;3982:6;3976:13;4004:60;4019:44;4056:6;4019:44;;4004:60;3995:69;;4084:6;4077:5;4070:21;4120:4;4112:6;4108:17;4153:4;4146:5;4142:16;4188:3;4179:6;4174:3;4170:16;4167:25;4164:2;;;4205:1;4202;4195:12;4164:2;4215:39;4247:6;4242:3;4237;4215:39;;4745:2205;;4853:5;4841:9;4836:3;4832:19;4828:31;4825:2;;;4872:1;4869;4862:12;4825:2;4890:21;4905:5;4890:21;;;4881:30;-1:-1;4969:1;5000:49;5045:3;5025:9;5000:49;;;4976:74;;-1:-1;5119:2;5152:49;5197:3;5173:22;;;5152:49;;;5145:4;5138:5;5134:16;5127:75;5071:142;5278:2;5311:49;5356:3;5347:6;5336:9;5332:22;5311:49;;;5304:4;5297:5;5293:16;5286:75;5223:149;5431:2;5464:49;5509:3;5500:6;5489:9;5485:22;5464:49;;;5457:4;5450:5;5446:16;5439:75;5382:143;5587:3;5621:49;5666:3;5657:6;5646:9;5642:22;5621:49;;;5614:4;5607:5;5603:16;5596:75;5535:147;5744:3;5778:49;5823:3;5814:6;5803:9;5799:22;5778:49;;;5771:4;5764:5;5760:16;5753:75;5692:147;5893:3;5927:49;5972:3;5963:6;5952:9;5948:22;5927:49;;;5920:4;5913:5;5909:16;5902:75;5849:139;6042:3;6076:49;6121:3;6112:6;6101:9;6097:22;6076:49;;;6069:4;6062:5;6058:16;6051:75;5998:139;6204:3;6239:49;6284:3;6275:6;6264:9;6260:22;6239:49;;;6231:5;6224;6220:17;6213:76;6147:153;6350:3;6385:49;6430:3;6421:6;6410:9;6406:22;6385:49;;;6377:5;6370;6366:17;6359:76;6310:136;6534:3;6523:9;6519:19;6506:33;6559:18;6551:6;6548:30;6545:2;;;6591:1;6588;6581:12;6545:2;6627:54;6677:3;6668:6;6657:9;6653:22;6627:54;;;6619:5;6612;6608:17;6601:81;6456:237;6781:3;6770:9;6766:19;6753:33;6806:18;6798:6;6795:30;6792:2;;;6838:1;6835;6828:12;6792:2;6874:54;6924:3;6915:6;6904:9;6900:22;6874:54;;;6866:5;6859;6855:17;6848:81;6703:237;4819:2131;;;;;6985:2334;;7104:5;7092:9;7087:3;7083:19;7079:31;7076:2;;;7123:1;7120;7113:12;7076:2;7141:21;7156:5;7141:21;;;7132:30;-1:-1;7220:1;7251:60;7307:3;7287:9;7251:60;;;7227:85;;-1:-1;7381:2;7414:60;7470:3;7446:22;;;7414:60;;;7407:4;7400:5;7396:16;7389:86;7333:153;7551:2;7584:60;7640:3;7631:6;7620:9;7616:22;7584:60;;;7577:4;7570:5;7566:16;7559:86;7496:160;7715:2;7748:60;7804:3;7795:6;7784:9;7780:22;7748:60;;;7741:4;7734:5;7730:16;7723:86;7666:154;7882:3;7916:60;7972:3;7963:6;7952:9;7948:22;7916:60;;;7909:4;7902:5;7898:16;7891:86;7830:158;8050:3;8084:60;8140:3;8131:6;8120:9;8116:22;8084:60;;;8077:4;8070:5;8066:16;8059:86;7998:158;8210:3;8244:60;8300:3;8291:6;8280:9;8276:22;8244:60;;;8237:4;8230:5;8226:16;8219:86;8166:150;8370:3;8404:60;8460:3;8451:6;8440:9;8436:22;8404:60;;;8397:4;8390:5;8386:16;8379:86;8326:150;8543:3;8578:60;8634:3;8625:6;8614:9;8610:22;8578:60;;;8570:5;8563;8559:17;8552:87;8486:164;8700:3;8735:60;8791:3;8782:6;8771:9;8767:22;8735:60;;;8727:5;8720;8716:17;8709:87;8660:147;8888:3;8877:9;8873:19;8867:26;8913:18;8905:6;8902:30;8899:2;;;8945:1;8942;8935:12;8899:2;8981:65;9042:3;9033:6;9022:9;9018:22;8981:65;;;8973:5;8966;8962:17;8955:92;8817:241;9139:3;9128:9;9124:19;9118:26;9164:18;9156:6;9153:30;9150:2;;;9196:1;9193;9186:12;9150:2;9232:65;9293:3;9284:6;9273:9;9269:22;9232:65;;9378:719;;9501:4;9489:9;9484:3;9480:19;9476:30;9473:2;;;9519:1;9516;9509:12;9473:2;9537:20;9552:4;9537:20;;;9528:29;-1:-1;9607:1;9638:49;9683:3;9663:9;9638:49;;;9614:74;;-1:-1;9758:2;9791:49;9836:3;9812:22;;;9791:49;;;9784:4;9777:5;9773:16;9766:75;9709:143;9930:2;9919:9;9915:18;9902:32;9954:18;9946:6;9943:30;9940:2;;;9986:1;9983;9976:12;9940:2;10021:54;10071:3;10062:6;10051:9;10047:22;10021:54;;;10014:4;10007:5;10003:16;9996:80;9862:225;9467:630;;;;;10229:122;;10307:39;10338:6;10332:13;10307:39;;10358:422;;10513:2;10501:9;10492:7;10488:23;10484:32;10481:2;;;10529:1;10526;10519:12;10481:2;10564:24;;10608:18;10597:30;;10594:2;;;10640:1;10637;10630:12;10594:2;10660:104;10756:7;10747:6;10736:9;10732:22;10660:104;;;10650:114;10475:305;-1:-1;;;;10475:305;10787:470;;;10917:2;10905:9;10896:7;10892:23;10888:32;10885:2;;;10933:1;10930;10923:12;10885:2;10968:1;10985:53;11030:7;11010:9;10985:53;;;10975:63;;10947:97;11103:2;11092:9;11088:18;11075:32;11127:18;11119:6;11116:30;11113:2;;;11159:1;11156;11149:12;11113:2;11179:62;11233:7;11224:6;11213:9;11209:22;11179:62;;;11169:72;;11054:193;10879:378;;;;;;11264:380;;11398:2;11386:9;11377:7;11373:23;11369:32;11366:2;;;11414:1;11411;11404:12;11366:2;11449:24;;11493:18;11482:30;;11479:2;;;11525:1;11522;11515:12;11479:2;11545:83;11620:7;11611:6;11600:9;11596:22;11545:83;;11651:633;;;11821:2;11809:9;11800:7;11796:23;11792:32;11789:2;;;11837:1;11834;11827:12;11789:2;11872:24;;11916:18;11905:30;;11902:2;;;11948:1;11945;11938:12;11902:2;11968:83;12043:7;12034:6;12023:9;12019:22;11968:83;;;11958:93;;11851:206;12109:2;12098:9;12094:18;12088:25;12133:18;12125:6;12122:30;12119:2;;;12165:1;12162;12155:12;12119:2;12185:83;12260:7;12251:6;12240:9;12236:22;12185:83;;12291:1283;;;;;;12561:3;12549:9;12540:7;12536:23;12532:33;12529:2;;;12578:1;12575;12568:12;12529:2;12613:31;;12664:18;12653:30;;12650:2;;;12696:1;12693;12686:12;12650:2;12716:87;12795:7;12786:6;12775:9;12771:22;12716:87;;;12706:97;;12592:217;12840:2;12858:53;12903:7;12894:6;12883:9;12879:22;12858:53;;;12848:63;;12819:98;12976:2;12965:9;12961:18;12948:32;13000:18;12992:6;12989:30;12986:2;;;13032:1;13029;13022:12;12986:2;13052:62;13106:7;13097:6;13086:9;13082:22;13052:62;;;13042:72;;12927:193;13179:2;13168:9;13164:18;13151:32;13203:18;13195:6;13192:30;13189:2;;;13235:1;13232;13225:12;13189:2;13255:78;13325:7;13316:6;13305:9;13301:22;13255:78;;;13245:88;;13130:209;13398:3;13387:9;13383:19;13370:33;13423:18;13415:6;13412:30;13409:2;;;13455:1;13452;13445:12;13409:2;13475:83;13550:7;13541:6;13530:9;13526:22;13475:83;;;13465:93;;13349:215;12523:1051;;;;;;;;;13581:1583;;;;;;;13912:3;13900:9;13891:7;13887:23;13883:33;13880:2;;;13929:1;13926;13919:12;13880:2;13964:31;;14015:18;14004:30;;14001:2;;;14047:1;14044;14037:12;14001:2;14067:87;14146:7;14137:6;14126:9;14122:22;14067:87;;;14057:97;;13943:217;14219:2;14208:9;14204:18;14191:32;14243:18;14235:6;14232:30;14229:2;;;14275:1;14272;14265:12;14229:2;14295:97;14384:7;14375:6;14364:9;14360:22;14295:97;;;14285:107;;14170:228;14429:2;14447:53;14492:7;14483:6;14472:9;14468:22;14447:53;;;14437:63;;14408:98;14565:2;14554:9;14550:18;14537:32;14589:18;14581:6;14578:30;14575:2;;;14621:1;14618;14611:12;14575:2;14641:62;14695:7;14686:6;14675:9;14671:22;14641:62;;;14631:72;;14516:193;14768:3;14757:9;14753:19;14740:33;14793:18;14785:6;14782:30;14779:2;;;14825:1;14822;14815:12;14779:2;14845:78;14915:7;14906:6;14895:9;14891:22;14845:78;;;14835:88;;14719:210;14988:3;14977:9;14973:19;14960:33;15013:18;15005:6;15002:30;14999:2;;;15045:1;15042;15035:12;14999:2;15065:83;15140:7;15131:6;15120:9;15116:22;15065:83;;;15055:93;;14939:215;13874:1290;;;;;;;;;15171:120;15254:31;15279:5;15254:31;;;15249:3;15242:44;15236:55;;;15298:120;15381:31;15406:5;15381:31;;15425:307;;15535:38;15567:5;15535:38;;;15590:6;15585:3;15578:19;15602:63;15658:6;15651:4;15646:3;15642:14;15635:4;15628:5;15624:16;15602:63;;;15697:29;15719:6;15697:29;;;15677:50;;;15690:4;15677:50;;15515:217;-1:-1;;;15515:217;16046:306;16211:2;16199:15;;16248:66;16243:2;16234:12;;16227:88;16343:2;16334:12;;16192:160;16361:306;16526:2;16514:15;;16563:66;16558:2;16549:12;;16542:88;16658:2;16649:12;;16507:160;16676:306;16841:2;16829:15;;16878:66;16873:2;16864:12;;16857:88;16973:2;16964:12;;16822:160;16991:306;17156:2;17144:15;;17193:66;17188:2;17179:12;;17172:88;17288:2;17279:12;;17137:160;17306:306;17471:2;17459:15;;17508:66;17503:2;17494:12;;17487:88;17603:2;17594:12;;17452:160;17621:306;17786:2;17774:15;;17823:66;17818:2;17809:12;;17802:88;17918:2;17909:12;;17767:160;17936:407;18101:2;18089:15;;18138:66;18133:2;18124:12;;18117:88;18239:66;18234:2;18225:12;;18218:88;18334:2;18325:12;;18082:261;18352:306;18517:2;18505:15;;18554:66;18549:2;18540:12;;18533:88;18649:2;18640:12;;18498:160;18667:306;18832:2;18820:15;;18869:66;18864:2;18855:12;;18848:88;18964:2;18955:12;;18813:160;18982:407;19147:2;19135:15;;19184:66;19179:2;19170:12;;19163:88;19285:66;19280:2;19271:12;;19264:88;19380:2;19371:12;;19128:261;19398:306;19563:2;19551:15;;19600:66;19595:2;19586:12;;19579:88;19695:2;19686:12;;19544:160;19713:306;19878:2;19866:15;;19915:66;19910:2;19901:12;;19894:88;20010:2;20001:12;;19859:160;20028:407;20193:2;20181:15;;20230:66;20225:2;20216:12;;20209:88;20331:66;20326:2;20317:12;;20310:88;20426:2;20417:12;;20174:261;20570:213;20688:2;20673:18;;20702:71;20677:9;20746:6;20702:71;;20790:213;20908:2;20893:18;;20922:71;20897:9;20966:6;20922:71;;21010:407;21201:2;21215:47;;;21186:18;;21276:131;21186:18;21276:131;;21424:407;21615:2;21629:47;;;21600:18;;21690:131;21600:18;21690:131;;21838:407;22029:2;22043:47;;;22014:18;;22104:131;22014:18;22104:131;;22252:407;22443:2;22457:47;;;22428:18;;22518:131;22428:18;22518:131;;22666:407;22857:2;22871:47;;;22842:18;;22932:131;22842:18;22932:131;;23080:407;23271:2;23285:47;;;23256:18;;23346:131;23256:18;23346:131;;23494:407;23685:2;23699:47;;;23670:18;;23760:131;23670:18;23760:131;;23908:407;24099:2;24113:47;;;24084:18;;24174:131;24084:18;24174:131;;24322:407;24513:2;24527:47;;;24498:18;;24588:131;24498:18;24588:131;;24736:407;24927:2;24941:47;;;24912:18;;25002:131;24912:18;25002:131;;25150:407;25341:2;25355:47;;;25326:18;;25416:131;25326:18;25416:131;;25564:407;25755:2;25769:47;;;25740:18;;25830:131;25740:18;25830:131;;25978:407;26169:2;26183:47;;;26154:18;;26244:131;26154:18;26244:131;;26392:707;26626:3;26611:19;;26641:71;26615:9;26685:6;26641:71;;;26723:72;26791:2;26780:9;26776:18;26767:6;26723:72;;;26843:9;26837:4;26833:20;26828:2;26817:9;26813:18;26806:48;26868:72;26935:4;26926:6;26868:72;;;26860:80;;26988:9;26982:4;26978:20;26973:2;26962:9;26958:18;26951:48;27013:76;27084:4;27075:6;27013:76;;;27005:84;26597:502;-1:-1;;;;;;26597:502;27106:256;27168:2;27162:9;27194:17;;;27269:18;27254:34;;27290:22;;;27251:62;27248:2;;;27326:1;27323;27316:12;27248:2;27342;27335:22;27146:216;;-1:-1;27146:216;27369:263;;27533:18;27525:6;27522:30;27519:2;;;27565:1;27562;27555:12;27519:2;-1:-1;27594:4;27582:17;;;27612:15;;27456:176;28468:254;;28607:18;28599:6;28596:30;28593:2;;;28639:1;28636;28629:12;28593:2;-1:-1;28712:4;28683;28660:17;;;;28679:9;28656:33;28702:15;;28530:192;28994:87;29064:12;;29048:33;29186:105;;29255:31;29280:5;29255:31;;29298:79;29367:5;29350:27;29384:128;29464:42;29453:54;;29436:76;29890:145;29971:6;29966:3;29961;29948:30;-1:-1;30027:1;30009:16;;30002:27;29941:94;30044:268;30109:1;30116:101;30130:6;30127:1;30124:13;30116:101;;;30197:11;;;30191:18;30178:11;;;30171:39;30152:2;30145:10;30116:101;;;30232:6;30229:1;30226:13;30223:2;;;30297:1;30288:6;30283:3;30279:16;30272:27;30223:2;30093:219;;;;;30320:97;30408:2;30388:14;30404:7;30384:28;;30368:49" + } + } + }, + "sources": { + "src/Coordinator.sol": { + "id": 0 + }, + "src/libs/LibConstants.sol": { + "id": 8 + }, + "src/interfaces/ITransactions.sol": { + "id": 7 + }, + "src/MixinSignatureValidator.sol": { + "id": 3 + }, + "@0x/contracts-utils/contracts/src/LibBytes.sol": { + "id": 22 + }, + "src/mixins/MSignatureValidator.sol": { + "id": 13 + }, + "src/interfaces/ISignatureValidator.sol": { + "id": 6 + }, + "src/MixinCoordinatorApprovalVerifier.sol": { + "id": 1 + }, + "@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol": { + "id": 19 + }, + "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol": { + "id": 20 + }, + "@0x/contracts-exchange-libs/contracts/src/LibEIP712.sol": { + "id": 18 + }, + "@0x/contracts-utils/contracts/src/LibAddressArray.sol": { + "id": 21 + }, + "src/libs/LibCoordinatorApproval.sol": { + "id": 9 + }, + "src/libs/LibEIP712Domain.sol": { + "id": 10 + }, + "src/libs/LibZeroExTransaction.sol": { + "id": 11 + }, + "src/mixins/MCoordinatorApprovalVerifier.sol": { + "id": 12 + }, + "src/interfaces/ICoordinatorApprovalVerifier.sol": { + "id": 4 + }, + "src/MixinCoordinatorCore.sol": { + "id": 2 + }, + "src/interfaces/ICoordinatorCore.sol": { + "id": 5 + } + }, + "sourceCodes": { + "src/Coordinator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"./libs/LibConstants.sol\";\nimport \"./MixinSignatureValidator.sol\";\nimport \"./MixinCoordinatorApprovalVerifier.sol\";\nimport \"./MixinCoordinatorCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract Coordinator is\n LibConstants,\n MixinSignatureValidator,\n MixinCoordinatorApprovalVerifier,\n MixinCoordinatorCore\n{\n constructor (address _exchange)\n public\n LibConstants(_exchange)\n {}\n}\n", + "src/libs/LibConstants.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"../interfaces/ITransactions.sol\";\n\n\ncontract LibConstants {\n\n // solhint-disable-next-line var-name-mixedcase\n ITransactions internal EXCHANGE;\n\n constructor (address _exchange)\n public\n {\n EXCHANGE = ITransactions(_exchange);\n }\n}\n", + "src/interfaces/ITransactions.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\npragma solidity ^0.5.3;\n\n\ncontract ITransactions {\n\n /// @dev Executes an exchange method call in the context of signer.\n /// @param salt Arbitrary number to ensure uniqueness of transaction hash.\n /// @param signerAddress Address of transaction signer.\n /// @param data AbiV2 encoded calldata.\n /// @param signature Proof of signer transaction by signer.\n function executeTransaction(\n uint256 salt,\n address signerAddress,\n bytes calldata data,\n bytes calldata signature\n )\n external;\n}\n", + "src/MixinSignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"@0x/contracts-utils/contracts/src/LibBytes.sol\";\nimport \"./mixins/MSignatureValidator.sol\";\n\n\ncontract MixinSignatureValidator is\n MSignatureValidator\n{\n using LibBytes for bytes;\n\n /// @dev Recovers the address of a signer given a hash and signature.\n /// @param hash Any 32 byte hash.\n /// @param signature Proof that the hash has been signed by signer.\n function getSignerAddress(bytes32 hash, bytes memory signature)\n public\n pure\n returns (address signerAddress)\n {\n require(\n signature.length > 0,\n \"LENGTH_GREATER_THAN_0_REQUIRED\"\n );\n\n // Pop last byte off of signature byte array.\n uint8 signatureTypeRaw = uint8(signature.popLastByte());\n\n // Ensure signature is supported\n require(\n signatureTypeRaw < uint8(SignatureType.NSignatureTypes),\n \"SIGNATURE_UNSUPPORTED\"\n );\n\n SignatureType signatureType = SignatureType(signatureTypeRaw);\n\n // Always illegal signature.\n // This is always an implicit option since a signer can create a\n // signature array with invalid type or length. We may as well make\n // it an explicit option. This aids testing and analysis. It is\n // also the initialization value for the enum type.\n if (signatureType == SignatureType.Illegal) {\n revert(\"SIGNATURE_ILLEGAL\");\n\n // Signature using EIP712\n } else if (signatureType == SignatureType.EIP712) {\n require(\n signature.length == 65,\n \"LENGTH_65_REQUIRED\"\n );\n uint8 v = uint8(signature[0]);\n bytes32 r = signature.readBytes32(1);\n bytes32 s = signature.readBytes32(33);\n signerAddress = ecrecover(\n hash,\n v,\n r,\n s\n );\n return signerAddress;\n\n // Signed using web3.eth_sign\n } else if (signatureType == SignatureType.EthSign) {\n require(\n signature.length == 65,\n \"LENGTH_65_REQUIRED\"\n );\n uint8 v = uint8(signature[0]);\n bytes32 r = signature.readBytes32(1);\n bytes32 s = signature.readBytes32(33);\n signerAddress = ecrecover(\n keccak256(abi.encodePacked(\n \"\\x19Ethereum Signed Message:\\n32\",\n hash\n )),\n v,\n r,\n s\n );\n return signerAddress;\n }\n\n // Anything else is illegal (We do not return false because\n // the signature may actually be valid, just not in a format\n // that we currently support. In this case returning false\n // may lead the caller to incorrectly believe that the\n // signature was invalid.)\n revert(\"SIGNATURE_UNSUPPORTED\");\n }\n}\n", + "@0x/contracts-utils/contracts/src/LibBytes.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\nlibrary LibBytes {\n\n using LibBytes for bytes;\n\n /// @dev Gets the memory address for a byte array.\n /// @param input Byte array to lookup.\n /// @return memoryAddress Memory address of byte array. This\n /// points to the header of the byte array which contains\n /// the length.\n function rawAddress(bytes memory input)\n internal\n pure\n returns (uint256 memoryAddress)\n {\n assembly {\n memoryAddress := input\n }\n return memoryAddress;\n }\n \n /// @dev Gets the memory address for the contents of a byte array.\n /// @param input Byte array to lookup.\n /// @return memoryAddress Memory address of the contents of the byte array.\n function contentAddress(bytes memory input)\n internal\n pure\n returns (uint256 memoryAddress)\n {\n assembly {\n memoryAddress := add(input, 32)\n }\n return memoryAddress;\n }\n\n /// @dev Copies `length` bytes from memory location `source` to `dest`.\n /// @param dest memory address to copy bytes to.\n /// @param source memory address to copy bytes from.\n /// @param length number of bytes to copy.\n function memCopy(\n uint256 dest,\n uint256 source,\n uint256 length\n )\n internal\n pure\n {\n if (length < 32) {\n // Handle a partial word by reading destination and masking\n // off the bits we are interested in.\n // This correctly handles overlap, zero lengths and source == dest\n assembly {\n let mask := sub(exp(256, sub(32, length)), 1)\n let s := and(mload(source), not(mask))\n let d := and(mload(dest), mask)\n mstore(dest, or(s, d))\n }\n } else {\n // Skip the O(length) loop when source == dest.\n if (source == dest) {\n return;\n }\n\n // For large copies we copy whole words at a time. The final\n // word is aligned to the end of the range (instead of after the\n // previous) to handle partial words. So a copy will look like this:\n //\n // ####\n // ####\n // ####\n // ####\n //\n // We handle overlap in the source and destination range by\n // changing the copying direction. This prevents us from\n // overwriting parts of source that we still need to copy.\n //\n // This correctly handles source == dest\n //\n if (source > dest) {\n assembly {\n // We subtract 32 from `sEnd` and `dEnd` because it\n // is easier to compare with in the loop, and these\n // are also the addresses we need for copying the\n // last bytes.\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n\n // Remember the last 32 bytes of source\n // This needs to be done here and not after the loop\n // because we may have overwritten the last bytes in\n // source already due to overlap.\n let last := mload(sEnd)\n\n // Copy whole words front to back\n // Note: the first check is always true,\n // this could have been a do-while loop.\n // solhint-disable-next-line no-empty-blocks\n for {} lt(source, sEnd) {} {\n mstore(dest, mload(source))\n source := add(source, 32)\n dest := add(dest, 32)\n }\n \n // Write the last 32 bytes\n mstore(dEnd, last)\n }\n } else {\n assembly {\n // We subtract 32 from `sEnd` and `dEnd` because those\n // are the starting points when copying a word at the end.\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n\n // Remember the first 32 bytes of source\n // This needs to be done here and not after the loop\n // because we may have overwritten the first bytes in\n // source already due to overlap.\n let first := mload(source)\n\n // Copy whole words back to front\n // We use a signed comparisson here to allow dEnd to become\n // negative (happens when source and dest < 32). Valid\n // addresses in local memory will never be larger than\n // 2**255, so they can be safely re-interpreted as signed.\n // Note: the first check is always true,\n // this could have been a do-while loop.\n // solhint-disable-next-line no-empty-blocks\n for {} slt(dest, dEnd) {} {\n mstore(dEnd, mload(sEnd))\n sEnd := sub(sEnd, 32)\n dEnd := sub(dEnd, 32)\n }\n \n // Write the first 32 bytes\n mstore(dest, first)\n }\n }\n }\n }\n\n /// @dev Returns a slices from a byte array.\n /// @param b The byte array to take a slice from.\n /// @param from The starting index for the slice (inclusive).\n /// @param to The final index for the slice (exclusive).\n /// @return result The slice containing bytes at indices [from, to)\n function slice(\n bytes memory b,\n uint256 from,\n uint256 to\n )\n internal\n pure\n returns (bytes memory result)\n {\n require(\n from <= to,\n \"FROM_LESS_THAN_TO_REQUIRED\"\n );\n require(\n to <= b.length,\n \"TO_LESS_THAN_LENGTH_REQUIRED\"\n );\n \n // Create a new bytes structure and copy contents\n result = new bytes(to - from);\n memCopy(\n result.contentAddress(),\n b.contentAddress() + from,\n result.length\n );\n return result;\n }\n \n /// @dev Returns a slice from a byte array without preserving the input.\n /// @param b The byte array to take a slice from. Will be destroyed in the process.\n /// @param from The starting index for the slice (inclusive).\n /// @param to The final index for the slice (exclusive).\n /// @return result The slice containing bytes at indices [from, to)\n /// @dev When `from == 0`, the original array will match the slice. In other cases its state will be corrupted.\n function sliceDestructive(\n bytes memory b,\n uint256 from,\n uint256 to\n )\n internal\n pure\n returns (bytes memory result)\n {\n require(\n from <= to,\n \"FROM_LESS_THAN_TO_REQUIRED\"\n );\n require(\n to <= b.length,\n \"TO_LESS_THAN_LENGTH_REQUIRED\"\n );\n \n // Create a new bytes structure around [from, to) in-place.\n assembly {\n result := add(b, from)\n mstore(result, sub(to, from))\n }\n return result;\n }\n\n /// @dev Pops the last byte off of a byte array by modifying its length.\n /// @param b Byte array that will be modified.\n /// @return The byte that was popped off.\n function popLastByte(bytes memory b)\n internal\n pure\n returns (bytes1 result)\n {\n require(\n b.length > 0,\n \"GREATER_THAN_ZERO_LENGTH_REQUIRED\"\n );\n\n // Store last byte.\n result = b[b.length - 1];\n\n assembly {\n // Decrement length of byte array.\n let newLen := sub(mload(b), 1)\n mstore(b, newLen)\n }\n return result;\n }\n\n /// @dev Pops the last 20 bytes off of a byte array by modifying its length.\n /// @param b Byte array that will be modified.\n /// @return The 20 byte address that was popped off.\n function popLast20Bytes(bytes memory b)\n internal\n pure\n returns (address result)\n {\n require(\n b.length >= 20,\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Store last 20 bytes.\n result = readAddress(b, b.length - 20);\n\n assembly {\n // Subtract 20 from byte array length.\n let newLen := sub(mload(b), 20)\n mstore(b, newLen)\n }\n return result;\n }\n\n /// @dev Tests equality of two byte arrays.\n /// @param lhs First byte array to compare.\n /// @param rhs Second byte array to compare.\n /// @return True if arrays are the same. False otherwise.\n function equals(\n bytes memory lhs,\n bytes memory rhs\n )\n internal\n pure\n returns (bool equal)\n {\n // Keccak gas cost is 30 + numWords * 6. This is a cheap way to compare.\n // We early exit on unequal lengths, but keccak would also correctly\n // handle this.\n return lhs.length == rhs.length && keccak256(lhs) == keccak256(rhs);\n }\n\n /// @dev Reads an address from a position in a byte array.\n /// @param b Byte array containing an address.\n /// @param index Index in byte array of address.\n /// @return address from byte array.\n function readAddress(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (address result)\n {\n require(\n b.length >= index + 20, // 20 is length of address\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Add offset to index:\n // 1. Arrays are prefixed by 32-byte length parameter (add 32 to index)\n // 2. Account for size difference between address length and 32-byte storage word (subtract 12 from index)\n index += 20;\n\n // Read address from array memory\n assembly {\n // 1. Add index to address of bytes array\n // 2. Load 32-byte word from memory\n // 3. Apply 20-byte mask to obtain address\n result := and(mload(add(b, index)), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n return result;\n }\n\n /// @dev Writes an address into a specific position in a byte array.\n /// @param b Byte array to insert address into.\n /// @param index Index in byte array of address.\n /// @param input Address to put into byte array.\n function writeAddress(\n bytes memory b,\n uint256 index,\n address input\n )\n internal\n pure\n {\n require(\n b.length >= index + 20, // 20 is length of address\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Add offset to index:\n // 1. Arrays are prefixed by 32-byte length parameter (add 32 to index)\n // 2. Account for size difference between address length and 32-byte storage word (subtract 12 from index)\n index += 20;\n\n // Store address into array memory\n assembly {\n // The address occupies 20 bytes and mstore stores 32 bytes.\n // First fetch the 32-byte word where we'll be storing the address, then\n // apply a mask so we have only the bytes in the word that the address will not occupy.\n // Then combine these bytes with the address and store the 32 bytes back to memory with mstore.\n\n // 1. Add index to address of bytes array\n // 2. Load 32-byte word from memory\n // 3. Apply 12-byte mask to obtain extra bytes occupying word of memory where we'll store the address\n let neighbors := and(\n mload(add(b, index)),\n 0xffffffffffffffffffffffff0000000000000000000000000000000000000000\n )\n \n // Make sure input address is clean.\n // (Solidity does not guarantee this)\n input := and(input, 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Store the neighbors and address into memory\n mstore(add(b, index), xor(input, neighbors))\n }\n }\n\n /// @dev Reads a bytes32 value from a position in a byte array.\n /// @param b Byte array containing a bytes32 value.\n /// @param index Index in byte array of bytes32 value.\n /// @return bytes32 value from byte array.\n function readBytes32(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes32 result)\n {\n require(\n b.length >= index + 32,\n \"GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 256 bit length parameter\n index += 32;\n\n // Read the bytes32 from array memory\n assembly {\n result := mload(add(b, index))\n }\n return result;\n }\n\n /// @dev Writes a bytes32 into a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input bytes32 to put into byte array.\n function writeBytes32(\n bytes memory b,\n uint256 index,\n bytes32 input\n )\n internal\n pure\n {\n require(\n b.length >= index + 32,\n \"GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 256 bit length parameter\n index += 32;\n\n // Read the bytes32 from array memory\n assembly {\n mstore(add(b, index), input)\n }\n }\n\n /// @dev Reads a uint256 value from a position in a byte array.\n /// @param b Byte array containing a uint256 value.\n /// @param index Index in byte array of uint256 value.\n /// @return uint256 value from byte array.\n function readUint256(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (uint256 result)\n {\n result = uint256(readBytes32(b, index));\n return result;\n }\n\n /// @dev Writes a uint256 into a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input uint256 to put into byte array.\n function writeUint256(\n bytes memory b,\n uint256 index,\n uint256 input\n )\n internal\n pure\n {\n writeBytes32(b, index, bytes32(input));\n }\n\n /// @dev Reads an unpadded bytes4 value from a position in a byte array.\n /// @param b Byte array containing a bytes4 value.\n /// @param index Index in byte array of bytes4 value.\n /// @return bytes4 value from byte array.\n function readBytes4(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes4 result)\n {\n require(\n b.length >= index + 4,\n \"GREATER_OR_EQUAL_TO_4_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 32 byte length field\n index += 32;\n\n // Read the bytes4 from array memory\n assembly {\n result := mload(add(b, index))\n // Solidity does not require us to clean the trailing bytes.\n // We do it anyway\n result := and(result, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)\n }\n return result;\n }\n\n /// @dev Reads nested bytes from a specific position.\n /// @dev NOTE: the returned value overlaps with the input value.\n /// Both should be treated as immutable.\n /// @param b Byte array containing nested bytes.\n /// @param index Index of nested bytes.\n /// @return result Nested bytes.\n function readBytesWithLength(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes memory result)\n {\n // Read length of nested bytes\n uint256 nestedBytesLength = readUint256(b, index);\n index += 32;\n\n // Assert length of is valid, given\n // length of nested bytes\n require(\n b.length >= index + nestedBytesLength,\n \"GREATER_OR_EQUAL_TO_NESTED_BYTES_LENGTH_REQUIRED\"\n );\n \n // Return a pointer to the byte array as it exists inside `b`\n assembly {\n result := add(b, index)\n }\n return result;\n }\n\n /// @dev Inserts bytes at a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input bytes to insert.\n function writeBytesWithLength(\n bytes memory b,\n uint256 index,\n bytes memory input\n )\n internal\n pure\n {\n // Assert length of is valid, given\n // length of input\n require(\n b.length >= index + 32 + input.length, // 32 bytes to store length\n \"GREATER_OR_EQUAL_TO_NESTED_BYTES_LENGTH_REQUIRED\"\n );\n\n // Copy into \n memCopy(\n b.contentAddress() + index,\n input.rawAddress(), // includes length of \n input.length + 32 // +32 bytes to store length\n );\n }\n\n /// @dev Performs a deep copy of a byte array onto another byte array of greater than or equal length.\n /// @param dest Byte array that will be overwritten with source bytes.\n /// @param source Byte array to copy onto dest bytes.\n function deepCopyBytes(\n bytes memory dest,\n bytes memory source\n )\n internal\n pure\n {\n uint256 sourceLen = source.length;\n // Dest length must be >= source length, or some bytes would not be copied.\n require(\n dest.length >= sourceLen,\n \"GREATER_OR_EQUAL_TO_SOURCE_BYTES_LENGTH_REQUIRED\"\n );\n memCopy(\n dest.contentAddress(),\n source.contentAddress(),\n sourceLen\n );\n }\n}\n", + "src/mixins/MSignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"../interfaces/ISignatureValidator.sol\";\n\n\ncontract MSignatureValidator is\n ISignatureValidator\n{\n // Allowed signature types.\n enum SignatureType {\n Illegal, // 0x00, default value\n EIP712, // 0x01\n EthSign, // 0x02\n NSignatureTypes // 0x03, number of signature types. Always leave at end.\n }\n}\n", + "src/interfaces/ISignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract ISignatureValidator {\n\n /// @dev Recovers the address of a signer given a hash and signature.\n /// @param hash Any 32 byte hash.\n /// @param signature Proof that the hash has been signed by signer.\n function getSignerAddress(bytes32 hash, bytes memory signature)\n public\n pure\n returns (address signerAddress);\n}\n", + "src/MixinCoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol\";\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"@0x/contracts-utils/contracts/src/LibBytes.sol\";\nimport \"@0x/contracts-utils/contracts/src/LibAddressArray.sol\";\nimport \"./libs/LibCoordinatorApproval.sol\";\nimport \"./libs/LibZeroExTransaction.sol\";\nimport \"./mixins/MSignatureValidator.sol\";\nimport \"./mixins/MCoordinatorApprovalVerifier.sol\";\n\n\n// solhint-disable avoid-tx-origin\ncontract MixinCoordinatorApprovalVerifier is\n LibExchangeSelectors,\n LibCoordinatorApproval,\n LibZeroExTransaction,\n MSignatureValidator,\n MCoordinatorApprovalVerifier\n{\n using LibBytes for bytes;\n using LibAddressArray for address[];\n\n /// @dev Validates that the 0x transaction has been approved by all of the feeRecipients\n /// that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function assertValidCoordinatorApprovals(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view\n {\n // Get the orders from the the Exchange calldata in the 0x transaction\n LibOrder.Order[] memory orders = decodeFillDataOrders(transaction.data);\n\n // No approval is required for non-fill methods\n if (orders.length > 0) {\n // Revert if approval is invalid for transaction orders\n assertValidTransactionOrdersApproval(\n transaction,\n orders,\n txOrigin,\n transactionSignature,\n approvalExpirationTimeSeconds,\n approvalSignatures\n );\n }\n }\n\n /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param orders Array of order structs containing order specifications.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order.\n function assertValidTransactionOrdersApproval(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n LibOrder.Order[] memory orders,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view\n {\n // Verify that Ethereum tx signer is the same as the approved txOrigin\n require(\n tx.origin == txOrigin,\n \"INVALID_ORIGIN\"\n );\n\n // Hash 0x transaction\n bytes32 transactionHash = getTransactionHash(transaction);\n\n // Create empty list of approval signers\n address[] memory approvalSignerAddresses = new address[](0);\n\n uint256 signaturesLength = approvalSignatures.length;\n for (uint256 i = 0; i != signaturesLength; i++) {\n // Create approval message\n uint256 currentApprovalExpirationTimeSeconds = approvalExpirationTimeSeconds[i];\n CoordinatorApproval memory approval = CoordinatorApproval({\n txOrigin: txOrigin,\n transactionHash: transactionHash,\n transactionSignature: transactionSignature,\n approvalExpirationTimeSeconds: currentApprovalExpirationTimeSeconds\n });\n\n // Ensure approval has not expired\n require(\n // solhint-disable-next-line not-rely-on-time\n currentApprovalExpirationTimeSeconds > block.timestamp,\n \"APPROVAL_EXPIRED\"\n );\n\n // Hash approval message and recover signer address\n bytes32 approvalHash = getCoordinatorApprovalHash(approval);\n address approvalSignerAddress = getSignerAddress(approvalHash, approvalSignatures[i]);\n \n // Add approval signer to list of signers\n approvalSignerAddresses = approvalSignerAddresses.append(approvalSignerAddress);\n }\n \n // Ethereum transaction signer gives implicit signature of approval\n approvalSignerAddresses = approvalSignerAddresses.append(tx.origin);\n \n uint256 ordersLength = orders.length;\n for (uint256 i = 0; i != ordersLength; i++) {\n // Do not check approval if the order's senderAddress is null\n if (orders[i].senderAddress == address(0)) {\n continue;\n }\n\n // Ensure feeRecipient of order has approved this 0x transaction\n address approverAddress = orders[i].feeRecipientAddress;\n bool isOrderApproved = approvalSignerAddresses.contains(approverAddress);\n require(\n isOrderApproved,\n \"INVALID_APPROVAL_SIGNATURE\"\n );\n }\n }\n\n /// @dev Decodes the orders from Exchange calldata representing any fill method.\n /// @param data Exchange calldata representing a fill method.\n /// @return The orders from the Exchange calldata.\n function decodeFillDataOrders(bytes memory data)\n internal\n pure\n returns (LibOrder.Order[] memory orders)\n {\n bytes4 selector = data.readBytes4(0);\n if (\n selector == FILL_ORDER_SELECTOR ||\n selector == FILL_ORDER_NO_THROW_SELECTOR ||\n selector == FILL_OR_KILL_ORDER_SELECTOR\n ) {\n // Decode single order\n (LibOrder.Order memory order) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order)\n );\n orders = new LibOrder.Order[](1);\n orders[0] = order;\n } else if (\n selector == BATCH_FILL_ORDERS_SELECTOR ||\n selector == BATCH_FILL_ORDERS_NO_THROW_SELECTOR ||\n selector == BATCH_FILL_OR_KILL_ORDERS_SELECTOR ||\n selector == MARKET_BUY_ORDERS_SELECTOR ||\n selector == MARKET_BUY_ORDERS_NO_THROW_SELECTOR ||\n selector == MARKET_SELL_ORDERS_SELECTOR ||\n selector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR\n ) {\n // Decode all orders\n // solhint-disable indent\n (orders) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order[])\n );\n } else if (selector == MATCH_ORDERS_SELECTOR) {\n // Decode left and right orders\n (LibOrder.Order memory leftOrder, LibOrder.Order memory rightOrder) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order, LibOrder.Order)\n );\n\n // Create array of orders\n orders = new LibOrder.Order[](2);\n orders[0] = leftOrder;\n orders[1] = rightOrder;\n }\n return orders;\n }\n}\n", + "@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibExchangeSelectors {\n\n // solhint-disable max-line-length\n // allowedValidators\n bytes4 constant internal ALLOWED_VALIDATORS_SELECTOR = 0x7b8e3514;\n bytes4 constant internal ALLOWED_VALIDATORS_SELECTOR_GENERATOR = bytes4(keccak256(\"allowedValidators(address,address)\"));\n\n // assetProxies\n bytes4 constant internal ASSET_PROXIES_SELECTOR = 0x3fd3c997;\n bytes4 constant internal ASSET_PROXIES_SELECTOR_GENERATOR = bytes4(keccak256(\"assetProxies(bytes4)\"));\n\n // batchCancelOrders\n bytes4 constant internal BATCH_CANCEL_ORDERS_SELECTOR = 0x4ac14782;\n bytes4 constant internal BATCH_CANCEL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchCancelOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])\"));\n\n // batchFillOrKillOrders\n bytes4 constant internal BATCH_FILL_OR_KILL_ORDERS_SELECTOR = 0x4d0ae546;\n bytes4 constant internal BATCH_FILL_OR_KILL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrKillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // batchFillOrders\n bytes4 constant internal BATCH_FILL_ORDERS_SELECTOR = 0x297bb70b;\n bytes4 constant internal BATCH_FILL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // batchFillOrdersNoThrow\n bytes4 constant internal BATCH_FILL_ORDERS_NO_THROW_SELECTOR = 0x50dde190;\n bytes4 constant internal BATCH_FILL_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // cancelOrder\n bytes4 constant internal CANCEL_ORDER_SELECTOR = 0xd46b02c3;\n bytes4 constant internal CANCEL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\"));\n\n // cancelOrdersUpTo\n bytes4 constant internal CANCEL_ORDERS_UP_TO_SELECTOR = 0x4f9559b1;\n bytes4 constant internal CANCEL_ORDERS_UP_TO_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelOrdersUpTo(uint256)\"));\n\n // cancelled\n bytes4 constant internal CANCELLED_SELECTOR = 0x2ac12622;\n bytes4 constant internal CANCELLED_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelled(bytes32)\"));\n\n // currentContextAddress\n bytes4 constant internal CURRENT_CONTEXT_ADDRESS_SELECTOR = 0xeea086ba;\n bytes4 constant internal CURRENT_CONTEXT_ADDRESS_SELECTOR_GENERATOR = bytes4(keccak256(\"currentContextAddress()\"));\n\n // executeTransaction\n bytes4 constant internal EXECUTE_TRANSACTION_SELECTOR = 0xbfc8bfce;\n bytes4 constant internal EXECUTE_TRANSACTION_SELECTOR_GENERATOR = bytes4(keccak256(\"executeTransaction(uint256,address,bytes,bytes)\"));\n\n // fillOrKillOrder\n bytes4 constant internal FILL_OR_KILL_ORDER_SELECTOR = 0x64a3bc15;\n bytes4 constant internal FILL_OR_KILL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrKillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // fillOrder\n bytes4 constant internal FILL_ORDER_SELECTOR = 0xb4be83d5;\n bytes4 constant internal FILL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // fillOrderNoThrow\n bytes4 constant internal FILL_ORDER_NO_THROW_SELECTOR = 0x3e228bae;\n bytes4 constant internal FILL_ORDER_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrderNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // filled\n bytes4 constant internal FILLED_SELECTOR = 0x288cdc91;\n bytes4 constant internal FILLED_SELECTOR_GENERATOR = bytes4(keccak256(\"filled(bytes32)\"));\n\n // getAssetProxy\n bytes4 constant internal GET_ASSET_PROXY_SELECTOR = 0x60704108;\n bytes4 constant internal GET_ASSET_PROXY_SELECTOR_GENERATOR = bytes4(keccak256(\"getAssetProxy(bytes4)\"));\n\n // getOrderInfo\n bytes4 constant internal GET_ORDER_INFO_SELECTOR = 0xc75e0a81;\n bytes4 constant internal GET_ORDER_INFO_SELECTOR_GENERATOR = bytes4(keccak256(\"getOrderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\"));\n\n // getOrdersInfo\n bytes4 constant internal GET_ORDERS_INFO_SELECTOR = 0x7e9d74dc;\n bytes4 constant internal GET_ORDERS_INFO_SELECTOR_GENERATOR = bytes4(keccak256(\"getOrdersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])\"));\n\n // isValidSignature\n bytes4 constant internal IS_VALID_SIGNATURE_SELECTOR = 0x93634702;\n bytes4 constant internal IS_VALID_SIGNATURE_SELECTOR_GENERATOR = bytes4(keccak256(\"isValidSignature(bytes32,address,bytes)\"));\n\n // marketBuyOrders\n bytes4 constant internal MARKET_BUY_ORDERS_SELECTOR = 0xe5fa431b;\n bytes4 constant internal MARKET_BUY_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"marketBuyOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketBuyOrdersNoThrow\n bytes4 constant internal MARKET_BUY_ORDERS_NO_THROW_SELECTOR = 0xa3e20380;\n bytes4 constant internal MARKET_BUY_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"marketBuyOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketSellOrders\n bytes4 constant internal MARKET_SELL_ORDERS_SELECTOR = 0x7e1d9808;\n bytes4 constant internal MARKET_SELL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"marketSellOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketSellOrdersNoThrow\n bytes4 constant internal MARKET_SELL_ORDERS_NO_THROW_SELECTOR = 0xdd1c7d18;\n bytes4 constant internal MARKET_SELL_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"marketSellOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // matchOrders\n bytes4 constant internal MATCH_ORDERS_SELECTOR = 0x3c28d861;\n bytes4 constant internal MATCH_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)\"));\n\n // orderEpoch\n bytes4 constant internal ORDER_EPOCH_SELECTOR = 0xd9bfa73e;\n bytes4 constant internal ORDER_EPOCH_SELECTOR_GENERATOR = bytes4(keccak256(\"orderEpoch(address,address)\"));\n\n // owner\n bytes4 constant internal OWNER_SELECTOR = 0x8da5cb5b;\n bytes4 constant internal OWNER_SELECTOR_GENERATOR = bytes4(keccak256(\"owner()\"));\n\n // preSign\n bytes4 constant internal PRE_SIGN_SELECTOR = 0x3683ef8e;\n bytes4 constant internal PRE_SIGN_SELECTOR_GENERATOR = bytes4(keccak256(\"preSign(bytes32,address,bytes)\"));\n\n // preSigned\n bytes4 constant internal PRE_SIGNED_SELECTOR = 0x82c174d0;\n bytes4 constant internal PRE_SIGNED_SELECTOR_GENERATOR = bytes4(keccak256(\"preSigned(bytes32,address)\"));\n\n // registerAssetProxy\n bytes4 constant internal REGISTER_ASSET_PROXY_SELECTOR = 0xc585bb93;\n bytes4 constant internal REGISTER_ASSET_PROXY_SELECTOR_GENERATOR = bytes4(keccak256(\"registerAssetProxy(address)\"));\n\n // setSignatureValidatorApproval\n bytes4 constant internal SET_SIGNATURE_VALIDATOR_APPROVAL_SELECTOR = 0x77fcce68;\n bytes4 constant internal SET_SIGNATURE_VALIDATOR_APPROVAL_SELECTOR_GENERATOR = bytes4(keccak256(\"setSignatureValidatorApproval(address,bool)\"));\n\n // transactions\n bytes4 constant internal TRANSACTIONS_SELECTOR = 0x642f2eaf;\n bytes4 constant internal TRANSACTIONS_SELECTOR_GENERATOR = bytes4(keccak256(\"transactions(bytes32)\"));\n\n // transferOwnership\n bytes4 constant internal TRANSFER_OWNERSHIP_SELECTOR = 0xf2fde38b;\n bytes4 constant internal TRANSFER_OWNERSHIP_SELECTOR_GENERATOR = bytes4(keccak256(\"transferOwnership(address)\"));\n}", + "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712.sol\";\n\n\ncontract LibOrder is\n LibEIP712\n{\n // Hash for the EIP712 Order Schema\n bytes32 constant internal EIP712_ORDER_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"Order(\",\n \"address makerAddress,\",\n \"address takerAddress,\",\n \"address feeRecipientAddress,\",\n \"address senderAddress,\",\n \"uint256 makerAssetAmount,\",\n \"uint256 takerAssetAmount,\",\n \"uint256 makerFee,\",\n \"uint256 takerFee,\",\n \"uint256 expirationTimeSeconds,\",\n \"uint256 salt,\",\n \"bytes makerAssetData,\",\n \"bytes takerAssetData\",\n \")\"\n ));\n\n // A valid order remains fillable until it is expired, fully filled, or cancelled.\n // An order's state is unaffected by external factors, like account balances.\n enum OrderStatus {\n INVALID, // Default value\n INVALID_MAKER_ASSET_AMOUNT, // Order does not have a valid maker asset amount\n INVALID_TAKER_ASSET_AMOUNT, // Order does not have a valid taker asset amount\n FILLABLE, // Order is fillable\n EXPIRED, // Order has already expired\n FULLY_FILLED, // Order is fully filled\n CANCELLED // Order has been cancelled\n }\n\n // solhint-disable max-line-length\n struct Order {\n address makerAddress; // Address that created the order. \n address takerAddress; // Address that is allowed to fill the order. If set to 0, any address is allowed to fill the order. \n address feeRecipientAddress; // Address that will recieve fees when order is filled. \n address senderAddress; // Address that is allowed to call Exchange contract methods that affect this order. If set to 0, any address is allowed to call these methods.\n uint256 makerAssetAmount; // Amount of makerAsset being offered by maker. Must be greater than 0. \n uint256 takerAssetAmount; // Amount of takerAsset being bid on by maker. Must be greater than 0. \n uint256 makerFee; // Amount of ZRX paid to feeRecipient by maker when order is filled. If set to 0, no transfer of ZRX from maker to feeRecipient will be attempted.\n uint256 takerFee; // Amount of ZRX paid to feeRecipient by taker when order is filled. If set to 0, no transfer of ZRX from taker to feeRecipient will be attempted.\n uint256 expirationTimeSeconds; // Timestamp in seconds at which order expires. \n uint256 salt; // Arbitrary number to facilitate uniqueness of the order's hash. \n bytes makerAssetData; // Encoded data that can be decoded by a specified proxy contract when transferring makerAsset. The last byte references the id of this proxy.\n bytes takerAssetData; // Encoded data that can be decoded by a specified proxy contract when transferring takerAsset. The last byte references the id of this proxy.\n }\n // solhint-enable max-line-length\n\n struct OrderInfo {\n uint8 orderStatus; // Status that describes order's validity and fillability.\n bytes32 orderHash; // EIP712 hash of the order (see LibOrder.getOrderHash).\n uint256 orderTakerAssetFilledAmount; // Amount of order that has already been filled.\n }\n\n /// @dev Calculates Keccak-256 hash of the order.\n /// @param order The order structure.\n /// @return Keccak-256 EIP712 hash of the order.\n function getOrderHash(Order memory order)\n internal\n view\n returns (bytes32 orderHash)\n {\n orderHash = hashEIP712Message(hashOrder(order));\n return orderHash;\n }\n\n /// @dev Calculates EIP712 hash of the order.\n /// @param order The order structure.\n /// @return EIP712 hash of the order.\n function hashOrder(Order memory order)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_ORDER_SCHEMA_HASH;\n bytes32 makerAssetDataHash = keccak256(order.makerAssetData);\n bytes32 takerAssetDataHash = keccak256(order.takerAssetData);\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_ORDER_SCHEMA_HASH,\n // bytes32(order.makerAddress),\n // bytes32(order.takerAddress),\n // bytes32(order.feeRecipientAddress),\n // bytes32(order.senderAddress),\n // order.makerAssetAmount,\n // order.takerAssetAmount,\n // order.makerFee,\n // order.takerFee,\n // order.expirationTimeSeconds,\n // order.salt,\n // keccak256(order.makerAssetData),\n // keccak256(order.takerAssetData)\n // ));\n\n assembly {\n // Calculate memory addresses that will be swapped out before hashing\n let pos1 := sub(order, 32)\n let pos2 := add(order, 320)\n let pos3 := add(order, 352)\n\n // Backup\n let temp1 := mload(pos1)\n let temp2 := mload(pos2)\n let temp3 := mload(pos3)\n \n // Hash in place\n mstore(pos1, schemaHash)\n mstore(pos2, makerAssetDataHash)\n mstore(pos3, takerAssetDataHash)\n result := keccak256(pos1, 416)\n \n // Restore\n mstore(pos1, temp1)\n mstore(pos2, temp2)\n mstore(pos3, temp3)\n }\n return result;\n }\n}\n", + "@0x/contracts-exchange-libs/contracts/src/LibEIP712.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibEIP712 {\n\n // EIP191 header for EIP712 prefix\n string constant internal EIP191_HEADER = \"\\x19\\x01\";\n\n // EIP712 Domain Name value\n string constant internal EIP712_DOMAIN_NAME = \"0x Protocol\";\n\n // EIP712 Domain Version value\n string constant internal EIP712_DOMAIN_VERSION = \"2\";\n\n // Hash of the EIP712 Domain Separator Schema\n bytes32 constant internal EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"EIP712Domain(\",\n \"string name,\",\n \"string version,\",\n \"address verifyingContract\",\n \")\"\n ));\n\n // Hash of the EIP712 Domain Separator data\n // solhint-disable-next-line var-name-mixedcase\n bytes32 public EIP712_DOMAIN_HASH;\n\n constructor ()\n public\n {\n EIP712_DOMAIN_HASH = keccak256(abi.encodePacked(\n EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH,\n keccak256(bytes(EIP712_DOMAIN_NAME)),\n keccak256(bytes(EIP712_DOMAIN_VERSION)),\n uint256(address(this))\n ));\n }\n\n /// @dev Calculates EIP712 encoding for a hash struct in this EIP712 Domain.\n /// @param hashStruct The EIP712 hash struct.\n /// @return EIP712 hash applied to this EIP712 Domain.\n function hashEIP712Message(bytes32 hashStruct)\n internal\n view\n returns (bytes32 result)\n {\n bytes32 eip712DomainHash = EIP712_DOMAIN_HASH;\n\n // Assembly for more efficient computing:\n // keccak256(abi.encodePacked(\n // EIP191_HEADER,\n // EIP712_DOMAIN_HASH,\n // hashStruct \n // ));\n\n assembly {\n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000) // EIP191 header\n mstore(add(memPtr, 2), eip712DomainHash) // EIP712 domain hash\n mstore(add(memPtr, 34), hashStruct) // Hash of struct\n\n // Compute hash\n result := keccak256(memPtr, 66)\n }\n return result;\n }\n}\n", + "@0x/contracts-utils/contracts/src/LibAddressArray.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibBytes.sol\";\n\n\nlibrary LibAddressArray {\n\n /// @dev Append a new address to an array of addresses.\n /// The `addressArray` may need to be reallocated to make space\n /// for the new address. Because of this we return the resulting\n /// memory location of `addressArray`.\n /// @param addressArray Array of addresses.\n /// @param addressToAppend Address to append.\n /// @return Array of addresses: [... addressArray, addressToAppend]\n function append(address[] memory addressArray, address addressToAppend) \n internal\n pure\n returns (address[] memory)\n {\n // Get stats on address array and free memory\n uint256 freeMemPtr = 0;\n uint256 addressArrayBeginPtr = 0;\n uint256 addressArrayEndPtr = 0;\n uint256 addressArrayLength = addressArray.length;\n uint256 addressArrayMemSizeInBytes = 32 + (32 * addressArrayLength);\n assembly {\n freeMemPtr := mload(0x40)\n addressArrayBeginPtr := addressArray\n addressArrayEndPtr := add(addressArray, addressArrayMemSizeInBytes)\n }\n\n // Cases for `freeMemPtr`:\n // `freeMemPtr` == `addressArrayEndPtr`: Nothing occupies memory after `addressArray`\n // `freeMemPtr` > `addressArrayEndPtr`: Some value occupies memory after `addressArray`\n // `freeMemPtr` < `addressArrayEndPtr`: Memory has not been managed properly.\n require(\n freeMemPtr >= addressArrayEndPtr,\n \"INVALID_FREE_MEMORY_PTR\"\n );\n\n // If free memory begins at the end of `addressArray`\n // then we can append `addressToAppend` directly.\n // Otherwise, we must copy the array to free memory\n // before appending new values to it.\n if (freeMemPtr > addressArrayEndPtr) {\n LibBytes.memCopy(freeMemPtr, addressArrayBeginPtr, addressArrayMemSizeInBytes);\n assembly {\n addressArray := freeMemPtr\n addressArrayBeginPtr := addressArray\n }\n }\n\n // Append `addressToAppend`\n addressArrayLength += 1;\n addressArrayMemSizeInBytes += 32;\n addressArrayEndPtr = addressArrayBeginPtr + addressArrayMemSizeInBytes;\n freeMemPtr = addressArrayEndPtr;\n assembly {\n // Store new array length\n mstore(addressArray, addressArrayLength)\n\n // Update `freeMemPtr`\n mstore(0x40, freeMemPtr)\n }\n addressArray[addressArrayLength - 1] = addressToAppend;\n return addressArray;\n }\n\n /// @dev Checks if an address array contains the target address.\n /// @param addressArray Array of addresses.\n /// @param target Address to search for in array.\n /// @return True if the addressArray contains the target.\n function contains(address[] memory addressArray, address target)\n internal\n pure\n returns (bool success)\n {\n assembly {\n\n // Calculate byte length of array\n let arrayByteLen := mul(mload(addressArray), 32)\n // Calculate beginning of array contents\n let arrayContentsStart := add(addressArray, 32)\n // Calclulate end of array contents\n let arrayContentsEnd := add(arrayContentsStart, arrayByteLen)\n\n // Loop through array\n for {let i:= arrayContentsStart} lt(i, arrayContentsEnd) {i := add(i, 32)} {\n\n // Load array element\n let arrayElement := mload(i)\n\n // Return true if array element equals target\n if eq(target, arrayElement) {\n // Set success to true\n success := 1\n // Break loop\n i := arrayContentsEnd\n }\n }\n }\n return success;\n }\n\n /// @dev Finds the index of an address within an array.\n /// @param addressArray Array of addresses.\n /// @param target Address to search for in array.\n /// @return Existence and index of the target in the array.\n function indexOf(address[] memory addressArray, address target)\n internal\n pure\n returns (bool success, uint256 index)\n {\n assembly {\n\n // Calculate byte length of array\n let arrayByteLen := mul(mload(addressArray), 32)\n // Calculate beginning of array contents\n let arrayContentsStart := add(addressArray, 32)\n // Calclulate end of array contents\n let arrayContentsEnd := add(arrayContentsStart, arrayByteLen)\n\n // Loop through array\n for {let i:= arrayContentsStart} lt(i, arrayContentsEnd) {i := add(i, 32)} {\n\n // Load array element\n let arrayElement := mload(i)\n\n // Return true if array element equals target\n if eq(target, arrayElement) {\n // Set success and index\n success := 1\n index := div(i, 32)\n // Break loop\n i := arrayContentsEnd\n }\n }\n }\n return (success, index);\n }\n}\n", + "src/libs/LibCoordinatorApproval.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712Domain.sol\";\n\n\ncontract LibCoordinatorApproval is\n LibEIP712Domain\n{\n // Hash for the EIP712 Coordinator approval message\n // keccak256(abi.encodePacked(\n // \"CoordinatorApproval(\",\n // \"address txOrigin,\",\n // \"bytes32 transactionHash,\",\n // \"bytes transactionSignature,\",\n // \"uint256 approvalExpirationTimeSeconds\",\n // \")\"\n // ));\n bytes32 constant internal EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH = 0x2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e05;\n\n struct CoordinatorApproval {\n address txOrigin; // Required signer of Ethereum transaction that is submitting approval.\n bytes32 transactionHash; // EIP712 hash of the transaction, using the domain separator of this contract.\n bytes transactionSignature; // Signature of the 0x transaction.\n uint256 approvalExpirationTimeSeconds; // Timestamp in seconds for which the signature expires.\n }\n\n /// @dev Calculated the EIP712 hash of the Coordinator approval mesasage using the domain separator of this contract.\n /// @param approval Coordinator approval message containing the transaction hash, transaction signature, and expiration of the approval.\n /// @return EIP712 hash of the Coordinator approval message with the domain separator of this contract.\n function getCoordinatorApprovalHash(CoordinatorApproval memory approval)\n internal\n view\n returns (bytes32 approvalHash)\n {\n approvalHash = hashEIP712Message(hashCoordinatorApproval(approval));\n return approvalHash;\n }\n\n /// @dev Calculated the EIP712 hash of the Coordinator approval mesasage with no domain separator.\n /// @param approval Coordinator approval message containing the transaction hash, transaction signature, and expiration of the approval.\n /// @return EIP712 hash of the Coordinator approval message with no domain separator.\n function hashCoordinatorApproval(CoordinatorApproval memory approval)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH;\n bytes memory transactionSignature = approval.transactionSignature;\n address txOrigin = approval.txOrigin;\n bytes32 transactionHash = approval.transactionHash;\n uint256 approvalExpirationTimeSeconds = approval.approvalExpirationTimeSeconds;\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH,\n // approval.transactionHash,\n // keccak256(approval.transactionSignature)\n // approval.expiration,\n // ));\n\n assembly {\n // Compute hash of transaction signature\n let transactionSignatureHash := keccak256(add(transactionSignature, 32), mload(transactionSignature))\n \n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, schemaHash) // hash of schema\n mstore(add(memPtr, 32), txOrigin) // txOrigin\n mstore(add(memPtr, 64), transactionHash) // transactionHash\n mstore(add(memPtr, 96), transactionSignatureHash) // transactionSignatureHash\n mstore(add(memPtr, 128), approvalExpirationTimeSeconds) // approvalExpirationTimeSeconds\n // Compute hash\n result := keccak256(memPtr, 160)\n }\n return result;\n }\n}\n", + "src/libs/LibEIP712Domain.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibEIP712Domain {\n\n // EIP191 header for EIP712 prefix\n string constant internal EIP191_HEADER = \"\\x19\\x01\";\n\n // EIP712 Domain Name value\n string constant internal EIP712_DOMAIN_NAME = \"0x Protocol Coordinator\";\n\n // EIP712 Domain Version value\n string constant internal EIP712_DOMAIN_VERSION = \"1.0.0\";\n\n // Hash of the EIP712 Domain Separator Schema\n bytes32 constant internal EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"EIP712Domain(\",\n \"string name,\",\n \"string version,\",\n \"address verifyingContract\",\n \")\"\n ));\n\n // Hash of the EIP712 Domain Separator data\n // solhint-disable-next-line var-name-mixedcase\n bytes32 public EIP712_DOMAIN_HASH;\n\n constructor ()\n public\n {\n EIP712_DOMAIN_HASH = keccak256(abi.encodePacked(\n EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH,\n keccak256(bytes(EIP712_DOMAIN_NAME)),\n keccak256(bytes(EIP712_DOMAIN_VERSION)),\n uint256(address(this))\n ));\n }\n\n /// @dev Calculates EIP712 encoding for a hash struct in this EIP712 Domain.\n /// @param hashStruct The EIP712 hash struct.\n /// @return EIP712 hash applied to this EIP712 Domain.\n function hashEIP712Message(bytes32 hashStruct)\n internal\n view\n returns (bytes32 result)\n {\n bytes32 eip712DomainHash = EIP712_DOMAIN_HASH;\n\n // Assembly for more efficient computing:\n // keccak256(abi.encodePacked(\n // EIP191_HEADER,\n // EIP712_DOMAIN_HASH,\n // hashStruct \n // ));\n\n assembly {\n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000) // EIP191 header\n mstore(add(memPtr, 2), eip712DomainHash) // EIP712 domain hash\n mstore(add(memPtr, 34), hashStruct) // Hash of struct\n\n // Compute hash\n result := keccak256(memPtr, 66)\n }\n return result;\n }\n}\n", + "src/libs/LibZeroExTransaction.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712Domain.sol\";\n\n\ncontract LibZeroExTransaction is\n LibEIP712Domain\n{\n // Hash for the EIP712 0x transaction schema\n // keccak256(abi.encodePacked(\n // \"ZeroExTransaction(\",\n // \"uint256 salt,\",\n // \"address signerAddress,\",\n // \"bytes data\",\n // \")\"\n // ));\n bytes32 constant internal EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH = 0x213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c;\n\n struct ZeroExTransaction {\n uint256 salt; // Arbitrary number to ensure uniqueness of transaction hash.\n address signerAddress; // Address of transaction signer.\n bytes data; // AbiV2 encoded calldata.\n }\n\n /// @dev Calculates the EIP712 hash of a 0x transaction using the domain separator of this contract.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @return EIP712 hash of the transaction with the domain separator of this contract.\n function getTransactionHash(ZeroExTransaction memory transaction)\n internal\n view\n returns (bytes32 transactionHash)\n {\n // Note: this transaction hash will differ from the hash produced by the Exchange contract because it utilizes a different domain hash.\n transactionHash = hashEIP712Message(hashZeroExTransaction(transaction));\n return transactionHash;\n }\n\n /// @dev Calculates EIP712 hash of the 0x transaction with no domain separator.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @return EIP712 hash of the transaction with no domain separator.\n function hashZeroExTransaction(ZeroExTransaction memory transaction)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH;\n bytes memory data = transaction.data;\n uint256 salt = transaction.salt;\n address signerAddress = transaction.signerAddress;\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH,\n // transaction.salt,\n // uint256(transaction.signerAddress),\n // keccak256(transaction.data)\n // ));\n\n assembly {\n // Compute hash of data\n let dataHash := keccak256(add(data, 32), mload(data))\n \n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, schemaHash) // hash of schema\n mstore(add(memPtr, 32), salt) // salt\n mstore(add(memPtr, 64), and(signerAddress, 0xffffffffffffffffffffffffffffffffffffffff)) // signerAddress\n mstore(add(memPtr, 96), dataHash) // hash of data\n\n // Compute hash\n result := keccak256(memPtr, 128)\n }\n return result;\n }\n}\n", + "src/mixins/MCoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"../interfaces/ICoordinatorApprovalVerifier.sol\";\n\n\ncontract MCoordinatorApprovalVerifier is\n ICoordinatorApprovalVerifier\n{\n /// @dev Decodes the orders from Exchange calldata representing any fill method.\n /// @param data Exchange calldata representing a fill method.\n /// @return The orders from the Exchange calldata.\n function decodeFillDataOrders(bytes memory data)\n internal\n pure\n returns (LibOrder.Order[] memory orders);\n}\n", + "src/interfaces/ICoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"../libs/LibZeroExTransaction.sol\";\n\n\ncontract ICoordinatorApprovalVerifier {\n\n /// @dev Validates that the 0x transaction has been approved by all of the feeRecipients\n /// that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function assertValidCoordinatorApprovals(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view;\n\n /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param orders Array of order structs containing order specifications.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order.\n function assertValidTransactionOrdersApproval(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n LibOrder.Order[] memory orders,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view;\n}\n", + "src/MixinCoordinatorCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"./libs/LibZeroExTransaction.sol\";\nimport \"./libs/LibConstants.sol\";\nimport \"./mixins/MCoordinatorApprovalVerifier.sol\";\nimport \"./interfaces/ICoordinatorCore.sol\";\n\n\ncontract MixinCoordinatorCore is\n LibConstants,\n MCoordinatorApprovalVerifier,\n ICoordinatorCore\n{\n /// @dev Executes a 0x transaction that has been signed by the feeRecipients that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function executeTransaction(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n {\n // Validate that the 0x transaction has been approves by each feeRecipient\n assertValidCoordinatorApprovals(\n transaction,\n txOrigin,\n transactionSignature,\n approvalExpirationTimeSeconds,\n approvalSignatures\n );\n\n // Execute the transaction\n EXCHANGE.executeTransaction(\n transaction.salt,\n transaction.signerAddress,\n transaction.data,\n transactionSignature\n );\n }\n}\n", + "src/interfaces/ICoordinatorCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"../libs/LibZeroExTransaction.sol\";\n\n\ncontract ICoordinatorCore {\n\n /// @dev Executes a 0x transaction that has been signed by the feeRecipients that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function executeTransaction(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public;\n}\n" + }, + "sourceTreeHashHex": "0xcb9dc4e3588f7417807cc8b901a358efbad1d37ae61794e3031c8f00ac09d41e", + "compiler": { + "name": "solc", + "version": "0.5.3+commit.10d17f24.Linux.g++", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode.object", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.object", + "evm.deployedBytecode.sourceMap" + ] + } + }, + "evmVersion": "byzantium", + "remappings": [ + "@0x/contracts-utils=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-utils", + "@0x/contracts-exchange-libs=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-exchange-libs" + ] + } + }, + "networks": {} +} \ No newline at end of file diff --git a/packages/contract-artifacts/artifacts/CoordinatorRegistry.json b/packages/contract-artifacts/artifacts/CoordinatorRegistry.json new file mode 100644 index 0000000000..837e3b7046 --- /dev/null +++ b/packages/contract-artifacts/artifacts/CoordinatorRegistry.json @@ -0,0 +1,122 @@ +{ + "schemaVersion": "2.0.0", + "contractName": "CoordinatorRegistry", + "compilerOutput": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "name": "setCoordinatorEndpoint", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "coordinatorOperator", + "type": "address" + } + ], + "name": "getCoordinatorEndpoint", + "outputs": [ + { + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "coordinatorOperator", + "type": "address" + }, + { + "indexed": false, + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "name": "CoordinatorEndpointSet", + "type": "event" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b506104b5806100206000396000f3fe608060405234801561001057600080fd5b5060043610610052577c010000000000000000000000000000000000000000000000000000000060003504635b2388be81146100575780636c90fedb1461006c575b600080fd5b61006a6100653660046102ff565b610095565b005b61007f61007a3660046102d9565b6100f0565b60405161008c91906103d8565b60405180910390f35b3360008181526020819052604090206100af9084846101c4565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e8184846040516100e3939291906103ae565b60405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156101b85780601f1061018d576101008083540402835291602001916101b8565b820191906000526020600020905b81548152906001019060200180831161019b57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610223578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610250565b82800160010185558215610250579182015b82811115610250578235825591602001919060010190610235565b5061025c929150610260565b5090565b61027a91905b8082111561025c5760008155600101610266565b90565b600061028982356103ed565b9392505050565b600080601f830184136102a257600080fd5b50813567ffffffffffffffff8111156102ba57600080fd5b6020830191508360018202830111156102d257600080fd5b9250929050565b6000602082840312156102eb57600080fd5b60006102f7848461027d565b949350505050565b6000806020838503121561031257600080fd5b823567ffffffffffffffff81111561032957600080fd5b61033585828601610290565b92509250509250929050565b61034a816103ed565b82525050565b6000828452602084019350610366838584610417565b61036f83610453565b9093019392505050565b6000610384826103e9565b808452610398816020860160208601610423565b6103a181610453565b9093016020019392505050565b604081016103bc8286610341565b81810360208301526103cf818486610350565b95945050505050565b602080825281016102898184610379565b5190565b60006103f8826103fe565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561043e578181015183820152602001610426565b8381111561044d576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a72305820d8fc8bc6ec7167e671f9f87937212d93c49d5fbe171bbdfa06c846e5ac76151b6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B5 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x52 JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x5B2388BE DUP2 EQ PUSH2 0x57 JUMPI DUP1 PUSH4 0x6C90FEDB EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH2 0x65 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x95 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xAF SWAP1 DUP5 DUP5 PUSH2 0x1C4 JUMP JUMPDEST POP PUSH32 0xD060052768902F3EECB84B8EAE9D3A2608A1A9E60811A33968B46B8D552F266E DUP2 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x18D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1B8 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x19B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x223 JUMPI DUP3 DUP1 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x250 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x250 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x250 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x235 JUMP JUMPDEST POP PUSH2 0x25C SWAP3 SWAP2 POP PUSH2 0x260 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x27A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x266 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x289 DUP3 CALLDATALOAD PUSH2 0x3ED JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1F DUP4 ADD DUP5 SGT PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F7 DUP5 DUP5 PUSH2 0x27D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x335 DUP6 DUP3 DUP7 ADD PUSH2 0x290 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x34A DUP2 PUSH2 0x3ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x366 DUP4 DUP6 DUP5 PUSH2 0x417 JUMP JUMPDEST PUSH2 0x36F DUP4 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x384 DUP3 PUSH2 0x3E9 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x398 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x423 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3BC DUP3 DUP7 PUSH2 0x341 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3CF DUP2 DUP5 DUP7 PUSH2 0x350 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x289 DUP2 DUP5 PUSH2 0x379 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8 DUP3 PUSH2 0x3FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x426 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0xd8 0xfc DUP12 0xc6 0xec PUSH18 0x67E671F9F87937212D93C49D5FBE171BBDFA MOD 0xc8 0x46 0xe5 0xac PUSH23 0x151B6C6578706572696D656E74616CF500370000000000 ", + "sourceMap": "720:148:14:-;;;791:75;8:9:-1;5:2;;;30:1;27;20:12;5:2;791:75:14;720:148;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b5060043610610052577c010000000000000000000000000000000000000000000000000000000060003504635b2388be81146100575780636c90fedb1461006c575b600080fd5b61006a6100653660046102ff565b610095565b005b61007f61007a3660046102d9565b6100f0565b60405161008c91906103d8565b60405180910390f35b3360008181526020819052604090206100af9084846101c4565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e8184846040516100e3939291906103ae565b60405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156101b85780601f1061018d576101008083540402835291602001916101b8565b820191906000526020600020905b81548152906001019060200180831161019b57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610223578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610250565b82800160010185558215610250579182015b82811115610250578235825591602001919060010190610235565b5061025c929150610260565b5090565b61027a91905b8082111561025c5760008155600101610266565b90565b600061028982356103ed565b9392505050565b600080601f830184136102a257600080fd5b50813567ffffffffffffffff8111156102ba57600080fd5b6020830191508360018202830111156102d257600080fd5b9250929050565b6000602082840312156102eb57600080fd5b60006102f7848461027d565b949350505050565b6000806020838503121561031257600080fd5b823567ffffffffffffffff81111561032957600080fd5b61033585828601610290565b92509250509250929050565b61034a816103ed565b82525050565b6000828452602084019350610366838584610417565b61036f83610453565b9093019392505050565b6000610384826103e9565b808452610398816020860160208601610423565b6103a181610453565b9093016020019392505050565b604081016103bc8286610341565b81810360208301526103cf818486610350565b95945050505050565b602080825281016102898184610379565b5190565b60006103f8826103fe565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561043e578181015183820152602001610426565b8381111561044d576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a72305820d8fc8bc6ec7167e671f9f87937212d93c49d5fbe171bbdfa06c846e5ac76151b6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x52 JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x5B2388BE DUP2 EQ PUSH2 0x57 JUMPI DUP1 PUSH4 0x6C90FEDB EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH2 0x65 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x95 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xAF SWAP1 DUP5 DUP5 PUSH2 0x1C4 JUMP JUMPDEST POP PUSH32 0xD060052768902F3EECB84B8EAE9D3A2608A1A9E60811A33968B46B8D552F266E DUP2 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x18D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1B8 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x19B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x223 JUMPI DUP3 DUP1 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x250 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x250 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x250 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x235 JUMP JUMPDEST POP PUSH2 0x25C SWAP3 SWAP2 POP PUSH2 0x260 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x27A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x266 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x289 DUP3 CALLDATALOAD PUSH2 0x3ED JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1F DUP4 ADD DUP5 SGT PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F7 DUP5 DUP5 PUSH2 0x27D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x335 DUP6 DUP3 DUP7 ADD PUSH2 0x290 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x34A DUP2 PUSH2 0x3ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x366 DUP4 DUP6 DUP5 PUSH2 0x417 JUMP JUMPDEST PUSH2 0x36F DUP4 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x384 DUP3 PUSH2 0x3E9 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x398 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x423 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3BC DUP3 DUP7 PUSH2 0x341 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3CF DUP2 DUP5 DUP7 PUSH2 0x350 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x289 DUP2 DUP5 PUSH2 0x379 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8 DUP3 PUSH2 0x3FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x426 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0xd8 0xfc DUP12 0xc6 0xec PUSH18 0x67E671F9F87937212D93C49D5FBE171BBDFA MOD 0xc8 0x46 0xe5 0xac PUSH23 0x151B6C6578706572696D656E74616CF500370000000000 ", + "sourceMap": "720:148:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;720:148:14;;;;;;;;;;;;;;;;;;;;;;;;1086:287:15;;;;;;;;;:::i;:::-;;1502:212;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1086:287;1204:10;1174:27;1224:41;;;;;;;;;;:63;;1268:19;;1224:63;:::i;:::-;;1302:64;1325:19;1346;;1302:64;;;;;;;;;;;;;;;;;1086:287;;;:::o;1502:212::-;1666:41;;;:20;:41;;;;;;;;;;;;1659:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:33;;1659:48;;;1666:41;1659:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1502:212;;;:::o;720:148:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;720:148:14;;;-1:-1:-1;720:148:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;57:66;-1:-1;;;57:66;145:336;;;253:4;241:17;;237:27;-1:-1;227:2;;278:1;275;268:12;227:2;-1:-1;298:20;;338:18;327:30;;324:2;;;370:1;367;360:12;324:2;404:4;396:6;392:17;380:29;;454:3;447;439:6;435:16;425:8;421:31;418:40;415:2;;;471:1;468;461:12;415:2;220:261;;;;;;489:241;;593:2;581:9;572:7;568:23;564:32;561:2;;;609:1;606;599:12;561:2;644:1;661:53;706:7;686:9;661:53;;;651:63;555:175;-1:-1;;;;555:175;737:367;;;861:2;849:9;840:7;836:23;832:32;829:2;;;877:1;874;867:12;829:2;912:31;;963:18;952:30;;949:2;;;995:1;992;985:12;949:2;1023:65;1080:7;1071:6;1060:9;1056:22;1023:65;;;1005:83;;;;891:203;823:281;;;;;;1111:120;1194:31;1219:5;1194:31;;;1189:3;1182:44;1176:55;;;1261:273;;1381:6;1376:3;1369:19;1405:4;1400:3;1396:14;1389:21;;1435:43;1471:6;1466:3;1459:5;1435:43;;;1499:29;1521:6;1499:29;;;1490:39;;;;1363:171;-1:-1;;;1363:171;1541:310;;1653:39;1686:5;1653:39;;;1709:6;1704:3;1697:19;1721:63;1777:6;1770:4;1765:3;1761:14;1754:4;1747:5;1743:16;1721:63;;;1816:29;1838:6;1816:29;;;1796:50;;;1809:4;1796:50;;1633:218;-1:-1;;;1633:218;1858:432;2034:2;2019:18;;2048:71;2023:9;2092:6;2048:71;;;2167:9;2161:4;2157:20;2152:2;2141:9;2137:18;2130:48;2192:88;2275:4;2266:6;2258;2192:88;;;2184:96;2005:285;-1:-1;;;;;2005:285;2297:301;2435:2;2449:47;;;2420:18;;2510:78;2420:18;2574:6;2510:78;;2605:92;2680:12;;2664:33;2704:105;;2773:31;2798:5;2773:31;;;2762:42;2756:53;-1:-1;;2756:53;2816:128;2896:42;2885:54;;2868:76;3064:145;3145:6;3140:3;3135;3122:30;-1:-1;3201:1;3183:16;;3176:27;3115:94;3218:268;3283:1;3290:101;3304:6;3301:1;3298:13;3290:101;;;3371:11;;;3365:18;3352:11;;;3345:39;3326:2;3319:10;3290:101;;;3406:6;3403:1;3400:13;3397:2;;;3471:1;3462:6;3457:3;3453:16;3446:27;3397:2;3267:219;;;;;3494:97;3582:2;3562:14;3578:7;3558:28;;3542:49" + } + } + }, + "sources": { + "src/registry/CoordinatorRegistry.sol": { + "id": 14 + }, + "src/registry/MixinCoordinatorRegistryCore.sol": { + "id": 15 + }, + "src/registry/interfaces/ICoordinatorRegistryCore.sol": { + "id": 16 + } + }, + "sourceCodes": { + "src/registry/CoordinatorRegistry.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\nimport \"./MixinCoordinatorRegistryCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract CoordinatorRegistry is\n MixinCoordinatorRegistryCore\n{\n constructor ()\n public\n MixinCoordinatorRegistryCore()\n {}\n}\n", + "src/registry/MixinCoordinatorRegistryCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\nimport \"./interfaces/ICoordinatorRegistryCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract MixinCoordinatorRegistryCore is\n ICoordinatorRegistryCore\n{\n // mapping from `coordinatorOperator` -> `coordinatorEndpoint`\n mapping (address => string) internal coordinatorEndpoints;\n\n /// @dev Called by a Coordinator operator to set the endpoint of their Coordinator.\n /// @param coordinatorEndpoint endpoint of the Coordinator.\n function setCoordinatorEndpoint(string calldata coordinatorEndpoint) external {\n address coordinatorOperator = msg.sender;\n coordinatorEndpoints[coordinatorOperator] = coordinatorEndpoint;\n emit CoordinatorEndpointSet(coordinatorOperator, coordinatorEndpoint);\n }\n\n /// @dev Gets the endpoint for a Coordinator.\n /// @param coordinatorOperator operator of the Coordinator endpoint.\n function getCoordinatorEndpoint(address coordinatorOperator)\n external\n view\n returns (string memory coordinatorEndpoint)\n {\n return coordinatorEndpoints[coordinatorOperator];\n }\n}\n", + "src/registry/interfaces/ICoordinatorRegistryCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\n\n// solhint-disable no-empty-blocks\ncontract ICoordinatorRegistryCore\n{\n /// @dev Emitted when a Coordinator endpoint is set.\n event CoordinatorEndpointSet(\n address coordinatorOperator,\n string coordinatorEndpoint\n );\n\n /// @dev Called by a Coordinator operator to set the endpoint of their Coordinator.\n /// @param coordinatorEndpoint endpoint of the Coordinator.\n function setCoordinatorEndpoint(string calldata coordinatorEndpoint) external;\n\n /// @dev Gets the endpoint for a Coordinator.\n /// @param coordinatorOperator operator of the Coordinator endpoint.\n function getCoordinatorEndpoint(address coordinatorOperator)\n external\n view\n returns (string memory coordinatorEndpoint);\n}\n" + }, + "sourceTreeHashHex": "0x73b5157724c2624755d003dcb560ff5732c8ae78d44b1b99ec064e8b909f8f8c", + "compiler": { + "name": "solc", + "version": "0.5.3+commit.10d17f24.Linux.g++", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode.object", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.object", + "evm.deployedBytecode.sourceMap" + ] + } + }, + "evmVersion": "byzantium", + "remappings": [ + "@0x/contracts-utils=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-utils", + "@0x/contracts-exchange-libs=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-exchange-libs" + ] + } + }, + "networks": {} +} \ No newline at end of file diff --git a/packages/contract-artifacts/package.json b/packages/contract-artifacts/package.json index 6a98615d76..e2ed257b23 100644 --- a/packages/contract-artifacts/package.json +++ b/packages/contract-artifacts/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-artifacts", - "version": "1.3.0", + "version": "1.4.0", "engines": { "node": ">=6.12" }, diff --git a/packages/contract-artifacts/src/index.ts b/packages/contract-artifacts/src/index.ts index 1cbda9518b..6b751222c1 100644 --- a/packages/contract-artifacts/src/index.ts +++ b/packages/contract-artifacts/src/index.ts @@ -1,4 +1,6 @@ import * as AssetProxyOwner from '../artifacts/AssetProxyOwner.json'; +import * as Coordinator from '../artifacts/Coordinator.json'; +import * as CoordinatorRegistry from '../artifacts/CoordinatorRegistry.json'; import * as DummyERC20Token from '../artifacts/DummyERC20Token.json'; import * as DummyERC721Token from '../artifacts/DummyERC721Token.json'; import * as DutchAuction from '../artifacts/DutchAuction.json'; @@ -32,4 +34,6 @@ export { OrderValidator, WETH9, ZRXToken, + Coordinator, + CoordinatorRegistry, }; diff --git a/packages/contract-artifacts/tsconfig.json b/packages/contract-artifacts/tsconfig.json index 1aef41bb8f..022463e771 100644 --- a/packages/contract-artifacts/tsconfig.json +++ b/packages/contract-artifacts/tsconfig.json @@ -22,6 +22,8 @@ "./artifacts/MultiAssetProxy.json", "./artifacts/OrderValidator.json", "./artifacts/WETH9.json", - "./artifacts/ZRXToken.json" + "./artifacts/ZRXToken.json", + "./artifacts/CoordinatorRegistry.json", + "./artifacts/Coordinator.json" ] } diff --git a/packages/contract-wrappers/CHANGELOG.json b/packages/contract-wrappers/CHANGELOG.json index bc6a91d54c..5ab5d9bc58 100644 --- a/packages/contract-wrappers/CHANGELOG.json +++ b/packages/contract-wrappers/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "8.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "8.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "8.0.3", "changes": [ diff --git a/packages/contract-wrappers/CHANGELOG.md b/packages/contract-wrappers/CHANGELOG.md index 470d7ef585..b0f730b42a 100644 --- a/packages/contract-wrappers/CHANGELOG.md +++ b/packages/contract-wrappers/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v8.0.5 - _March 21, 2019_ + + * Dependencies updated + +## v8.0.4 - _March 20, 2019_ + + * Dependencies updated + ## v8.0.3 - _March 1, 2019_ * Move contracts-test-utils and fill-scenarios to dev dependency (#1657) diff --git a/packages/contract-wrappers/package.json b/packages/contract-wrappers/package.json index 324f2d6c49..88ceb51658 100644 --- a/packages/contract-wrappers/package.json +++ b/packages/contract-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-wrappers", - "version": "8.0.3", + "version": "8.0.5", "description": "Smart TS wrappers for 0x smart contracts", "keywords": [ "0xproject", @@ -37,11 +37,11 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/fill-scenarios": "^3.0.2", - "@0x/migrations": "^4.0.3", - "@0x/subproviders": "^4.0.2", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/fill-scenarios": "^3.0.4", + "@0x/migrations": "^4.1.0", + "@0x/subproviders": "^4.0.4", "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -67,17 +67,17 @@ "web3-provider-engine": "14.0.6" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.0.2", - "@0x/assert": "^2.0.6", - "@0x/contract-addresses": "^2.2.2", - "@0x/contract-artifacts": "^1.3.0", - "@0x/json-schemas": "^3.0.6", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/abi-gen-wrappers": "^4.1.0", + "@0x/assert": "^2.0.8", + "@0x/contract-addresses": "^2.3.0", + "@0x/contract-artifacts": "^1.4.0", + "@0x/json-schemas": "^3.0.8", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "ethereumjs-abi": "0.6.5", "ethereumjs-blockstream": "6.0.0", "ethereumjs-util": "^5.1.1", diff --git a/packages/contract-wrappers/test/erc20_wrapper_test.ts b/packages/contract-wrappers/test/erc20_wrapper_test.ts index 8078c0e0b8..bfbb2196d6 100644 --- a/packages/contract-wrappers/test/erc20_wrapper_test.ts +++ b/packages/contract-wrappers/test/erc20_wrapper_test.ts @@ -2,7 +2,7 @@ import { ContractAddresses } from '@0x/contract-addresses'; import { BlockchainLifecycle, callbackErrorReporter } from '@0x/dev-utils'; import { EmptyWalletSubprovider, Web3ProviderEngine } from '@0x/subproviders'; import { DoneCallback } from '@0x/types'; -import { BigNumber } from '@0x/utils'; +import { BigNumber, providerUtils } from '@0x/utils'; import * as chai from 'chai'; import 'mocha'; @@ -628,6 +628,6 @@ function addEmptyWalletSubprovider(p: Web3ProviderEngine): Web3ProviderEngine { for (const subprovider of currentSubproviders) { providerEngine.addProvider(subprovider); } - providerEngine.start(); + providerUtils.startProviderEngine(providerEngine); return providerEngine; } diff --git a/packages/contract-wrappers/test/erc721_wrapper_test.ts b/packages/contract-wrappers/test/erc721_wrapper_test.ts index bbf71208de..2679ef8d3b 100644 --- a/packages/contract-wrappers/test/erc721_wrapper_test.ts +++ b/packages/contract-wrappers/test/erc721_wrapper_test.ts @@ -1,7 +1,7 @@ import { BlockchainLifecycle, callbackErrorReporter } from '@0x/dev-utils'; import { EmptyWalletSubprovider, Web3ProviderEngine } from '@0x/subproviders'; import { DoneCallback } from '@0x/types'; -import { BigNumber } from '@0x/utils'; +import { BigNumber, providerUtils } from '@0x/utils'; import * as chai from 'chai'; import 'mocha'; @@ -460,6 +460,6 @@ function addEmptyWalletSubprovider(p: Web3ProviderEngine): Web3ProviderEngine { for (const subprovider of currentSubproviders) { providerEngine.addProvider(subprovider); } - providerEngine.start(); + providerUtils.startProviderEngine(providerEngine); return providerEngine; } diff --git a/packages/contracts-gen/CHANGELOG.json b/packages/contracts-gen/CHANGELOG.json index 8ad064b284..50e8b378aa 100644 --- a/packages/contracts-gen/CHANGELOG.json +++ b/packages/contracts-gen/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "1.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "1.0.6", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "1.0.5", diff --git a/packages/contracts-gen/CHANGELOG.md b/packages/contracts-gen/CHANGELOG.md index dd73ea9846..3a84e36e34 100644 --- a/packages/contracts-gen/CHANGELOG.md +++ b/packages/contracts-gen/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.7 - _March 21, 2019_ + + * Dependencies updated + +## v1.0.6 - _March 20, 2019_ + + * Dependencies updated + ## v1.0.5 - _March 1, 2019_ * Dependencies updated diff --git a/packages/contracts-gen/package.json b/packages/contracts-gen/package.json index a900fe4c93..090ed71e0a 100644 --- a/packages/contracts-gen/package.json +++ b/packages/contracts-gen/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contracts-gen", - "version": "1.0.5", + "version": "1.0.7", "engines": { "node": ">=6.12" }, @@ -26,11 +26,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/contracts-gen/README.md", "dependencies": { - "@0x/sol-resolver": "^2.0.4", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "ethereum-types": "^2.1.0", + "@0x/sol-resolver": "^2.0.6", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11", "prettier": "^1.16.3", "to-snake-case": "^1.0.0" diff --git a/packages/dev-tools-pages/package.json b/packages/dev-tools-pages/package.json index f2e61e80b4..b735af6806 100644 --- a/packages/dev-tools-pages/package.json +++ b/packages/dev-tools-pages/package.json @@ -1,6 +1,6 @@ { "name": "@0x/dev-tools-pages", - "version": "0.0.22", + "version": "0.0.24", "engines": { "node": ">=6.12" }, @@ -26,7 +26,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@0x/react-shared": "^2.0.7", + "@0x/react-shared": "^2.0.9", "basscss": "^8.0.3", "bowser": "^1.9.4", "highlight.js": "^9.13.1", diff --git a/packages/dev-utils/CHANGELOG.json b/packages/dev-utils/CHANGELOG.json index 592f188ac9..e6ec03c134 100644 --- a/packages/dev-utils/CHANGELOG.json +++ b/packages/dev-utils/CHANGELOG.json @@ -1,4 +1,23 @@ [ + { + "version": "2.2.0", + "changes": [ + { + "note": "Added `startProviderEngine` to `providerUtils`. Preventing excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, + { + "timestamp": 1553091633, + "version": "2.1.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "2.1.3", diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index d8f17c25bd..2a0bdf9de2 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.2.0 - _March 21, 2019_ + + * Added `startProviderEngine` to `providerUtils`. Preventing excess block polling (#1695) + +## v2.1.4 - _March 20, 2019_ + + * Dependencies updated + ## v2.1.3 - _March 1, 2019_ * Dependencies updated diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 35b7f3af16..b61ab4b58c 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/dev-utils", - "version": "2.1.3", + "version": "2.2.0", "engines": { "node": ">=6.12" }, @@ -41,14 +41,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/subproviders": "^4.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/subproviders": "^4.0.4", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@types/web3-provider-engine": "^14.0.0", "chai": "^4.0.1", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/packages/dev-utils/src/web3_factory.ts b/packages/dev-utils/src/web3_factory.ts index 3fa3c19f70..fcfac24b3d 100644 --- a/packages/dev-utils/src/web3_factory.ts +++ b/packages/dev-utils/src/web3_factory.ts @@ -5,6 +5,7 @@ import { RPCSubprovider, Web3ProviderEngine, } from '@0x/subproviders'; +import { providerUtils } from '@0x/utils'; import * as fs from 'fs'; import * as _ from 'lodash'; @@ -68,7 +69,7 @@ export const web3Factory = { } else { provider.addProvider(new RPCSubprovider(config.rpcUrl || constants.RPC_URL)); } - provider.start(); + providerUtils.startProviderEngine(provider); return provider; }, }; diff --git a/packages/ethereum-types/CHANGELOG.json b/packages/ethereum-types/CHANGELOG.json index 29a47c17eb..5654d582c8 100644 --- a/packages/ethereum-types/CHANGELOG.json +++ b/packages/ethereum-types/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1553091633, + "version": "2.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "2.1.0", "changes": [ diff --git a/packages/ethereum-types/CHANGELOG.md b/packages/ethereum-types/CHANGELOG.md index 094800c005..72b4041d36 100644 --- a/packages/ethereum-types/CHANGELOG.md +++ b/packages/ethereum-types/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.1 - _March 20, 2019_ + + * Dependencies updated + ## v2.1.0 - _February 25, 2019_ * Added types SupportedProvider, GanacheProvider, Web3JsProvider, ZeroExProvider, EIP1193Provider (#1627) diff --git a/packages/ethereum-types/package.json b/packages/ethereum-types/package.json index 178eb3cca2..4f13f3b903 100644 --- a/packages/ethereum-types/package.json +++ b/packages/ethereum-types/package.json @@ -1,6 +1,6 @@ { "name": "ethereum-types", - "version": "2.1.0", + "version": "2.1.1", "engines": { "node": ">=6.12" }, diff --git a/packages/fill-scenarios/CHANGELOG.json b/packages/fill-scenarios/CHANGELOG.json index 7a6b5b62fb..5359e6d18a 100644 --- a/packages/fill-scenarios/CHANGELOG.json +++ b/packages/fill-scenarios/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "3.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "3.0.3", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "3.0.2", diff --git a/packages/fill-scenarios/CHANGELOG.md b/packages/fill-scenarios/CHANGELOG.md index 81d41a5927..dbf649ca4a 100644 --- a/packages/fill-scenarios/CHANGELOG.md +++ b/packages/fill-scenarios/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.4 - _March 21, 2019_ + + * Dependencies updated + +## v3.0.3 - _March 20, 2019_ + + * Dependencies updated + ## v3.0.2 - _March 1, 2019_ * Dependencies updated diff --git a/packages/fill-scenarios/package.json b/packages/fill-scenarios/package.json index 08c6768573..4f4dc0d082 100644 --- a/packages/fill-scenarios/package.json +++ b/packages/fill-scenarios/package.json @@ -1,6 +1,6 @@ { "name": "@0x/fill-scenarios", - "version": "3.0.2", + "version": "3.0.4", "description": "0x order fill scenario generator", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -28,15 +28,15 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.0.2", - "@0x/base-contract": "^5.0.2", - "@0x/contract-artifacts": "^1.3.0", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "ethereum-types": "^2.1.0", + "@0x/abi-gen-wrappers": "^4.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contract-artifacts": "^1.4.0", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "ethereum-types": "^2.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11" }, diff --git a/packages/instant/CHANGELOG.json b/packages/instant/CHANGELOG.json index 4fcd69fc11..e52a729968 100644 --- a/packages/instant/CHANGELOG.json +++ b/packages/instant/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "4.1.0", + "changes": [ + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 + } + ] + }, { "version": "4.0.0", "changes": [ diff --git a/packages/instant/package.json b/packages/instant/package.json index a69ef5ba67..983e761a1c 100644 --- a/packages/instant/package.json +++ b/packages/instant/package.json @@ -1,6 +1,6 @@ { "name": "@0x/instant", - "version": "1.0.17", + "version": "1.0.19", "engines": { "node": ">=6.12" }, @@ -42,19 +42,19 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/instant/README.md", "dependencies": { - "@0x/assert": "^2.0.6", - "@0x/asset-buyer": "^6.0.3", - "@0x/json-schemas": "^3.0.6", - "@0x/order-utils": "^7.0.2", - "@0x/subproviders": "^4.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/assert": "^2.0.8", + "@0x/asset-buyer": "^6.0.5", + "@0x/json-schemas": "^3.0.8", + "@0x/order-utils": "^7.1.1", + "@0x/subproviders": "^4.0.4", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "babel-runtime": "^6.26.0", "bowser": "^1.9.4", "copy-to-clipboard": "^3.0.8", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11", "polished": "^1.9.2", "react": "^16.5.2", diff --git a/packages/instant/src/index.umd.ts b/packages/instant/src/index.umd.ts index 30f33acdf8..099544a085 100644 --- a/packages/instant/src/index.umd.ts +++ b/packages/instant/src/index.umd.ts @@ -65,21 +65,34 @@ const validateInstantRenderConfig = (config: ZeroExInstantConfig, selector: stri assert.isString('selector', selector); }; +let injectedDiv: HTMLDivElement | undefined; +let parentElement: Element | undefined; +export const unrender = () => { + if (!injectedDiv) { + return; + } + + ReactDOM.unmountComponentAtNode(injectedDiv); + if (parentElement && parentElement.contains(injectedDiv)) { + parentElement.removeChild(injectedDiv); + } +}; + // Render instant and return a callback that allows you to remove it from the DOM. const renderInstant = (config: ZeroExInstantConfig, selector: string) => { const appendToIfExists = document.querySelector(selector); assert.assert(!_.isNull(appendToIfExists), `Could not find div with selector: ${selector}`); - const appendTo = appendToIfExists as Element; - const injectedDiv = document.createElement('div'); + parentElement = appendToIfExists as Element; + injectedDiv = document.createElement('div'); injectedDiv.setAttribute('id', INJECTED_DIV_ID); injectedDiv.setAttribute('class', INJECTED_DIV_CLASS); - appendTo.appendChild(injectedDiv); + parentElement.appendChild(injectedDiv); const closeInstant = () => { analytics.trackInstantClosed(); if (!_.isUndefined(config.onClose)) { config.onClose(); } - appendTo.removeChild(injectedDiv); + unrender(); }; const instantOverlayProps = { ...config, diff --git a/packages/instant/src/util/provider_factory.ts b/packages/instant/src/util/provider_factory.ts index 5af235d044..e84cecd9a0 100644 --- a/packages/instant/src/util/provider_factory.ts +++ b/packages/instant/src/util/provider_factory.ts @@ -3,7 +3,7 @@ import { providerUtils } from '@0x/utils'; import { ZeroExProvider } from 'ethereum-types'; import * as _ from 'lodash'; -import { BLOCK_POLLING_INTERVAL_MS, ETHEREUM_NODE_URL_BY_NETWORK } from '../constants'; +import { ETHEREUM_NODE_URL_BY_NETWORK } from '../constants'; import { Maybe, Network } from '../types'; export const providerFactory = { @@ -22,17 +22,15 @@ export const providerFactory = { return undefined; }, getFallbackNoSigningProvider: (network: Network): Web3ProviderEngine => { - const providerEngine = new Web3ProviderEngine({ - pollingInterval: BLOCK_POLLING_INTERVAL_MS, - }); + const providerEngine = new Web3ProviderEngine(); // Intercept calls to `eth_accounts` and always return empty providerEngine.addProvider(new EmptyWalletSubprovider()); // Construct an RPC subprovider, all data based requests will be sent via the RPCSubprovider // TODO(bmillman): make this more resilient to infura failures const rpcUrl = ETHEREUM_NODE_URL_BY_NETWORK[network]; providerEngine.addProvider(new RPCSubprovider(rpcUrl)); - // // Start the Provider Engine - providerEngine.start(); + // Start the Provider Engine + providerUtils.startProviderEngine(providerEngine); return providerEngine; }, }; diff --git a/packages/json-schemas/CHANGELOG.json b/packages/json-schemas/CHANGELOG.json index 69966eac8b..d98ab42de3 100644 --- a/packages/json-schemas/CHANGELOG.json +++ b/packages/json-schemas/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "3.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "3.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "3.0.6", diff --git a/packages/json-schemas/CHANGELOG.md b/packages/json-schemas/CHANGELOG.md index ba06e2cbe3..0feeef64dc 100644 --- a/packages/json-schemas/CHANGELOG.md +++ b/packages/json-schemas/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.8 - _March 21, 2019_ + + * Dependencies updated + +## v3.0.7 - _March 20, 2019_ + + * Dependencies updated + ## v3.0.6 - _March 1, 2019_ * Dependencies updated diff --git a/packages/json-schemas/package.json b/packages/json-schemas/package.json index 56e0e56e10..8b62ef1749 100644 --- a/packages/json-schemas/package.json +++ b/packages/json-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@0x/json-schemas", - "version": "3.0.6", + "version": "3.0.8", "engines": { "node": ">=6.12" }, @@ -39,14 +39,14 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/json-schemas/README.md", "dependencies": { - "@0x/typescript-typings": "^4.1.0", + "@0x/typescript-typings": "^4.2.1", "@types/node": "*", "jsonschema": "^1.2.0", "lodash.values": "^4.3.0" }, "devDependencies": { "@0x/tslint-config": "^3.0.0", - "@0x/utils": "^4.2.2", + "@0x/utils": "^4.3.0", "@types/lodash.foreach": "^4.5.3", "@types/lodash.values": "^4.3.3", "@types/mocha": "^2.2.42", diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json index 8b3593755b..c6c1a25f7b 100644 --- a/packages/metacoin/package.json +++ b/packages/metacoin/package.json @@ -1,6 +1,6 @@ { "name": "@0x/metacoin", - "version": "0.0.44", + "version": "0.0.46", "engines": { "node": ">=6.12" }, @@ -30,29 +30,29 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@0x/abi-gen": "^2.0.6", + "@0x/abi-gen": "^2.0.8", "@0x/abi-gen-templates": "^2.0.1", - "@0x/base-contract": "^5.0.2", - "@0x/sol-coverage": "^3.0.0", - "@0x/sol-profiler": "^3.1.2", - "@0x/sol-trace": "^2.0.8", - "@0x/subproviders": "^4.0.2", + "@0x/base-contract": "^5.0.4", + "@0x/sol-coverage": "^3.0.2", + "@0x/sol-profiler": "^3.1.4", + "@0x/sol-trace": "^2.0.10", + "@0x/subproviders": "^4.0.4", "@0x/tslint-config": "^3.0.0", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@types/mocha": "^2.2.42", "copyfiles": "^2.0.0", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11", "run-s": "^0.0.0" }, "devDependencies": { - "@0x/contracts-test-utils": "^3.0.8", - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", + "@0x/contracts-test-utils": "^3.1.1", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", diff --git a/packages/metacoin/test/global_hooks.ts b/packages/metacoin/test/global_hooks.ts index f8ace376a5..4a54432a1c 100644 --- a/packages/metacoin/test/global_hooks.ts +++ b/packages/metacoin/test/global_hooks.ts @@ -1,8 +1,9 @@ import { env, EnvVars } from '@0x/dev-utils'; import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; before('start web3 provider', () => { - provider.start(); + providerUtils.startProviderEngine(provider); }); after('generate coverage report', async () => { if (env.parseBoolean(EnvVars.SolidityCoverage)) { diff --git a/packages/metacoin/test/metacoin_test.ts b/packages/metacoin/test/metacoin_test.ts index 6612dd9683..bf7622f367 100644 --- a/packages/metacoin/test/metacoin_test.ts +++ b/packages/metacoin/test/metacoin_test.ts @@ -41,7 +41,6 @@ describe('Metacoin', () => { const amount = INITIAL_BALANCE.div(2); const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); expect(oldBalance).to.be.bignumber.equal(0); - // profiler.start(); const txHash = await metacoin.transfer1.sendTransactionAsync( { to: ZERO_ADDRESS, diff --git a/packages/migrations/CHANGELOG.json b/packages/migrations/CHANGELOG.json index c8a03e0d0a..e594d8da85 100644 --- a/packages/migrations/CHANGELOG.json +++ b/packages/migrations/CHANGELOG.json @@ -1,4 +1,27 @@ [ + { + "version": "4.1.0", + "changes": [ + { + "note": "Add deployment of `Coordinator` and `CoordinatorRegistry` contracts to migration script", + "pr": 1689 + }, + { + "note": "Added `startProviderEngine` to `providerUtils`. Preventing excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, + { + "timestamp": 1553091633, + "version": "4.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "4.0.3", diff --git a/packages/migrations/CHANGELOG.md b/packages/migrations/CHANGELOG.md index c17e119af8..40b4422657 100644 --- a/packages/migrations/CHANGELOG.md +++ b/packages/migrations/CHANGELOG.md @@ -5,6 +5,15 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.1.0 - _March 21, 2019_ + + * Add deployment of `Coordinator` and `CoordinatorRegistry` contracts to migration script (#1689) + * Added `startProviderEngine` to `providerUtils`. Preventing excess block polling (#1695) + +## v4.0.4 - _March 20, 2019_ + + * Dependencies updated + ## v4.0.3 - _March 1, 2019_ * Dependencies updated diff --git a/packages/migrations/package.json b/packages/migrations/package.json index 8d0cf3bd0f..6494c51536 100644 --- a/packages/migrations/package.json +++ b/packages/migrations/package.json @@ -1,6 +1,6 @@ { "name": "@0x/migrations", - "version": "4.0.3", + "version": "4.1.0", "engines": { "node": ">=6.12" }, @@ -35,9 +35,9 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/dev-utils": "^2.1.3", + "@0x/dev-utils": "^2.2.0", "@0x/tslint-config": "^3.0.0", - "@0x/types": "^2.1.1", + "@0x/types": "^2.2.1", "@types/yargs": "^11.0.0", "make-promises-safe": "^1.1.0", "npm-run-all": "^4.1.2", @@ -49,19 +49,19 @@ "yargs": "^10.0.3" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.0.2", - "@0x/base-contract": "^5.0.2", - "@0x/contract-addresses": "^2.2.2", - "@0x/contract-artifacts": "^1.3.0", - "@0x/order-utils": "^7.0.2", - "@0x/sol-compiler": "^3.1.3", - "@0x/subproviders": "^4.0.2", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/abi-gen-wrappers": "^4.1.0", + "@0x/base-contract": "^5.0.4", + "@0x/contract-addresses": "^2.3.0", + "@0x/contract-artifacts": "^1.4.0", + "@0x/order-utils": "^7.1.1", + "@0x/sol-compiler": "^3.1.5", + "@0x/subproviders": "^4.0.4", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@ledgerhq/hw-app-eth": "^4.3.0", "@types/web3-provider-engine": "^14.0.0", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11" }, diff --git a/packages/migrations/src/cli.ts b/packages/migrations/src/cli.ts index 4e8ce982fa..1eefd73238 100644 --- a/packages/migrations/src/cli.ts +++ b/packages/migrations/src/cli.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node import { RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders'; -import { logUtils } from '@0x/utils'; +import { logUtils, providerUtils } from '@0x/utils'; import * as yargs from 'yargs'; import { runMigrationsAsync } from './migration'; @@ -26,7 +26,7 @@ const args = yargs const rpcSubprovider = new RPCSubprovider(args['rpc-url']); const provider = new Web3ProviderEngine(); provider.addProvider(rpcSubprovider); - provider.start(); + providerUtils.startProviderEngine(provider); const normalizedFromAddress = (args.from as string).toLowerCase(); const txDefaults = { from: normalizedFromAddress, diff --git a/packages/migrations/src/migration.ts b/packages/migrations/src/migration.ts index 8c42e6d6ff..54b76997a8 100644 --- a/packages/migrations/src/migration.ts +++ b/packages/migrations/src/migration.ts @@ -183,6 +183,21 @@ export async function runMigrationsAsync( await zrxToken.transfer.sendTransactionAsync(forwarder.address, zrxForwarderAmount, txDefaults), ); + // CoordinatorRegistry + const coordinatorRegistry = await wrappers.CoordinatorRegistryContract.deployFrom0xArtifactAsync( + artifacts.CoordinatorRegistry, + provider, + txDefaults, + ); + + // Coordinator + const coordinator = await wrappers.CoordinatorContract.deployFrom0xArtifactAsync( + artifacts.Coordinator, + provider, + txDefaults, + exchange.address, + ); + const contractAddresses = { erc20Proxy: erc20Proxy.address, erc721Proxy: erc721Proxy.address, @@ -193,6 +208,8 @@ export async function runMigrationsAsync( forwarder: forwarder.address, orderValidator: orderValidator.address, dutchAuction: dutchAuction.address, + coordinatorRegistry: coordinatorRegistry.address, + coordinator: coordinator.address, }; return contractAddresses; diff --git a/packages/migrations/src/utils/provider_factory.ts b/packages/migrations/src/utils/provider_factory.ts index 8017b672a1..330a263e87 100644 --- a/packages/migrations/src/utils/provider_factory.ts +++ b/packages/migrations/src/utils/provider_factory.ts @@ -1,4 +1,5 @@ import { LedgerEthereumClient, LedgerSubprovider, RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders'; +import { providerUtils } from '@0x/utils'; import Eth from '@ledgerhq/hw-app-eth'; // tslint:disable:no-implicit-dependencies import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; @@ -21,7 +22,7 @@ export const providerFactory = { const ledgerSubprovider = new LedgerSubprovider(ledgerWalletConfigs); provider.addProvider(ledgerSubprovider); provider.addProvider(new RPCSubprovider(constants.KOVAN_RPC_URL)); - provider.start(); + providerUtils.startProviderEngine(provider); return provider; }, async getMainnetLedgerProviderAsync(): Promise { @@ -33,7 +34,7 @@ export const providerFactory = { const ledgerSubprovider = new LedgerSubprovider(ledgerWalletConfigs); provider.addProvider(ledgerSubprovider); provider.addProvider(new RPCSubprovider(constants.MAINNET_RPC_URL)); - provider.start(); + providerUtils.startProviderEngine(provider); return provider; }, }; diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json index da1b35def5..f1d2c7f56e 100644 --- a/packages/monorepo-scripts/package.json +++ b/packages/monorepo-scripts/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@0x/monorepo-scripts", - "version": "1.0.27", + "version": "1.0.29", "engines": { "node": ">=6.12" }, @@ -47,8 +47,8 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^2.1.1", - "@0x/utils": "^4.2.2", + "@0x/types": "^2.2.1", + "@0x/utils": "^4.3.0", "@lerna/batch-packages": "^3.0.0-beta.18", "@types/depcheck": "^0.6.0", "async-child-process": "^1.1.1", diff --git a/packages/order-utils/CHANGELOG.json b/packages/order-utils/CHANGELOG.json index 62f4284359..d7511d2faa 100644 --- a/packages/order-utils/CHANGELOG.json +++ b/packages/order-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1553183790, + "version": "7.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "7.1.0", "changes": [ @@ -7,10 +16,11 @@ "pr": 1705 }, { - "note": "Added encoding/decoding fdor ERC1155 asset data", + "note": "Added encoding/decoding for ERC1155 asset data", "pr": 1661 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/packages/order-utils/CHANGELOG.md b/packages/order-utils/CHANGELOG.md index 135318a1fa..e771b82e33 100644 --- a/packages/order-utils/CHANGELOG.md +++ b/packages/order-utils/CHANGELOG.md @@ -5,6 +5,15 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v7.1.1 - _March 21, 2019_ + + * Dependencies updated + +## v7.1.0 - _March 20, 2019_ + + * Add Coordinator EIP712 constants (#1705) + * Added encoding/decoding for ERC1155 asset data (#1661) + ## v7.0.2 - _March 1, 2019_ * Dependencies updated diff --git a/packages/order-utils/package.json b/packages/order-utils/package.json index d1cebc5b11..5452ea7a3a 100644 --- a/packages/order-utils/package.json +++ b/packages/order-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/order-utils", - "version": "7.0.2", + "version": "7.1.1", "engines": { "node": ">=6.12" }, @@ -35,7 +35,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/order-utils/README.md", "devDependencies": { - "@0x/dev-utils": "^2.1.3", + "@0x/dev-utils": "^2.2.0", "@0x/tslint-config": "^3.0.0", "@types/bn.js": "^4.11.0", "@types/lodash": "4.14.104", @@ -55,19 +55,19 @@ "web3-provider-engine": "14.0.6" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.0.2", - "@0x/assert": "^2.0.6", - "@0x/base-contract": "^5.0.2", - "@0x/contract-addresses": "^2.2.2", - "@0x/contract-artifacts": "^1.3.0", - "@0x/json-schemas": "^3.0.6", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/abi-gen-wrappers": "^4.1.0", + "@0x/assert": "^2.0.8", + "@0x/base-contract": "^5.0.4", + "@0x/contract-addresses": "^2.3.0", + "@0x/contract-artifacts": "^1.4.0", + "@0x/json-schemas": "^3.0.8", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@types/node": "*", "bn.js": "^4.11.8", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-abi": "0.6.5", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", diff --git a/packages/order-utils/src/asset_data_utils.ts b/packages/order-utils/src/asset_data_utils.ts index 2acf57d5f6..799716a6d4 100644 --- a/packages/order-utils/src/asset_data_utils.ts +++ b/packages/order-utils/src/asset_data_utils.ts @@ -91,7 +91,7 @@ export const assetDataUtils = { tokenValues: BigNumber[], callbackData: string, ): string { - const abiEncoder = AbiEncoder.createMethod('ERC1155Token', ERC1155AssetDataAbi); + const abiEncoder = AbiEncoder.createMethod('ERC1155Assets', ERC1155AssetDataAbi); const args = [tokenAddress, tokenIds, tokenValues, callbackData]; const assetData = abiEncoder.encode(args, encodingRules); return assetData; @@ -106,7 +106,7 @@ export const assetDataUtils = { if (assetProxyId !== AssetProxyId.ERC1155) { throw new Error(`Invalid assetProxyId. Expected '${AssetProxyId.ERC1155}', got '${assetProxyId}'`); } - const abiEncoder = AbiEncoder.createMethod('ERC1155Token', ERC1155AssetDataAbi); + const abiEncoder = AbiEncoder.createMethod('ERC1155Assets', ERC1155AssetDataAbi); // tslint:disable-next-line:no-unnecessary-type-assertion const decodedAssetData = abiEncoder.decode(assetData, decodingRules) as ERC1155AssetDataNoProxyId; return { diff --git a/packages/order-utils/src/eip712_utils.ts b/packages/order-utils/src/eip712_utils.ts index 685fdc8c84..f249ba3060 100644 --- a/packages/order-utils/src/eip712_utils.ts +++ b/packages/order-utils/src/eip712_utils.ts @@ -6,11 +6,14 @@ import { EIP712TypedData, EIP712Types, Order, + SignedZeroExTransaction, ZeroExTransaction, } from '@0x/types'; +import { BigNumber } from '@0x/utils'; import * as _ from 'lodash'; import { constants } from './constants'; +import { transactionHashUtils } from './transaction_hash'; export const eip712Utils = { /** @@ -69,7 +72,7 @@ export const eip712Utils = { /** * Creates an ExecuteTransaction EIP712TypedData object for use with signTypedData and * 0x Exchange executeTransaction. - * @param ZeroExTransaction the 0x transaction + * @param zeroExTransaction the 0x transaction * @return A typed data object */ createZeroExTransactionTypedData: (zeroExTransaction: ZeroExTransaction): EIP712TypedData => { @@ -89,4 +92,40 @@ export const eip712Utils = { ); return typedData; }, + /** + * Creates an Coordiantor typedData EIP712TypedData object for use with the Coordinator extension contract + * @param transaction A 0x transaction + * @param verifyingContractAddress The coordinator extension contract address that will be verifying the typedData + * @param txOrigin The desired `tx.origin` that should be able to submit an Ethereum txn involving this 0x transaction + * @param approvalExpirationTimeSeconds The approvals expiration time + * @return A typed data object + */ + createCoordinatorApprovalTypedData: ( + transaction: SignedZeroExTransaction, + verifyingContractAddress: string, + txOrigin: string, + approvalExpirationTimeSeconds: BigNumber, + ): EIP712TypedData => { + const domain = { + name: constants.COORDINATOR_DOMAIN_NAME, + version: constants.COORDINATOR_DOMAIN_VERSION, + verifyingContractAddress, + }; + const transactionHash = transactionHashUtils.getTransactionHashHex(transaction); + const approval = { + txOrigin, + transactionHash, + transactionSignature: transaction.signature, + approvalExpirationTimeSeconds: approvalExpirationTimeSeconds.toString(), + }; + const typedData = eip712Utils.createTypedData( + constants.COORDINATOR_APPROVAL_SCHEMA.name, + { + CoordinatorApproval: constants.COORDINATOR_APPROVAL_SCHEMA.parameters, + }, + approval, + domain, + ); + return typedData; + }, }; diff --git a/packages/order-utils/test/asset_data_utils_test.ts b/packages/order-utils/test/asset_data_utils_test.ts index 2634e7f595..96ea36307a 100644 --- a/packages/order-utils/test/asset_data_utils_test.ts +++ b/packages/order-utils/test/asset_data_utils_test.ts @@ -1,6 +1,6 @@ import * as chai from 'chai'; -import { AssetProxyId, ERC721AssetData } from '@0x/types'; +import { AssetProxyId, ERC1155AssetData, ERC721AssetData } from '@0x/types'; import { BigNumber } from '@0x/utils'; import { assetDataUtils } from '../src/asset_data_utils'; @@ -27,13 +27,17 @@ const KNOWN_ERC1155_ENCODING = { callbackData: '0x025717920000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c480000000000000000000000000000000000000000000000000000000000000001', assetData: - '0x9645780d0000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c480000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000003e90000000000000000000000000000000000000000000000000000000000002711000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000007d10000000000000000000000000000000000000000000000000000000000004e210000000000000000000000000000000000000000000000000000000000000044025717920000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c48000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000', + '0xa7cb5fb70000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c480000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000003e90000000000000000000000000000000000000000000000000000000000002711000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000007d10000000000000000000000000000000000000000000000000000000000004e210000000000000000000000000000000000000000000000000000000000000044025717920000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c48000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000', }; const KNOWN_MULTI_ASSET_ENCODING = { - amounts: [new BigNumber(1), new BigNumber(1)], - nestedAssetData: [KNOWN_ERC20_ENCODING.assetData, KNOWN_ERC721_ENCODING.assetData], + amounts: [new BigNumber(70), new BigNumber(1), new BigNumber(18)], + nestedAssetData: [ + KNOWN_ERC20_ENCODING.assetData, + KNOWN_ERC721_ENCODING.assetData, + KNOWN_ERC1155_ENCODING.assetData, + ], assetData: - '0x94cfcdd7000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f47261b00000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044025717920000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c48000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000', + '0x94cfcdd7000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000024f47261b00000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044025717920000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c480000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000204a7cb5fb70000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c480000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000003e90000000000000000000000000000000000000000000000000000000000002711000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000007d10000000000000000000000000000000000000000000000000000000000004e210000000000000000000000000000000000000000000000000000000000000044025717920000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c4800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', }; describe('assetDataUtils', () => { @@ -76,14 +80,14 @@ describe('assetDataUtils', () => { expect(decodedAssetData.tokenIds).to.be.deep.equal(KNOWN_ERC1155_ENCODING.tokenIds); expect(decodedAssetData.callbackData).to.be.equal(KNOWN_ERC1155_ENCODING.callbackData); }); - it('should encode ERC20 and ERC721 multiAssetData', () => { + it('should encode ERC20, ERC721 and ERC1155 multiAssetData', () => { const assetData = assetDataUtils.encodeMultiAssetData( KNOWN_MULTI_ASSET_ENCODING.amounts, KNOWN_MULTI_ASSET_ENCODING.nestedAssetData, ); expect(assetData).to.equal(KNOWN_MULTI_ASSET_ENCODING.assetData); }); - it('should decode ERC20 and ERC721 multiAssetData', () => { + it('should decode ERC20, ERC721 and ERC1155 multiAssetData', () => { const decodedAssetData = assetDataUtils.decodeMultiAssetData(KNOWN_MULTI_ASSET_ENCODING.assetData); expect(decodedAssetData.assetProxyId).to.equal(AssetProxyId.MultiAsset); expect(decodedAssetData.amounts).to.deep.equal(KNOWN_MULTI_ASSET_ENCODING.amounts); @@ -93,44 +97,79 @@ describe('assetDataUtils', () => { const decodedAssetData = assetDataUtils.decodeMultiAssetDataRecursively(KNOWN_MULTI_ASSET_ENCODING.assetData); expect(decodedAssetData.assetProxyId).to.equal(AssetProxyId.MultiAsset); expect(decodedAssetData.amounts).to.deep.equal(KNOWN_MULTI_ASSET_ENCODING.amounts); + expect(decodedAssetData.nestedAssetData.length).to.equal(3); const decodedErc20AssetData = decodedAssetData.nestedAssetData[0]; - // tslint:disable-next-line:no-unnecessary-type-assertion - const decodedErc721AssetData = decodedAssetData.nestedAssetData[1] as ERC721AssetData; expect(decodedErc20AssetData.tokenAddress).to.equal(KNOWN_ERC20_ENCODING.address); expect(decodedErc20AssetData.assetProxyId).to.equal(AssetProxyId.ERC20); + // tslint:disable-next-line:no-unnecessary-type-assertion + const decodedErc721AssetData = decodedAssetData.nestedAssetData[1] as ERC721AssetData; expect(decodedErc721AssetData.tokenAddress).to.equal(KNOWN_ERC721_ENCODING.address); expect(decodedErc721AssetData.assetProxyId).to.equal(AssetProxyId.ERC721); expect(decodedErc721AssetData.tokenId).to.be.bignumber.equal(KNOWN_ERC721_ENCODING.tokenId); + // tslint:disable-next-line:no-unnecessary-type-assertion + const decodedErc1155AssetData = decodedAssetData.nestedAssetData[2] as ERC1155AssetData; + expect(decodedErc1155AssetData.tokenAddress).to.be.equal(KNOWN_ERC1155_ENCODING.tokenAddress); + expect(decodedErc1155AssetData.tokenValues).to.be.deep.equal(KNOWN_ERC1155_ENCODING.tokenValues); + expect(decodedErc1155AssetData.tokenIds).to.be.deep.equal(KNOWN_ERC1155_ENCODING.tokenIds); + expect(decodedErc1155AssetData.callbackData).to.be.equal(KNOWN_ERC1155_ENCODING.callbackData); }); it('should recursively decode nested assetData within multiAssetData', () => { - const amounts = [new BigNumber(1), new BigNumber(1), new BigNumber(2)]; + // setup test parameters + const erc20Amount = new BigNumber(1); + const erc721Amount = new BigNumber(1); + const erc1155Amount = new BigNumber(15); + const nestedAssetsAmount = new BigNumber(2); + const amounts = [erc20Amount, erc721Amount, erc1155Amount, nestedAssetsAmount]; const nestedAssetData = [ KNOWN_ERC20_ENCODING.assetData, KNOWN_ERC721_ENCODING.assetData, + KNOWN_ERC1155_ENCODING.assetData, KNOWN_MULTI_ASSET_ENCODING.assetData, ]; const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData); + // execute test const decodedAssetData = assetDataUtils.decodeMultiAssetDataRecursively(assetData); + // validate asset data expect(decodedAssetData.assetProxyId).to.equal(AssetProxyId.MultiAsset); - const expectedAmounts = [new BigNumber(1), new BigNumber(1), new BigNumber(2), new BigNumber(2)]; + const expectedAmounts = [ + erc20Amount, + erc721Amount, + erc1155Amount, + KNOWN_MULTI_ASSET_ENCODING.amounts[0].times(nestedAssetsAmount), + KNOWN_MULTI_ASSET_ENCODING.amounts[1].times(nestedAssetsAmount), + KNOWN_MULTI_ASSET_ENCODING.amounts[2].times(nestedAssetsAmount), + ]; expect(decodedAssetData.amounts).to.deep.equal(expectedAmounts); - const expectedLength = 4; - expect(decodedAssetData.nestedAssetData.length).to.be.equal(expectedLength); - const decodedErc20AssetData1 = decodedAssetData.nestedAssetData[0]; - // tslint:disable-next-line:no-unnecessary-type-assertion - const decodedErc721AssetData1 = decodedAssetData.nestedAssetData[1] as ERC721AssetData; - const decodedErc20AssetData2 = decodedAssetData.nestedAssetData[2]; - // tslint:disable-next-line:no-unnecessary-type-assertion - const decodedErc721AssetData2 = decodedAssetData.nestedAssetData[3] as ERC721AssetData; + const expectedNestedAssetDataLength = 6; + expect(decodedAssetData.nestedAssetData.length).to.be.equal(expectedNestedAssetDataLength); + // validate nested asset data (outer) + let nestedAssetDataIndex = 0; + const decodedErc20AssetData1 = decodedAssetData.nestedAssetData[nestedAssetDataIndex++]; expect(decodedErc20AssetData1.tokenAddress).to.equal(KNOWN_ERC20_ENCODING.address); expect(decodedErc20AssetData1.assetProxyId).to.equal(AssetProxyId.ERC20); + // tslint:disable-next-line:no-unnecessary-type-assertion + const decodedErc721AssetData1 = decodedAssetData.nestedAssetData[nestedAssetDataIndex++] as ERC721AssetData; expect(decodedErc721AssetData1.tokenAddress).to.equal(KNOWN_ERC721_ENCODING.address); expect(decodedErc721AssetData1.assetProxyId).to.equal(AssetProxyId.ERC721); - expect(decodedErc721AssetData1.tokenId).to.be.bignumber.equal(KNOWN_ERC721_ENCODING.tokenId); + // tslint:disable-next-line:no-unnecessary-type-assertion + const decodedErc1155AssetData1 = decodedAssetData.nestedAssetData[nestedAssetDataIndex++] as ERC1155AssetData; + expect(decodedErc1155AssetData1.tokenAddress).to.be.equal(KNOWN_ERC1155_ENCODING.tokenAddress); + expect(decodedErc1155AssetData1.tokenValues).to.be.deep.equal(KNOWN_ERC1155_ENCODING.tokenValues); + expect(decodedErc1155AssetData1.tokenIds).to.be.deep.equal(KNOWN_ERC1155_ENCODING.tokenIds); + expect(decodedErc1155AssetData1.callbackData).to.be.equal(KNOWN_ERC1155_ENCODING.callbackData); + // validate nested asset data (inner) + const decodedErc20AssetData2 = decodedAssetData.nestedAssetData[nestedAssetDataIndex++]; expect(decodedErc20AssetData2.tokenAddress).to.equal(KNOWN_ERC20_ENCODING.address); expect(decodedErc20AssetData2.assetProxyId).to.equal(AssetProxyId.ERC20); + // tslint:disable-next-line:no-unnecessary-type-assertion + const decodedErc721AssetData2 = decodedAssetData.nestedAssetData[nestedAssetDataIndex++] as ERC721AssetData; expect(decodedErc721AssetData2.tokenAddress).to.equal(KNOWN_ERC721_ENCODING.address); expect(decodedErc721AssetData2.assetProxyId).to.equal(AssetProxyId.ERC721); - expect(decodedErc721AssetData2.tokenId).to.be.bignumber.equal(KNOWN_ERC721_ENCODING.tokenId); + // tslint:disable-next-line:no-unnecessary-type-assertion + const decodedErc1155AssetData2 = decodedAssetData.nestedAssetData[nestedAssetDataIndex++] as ERC1155AssetData; + expect(decodedErc1155AssetData2.tokenAddress).to.be.equal(KNOWN_ERC1155_ENCODING.tokenAddress); + expect(decodedErc1155AssetData2.tokenValues).to.be.deep.equal(KNOWN_ERC1155_ENCODING.tokenValues); + expect(decodedErc1155AssetData2.tokenIds).to.be.deep.equal(KNOWN_ERC1155_ENCODING.tokenIds); + expect(decodedErc1155AssetData2.callbackData).to.be.equal(KNOWN_ERC1155_ENCODING.callbackData); }); }); diff --git a/packages/order-watcher/CHANGELOG.json b/packages/order-watcher/CHANGELOG.json index 8d4e22944a..9b73257c8b 100644 --- a/packages/order-watcher/CHANGELOG.json +++ b/packages/order-watcher/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1553183790, + "version": "4.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "4.0.4", "changes": [ @@ -9,8 +18,17 @@ { "note": "Fix issue where ERC721 Approval events could cause a lookup on undefined object", "pr": 1692 + }, + { + "note": "Fix race-condition bugs due to async event callbacks modifying shared state", + "pr": 1718 + }, + { + "note": "Run Web3ProviderEngine without excess block polling", + "pr": 1695 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551479279, diff --git a/packages/order-watcher/CHANGELOG.md b/packages/order-watcher/CHANGELOG.md index dbe67523b3..ebbf8189d0 100644 --- a/packages/order-watcher/CHANGELOG.md +++ b/packages/order-watcher/CHANGELOG.md @@ -5,6 +5,17 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.5 - _March 21, 2019_ + + * Dependencies updated + +## v4.0.4 - _March 20, 2019_ + + * Update websocket from ^1.0.25 to ^1.0.26 (#1685) + * Fix issue where ERC721 Approval events could cause a lookup on undefined object (#1692) + * Fix race-condition bugs due to async event callbacks modifying shared state (#1718) + * Run Web3ProviderEngine without excess block polling (#1695) + ## v4.0.3 - _March 1, 2019_ * Dependencies updated diff --git a/packages/order-watcher/package.json b/packages/order-watcher/package.json index bdb7d2a84c..4443ad1f3c 100644 --- a/packages/order-watcher/package.json +++ b/packages/order-watcher/package.json @@ -1,6 +1,6 @@ { "name": "@0x/order-watcher", - "version": "4.0.3", + "version": "4.0.5", "description": "An order watcher daemon that watches for order validity", "keywords": [ "0x", @@ -38,9 +38,9 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0x/dev-utils": "^2.1.3", - "@0x/migrations": "^4.0.3", - "@0x/subproviders": "^4.0.2", + "@0x/dev-utils": "^2.2.0", + "@0x/migrations": "^4.1.0", + "@0x/subproviders": "^4.0.4", "@0x/tslint-config": "^3.0.0", "@types/bintrees": "^1.0.2", "@types/lodash": "4.14.104", @@ -63,24 +63,25 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^4.0.2", - "@0x/assert": "^2.0.6", - "@0x/base-contract": "^5.0.2", - "@0x/contract-addresses": "^2.2.2", - "@0x/contract-artifacts": "^1.3.0", - "@0x/contract-wrappers": "^8.0.3", - "@0x/fill-scenarios": "^3.0.2", - "@0x/json-schemas": "^3.0.6", - "@0x/order-utils": "^7.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/abi-gen-wrappers": "^4.1.0", + "@0x/assert": "^2.0.8", + "@0x/base-contract": "^5.0.4", + "@0x/contract-addresses": "^2.3.0", + "@0x/contract-artifacts": "^1.4.0", + "@0x/contract-wrappers": "^8.0.5", + "@0x/fill-scenarios": "^3.0.4", + "@0x/json-schemas": "^3.0.8", + "@0x/order-utils": "^7.1.1", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "bintrees": "^1.0.2", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-blockstream": "6.0.0", "ethers": "~4.0.4", "lodash": "^4.17.11", + "semaphore-async-await": "^1.5.1", "websocket": "^1.0.26" }, "publishConfig": { diff --git a/packages/order-watcher/src/order_watcher/order_watcher.ts b/packages/order-watcher/src/order_watcher/order_watcher.ts index d1cab2b10d..5ee01c42c0 100644 --- a/packages/order-watcher/src/order_watcher/order_watcher.ts +++ b/packages/order-watcher/src/order_watcher/order_watcher.ts @@ -42,6 +42,7 @@ import { ZeroExProvider, } from 'ethereum-types'; import * as _ from 'lodash'; +import { Lock } from 'semaphore-async-await'; import { orderWatcherPartialConfigSchema } from '../schemas/order_watcher_partial_config_schema'; import { OnOrderStateChangeCallback, OrderWatcherConfig, OrderWatcherError } from '../types'; @@ -84,6 +85,7 @@ export class OrderWatcher { private readonly _dependentOrderHashesTracker: DependentOrderHashesTracker; private readonly _orderStateByOrderHashCache: OrderStateByOrderHash = {}; private readonly _orderByOrderHash: OrderByOrderHash = {}; + private readonly _lock = new Lock(); private readonly _eventWatcher: EventWatcher; private readonly _provider: ZeroExProvider; private readonly _collisionResistantAbiDecoder: CollisionResistanceAbiDecoder; @@ -196,10 +198,12 @@ export class OrderWatcher { throw new Error(OrderWatcherError.SubscriptionAlreadyPresent); } this._callbackIfExists = callback; - this._eventWatcher.subscribe(this._onEventWatcherCallbackAsync.bind(this)); - this._expirationWatcher.subscribe(this._onOrderExpired.bind(this)); + this._eventWatcher.subscribe( + this._addLockToCallbackAsync.bind(this, this._onEventWatcherCallbackAsync.bind(this)), + ); + this._expirationWatcher.subscribe(this._addLockToCallbackAsync.bind(this, this._onOrderExpired.bind(this))); this._cleanupJobIntervalIdIfExists = intervalUtils.setAsyncExcludingInterval( - this._cleanupAsync.bind(this), + this._addLockToCallbackAsync.bind(this, this._cleanupAsync.bind(this)), this._cleanupJobInterval, (err: Error) => { this.unsubscribe(); @@ -229,6 +233,17 @@ export class OrderWatcher { orderCount: _.size(this._orderByOrderHash), }; } + private async _addLockToCallbackAsync(cbAsync: any, ...params: any[]): Promise { + await this._lock.acquire(); + try { + await cbAsync(...params); + await this._lock.release(); + } catch (err) { + // Make sure to releasee the lock if an error is thrown + await this._lock.release(); + throw err; + } + } private async _cleanupAsync(): Promise { for (const orderHash of _.keys(this._orderByOrderHash)) { this._cleanupOrderRelatedState(orderHash); @@ -493,4 +508,4 @@ export class OrderWatcher { this._callbackIfExists(null, orderState); } } -} +} // tslint:disable:max-file-line-count diff --git a/packages/order-watcher/src/server.ts b/packages/order-watcher/src/server.ts index 1d31e87ab9..9afb4c65d8 100644 --- a/packages/order-watcher/src/server.ts +++ b/packages/order-watcher/src/server.ts @@ -1,5 +1,6 @@ import { getContractAddressesForNetworkOrThrow } from '@0x/contract-addresses'; import { RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders'; +import { providerUtils } from '@0x/utils'; import * as _ from 'lodash'; import { OrderWatcherWebSocketServer } from './order_watcher/order_watcher_web_socket_server'; @@ -11,7 +12,7 @@ const provider = new Web3ProviderEngine(); const jsonRpcUrl = process.env.JSON_RPC_URL || DEFAULT_RPC_URL; const rpcSubprovider = new RPCSubprovider(jsonRpcUrl); provider.addProvider(rpcSubprovider); -provider.start(); +providerUtils.startProviderEngine(provider); const networkId = process.env.NETWORK_ID !== undefined ? _.parseInt(process.env.NETWORK_ID) : GANACHE_NETWORK_ID; diff --git a/packages/order-watcher/test/order_watcher_test.ts b/packages/order-watcher/test/order_watcher_test.ts index d272c7fa45..051c3121a9 100644 --- a/packages/order-watcher/test/order_watcher_test.ts +++ b/packages/order-watcher/test/order_watcher_test.ts @@ -175,10 +175,14 @@ describe('OrderWatcher', () => { }); }); describe('tests with cleanup', async () => { + beforeEach(async () => { + await blockchainLifecycle.startAsync(); + }); afterEach(async () => { orderWatcher.unsubscribe(); const orderHash = orderHashUtils.getOrderHashHex(signedOrder); orderWatcher.removeOrder(orderHash); + await blockchainLifecycle.revertAsync(); }); it('should emit orderStateInvalid when makerAddress allowance set to 0 for watched order', (done: DoneCallback) => { (async () => { diff --git a/packages/pipeline/migrations/1552016339539-CreateGithubRepo.ts b/packages/pipeline/migrations/1552016339539-CreateGithubRepo.ts new file mode 100644 index 0000000000..a512c3c782 --- /dev/null +++ b/packages/pipeline/migrations/1552016339539-CreateGithubRepo.ts @@ -0,0 +1,31 @@ +import { MigrationInterface, QueryRunner, Table } from 'typeorm'; + +const table = new Table({ + name: 'raw.github_repo', + columns: [ + { name: 'observed_timestamp', type: 'numeric', isPrimary: true }, + { name: 'full_name', type: 'varchar', isPrimary: true }, + + { name: 'created_at', type: 'numeric', isNullable: false }, + { name: 'updated_at', type: 'numeric', isNullable: false }, + { name: 'pushed_at', type: 'numeric', isNullable: false }, + + { name: 'size', type: 'numeric', isNullable: false }, + { name: 'stargazers', type: 'numeric', isNullable: false }, + { name: 'watchers', type: 'numeric', isNullable: false }, + { name: 'forks', type: 'numeric', isNullable: false }, + { name: 'open_issues', type: 'numeric', isNullable: false }, + { name: 'network', type: 'numeric', isNullable: false }, + { name: 'subscribers', type: 'numeric', isNullable: false }, + ], +}); + +export class CreateGithubRepo1552016339539 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.createTable(table); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable(table); + } +} diff --git a/packages/pipeline/migrations/1552024155243-CreateGithubPullRequest.ts b/packages/pipeline/migrations/1552024155243-CreateGithubPullRequest.ts new file mode 100644 index 0000000000..fed62455cf --- /dev/null +++ b/packages/pipeline/migrations/1552024155243-CreateGithubPullRequest.ts @@ -0,0 +1,29 @@ +import { MigrationInterface, QueryRunner, Table } from 'typeorm'; + +const table = new Table({ + name: 'raw.github_pull_request', + columns: [ + { name: 'observed_timestamp', type: 'numeric', isPrimary: true }, + { name: 'repo_full_name', type: 'varchar', isPrimary: true }, + { name: 'pull_request_number', type: 'numeric', isPrimary: true }, + + { name: 'title', type: 'varchar', isNullable: false }, + { name: 'state', type: 'varchar', isNullable: false }, + { name: 'user_login', type: 'varchar', isNullable: false }, + + { name: 'created_at', type: 'numeric', isNullable: false }, + { name: 'updated_at', type: 'numeric', isNullable: false }, + { name: 'closed_at', type: 'numeric', isNullable: true }, + { name: 'merged_at', type: 'numeric', isNullable: true }, + ], +}); + +export class CreateGithubPullRequest1552024155243 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.createTable(table); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable(table); + } +} diff --git a/packages/pipeline/migrations/1552044685566-CreateGithubFork.ts b/packages/pipeline/migrations/1552044685566-CreateGithubFork.ts new file mode 100644 index 0000000000..ecad675811 --- /dev/null +++ b/packages/pipeline/migrations/1552044685566-CreateGithubFork.ts @@ -0,0 +1,36 @@ +import { MigrationInterface, QueryRunner, Table } from 'typeorm'; + +const table = new Table({ + name: 'raw.github_fork', + columns: [ + { name: 'observed_timestamp', type: 'numeric', isPrimary: true }, + { name: 'full_name', type: 'varchar', isPrimary: true }, + { name: 'owner_login', type: 'varchar', isPrimary: true }, + + { name: 'created_at', type: 'numeric', isNullable: false }, + { name: 'updated_at', type: 'numeric', isNullable: false }, + { name: 'pushed_at', type: 'numeric', isNullable: false }, + { name: 'size', type: 'numeric', isNullable: false }, + { name: 'stargazers', type: 'numeric', isNullable: false }, + { name: 'watchers', type: 'numeric', isNullable: false }, + { name: 'forks', type: 'numeric', isNullable: false }, + { name: 'open_issues', type: 'numeric', isNullable: false }, + { name: 'network', type: 'numeric', isNullable: true }, + { name: 'subscribers', type: 'numeric', isNullable: true }, + { name: 'default_branch', type: 'varchar', isNullable: false }, + { name: 'status', type: 'varchar', isNullable: true }, + { name: 'ahead_by', type: 'numeric', isNullable: true }, + { name: 'behind_by', type: 'numeric', isNullable: true }, + { name: 'total_commits', type: 'numeric', isNullable: true }, + ], +}); + +export class CreateGithubFork1552044685566 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.createTable(table); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable(table); + } +} diff --git a/packages/pipeline/migrations/1552457956065-CreateGithubIssue.ts b/packages/pipeline/migrations/1552457956065-CreateGithubIssue.ts new file mode 100644 index 0000000000..8a2da630df --- /dev/null +++ b/packages/pipeline/migrations/1552457956065-CreateGithubIssue.ts @@ -0,0 +1,33 @@ +import { MigrationInterface, QueryRunner, Table } from 'typeorm'; + +const table = new Table({ + name: 'raw.github_issue', + columns: [ + { name: 'observed_timestamp', type: 'numeric', isPrimary: true }, + { name: 'repo_full_name', type: 'varchar', isPrimary: true }, + { name: 'issue_number', type: 'numeric', isPrimary: true }, + + { name: 'title', type: 'varchar', isNullable: false }, + { name: 'state', type: 'varchar', isNullable: false }, + { name: 'locked', type: 'boolean', isNullable: false }, + { name: 'user_login', type: 'varchar', isNullable: false }, + { name: 'user_type', type: 'varchar', isNullable: false }, + { name: 'user_site_admin', type: 'boolean', isNullable: false }, + { name: 'assignee_login', type: 'varchar', isNullable: true }, + { name: 'comments', type: 'numeric', isNullable: false }, + + { name: 'created_at', type: 'numeric', isNullable: false }, + { name: 'updated_at', type: 'numeric', isNullable: false }, + { name: 'closed_at', type: 'numeric', isNullable: true }, + ], +}); + +export class CreateGithubIssue1552457956065 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.createTable(table); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropTable(table); + } +} diff --git a/packages/pipeline/package.json b/packages/pipeline/package.json index 658069ffad..23af57fd9f 100644 --- a/packages/pipeline/package.json +++ b/packages/pipeline/package.json @@ -1,6 +1,6 @@ { "name": "@0x/pipeline", - "version": "1.0.14", + "version": "1.0.16", "private": true, "description": "Data pipeline for offline analysis", "scripts": { @@ -39,16 +39,16 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/connect": "^5.0.2", - "@0x/contract-addresses": "^2.2.2", - "@0x/contract-artifacts": "^1.3.0", - "@0x/contract-wrappers": "^8.0.3", - "@0x/dev-utils": "^2.1.3", - "@0x/order-utils": "^7.0.2", - "@0x/subproviders": "^4.0.2", - "@0x/types": "^2.1.1", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/connect": "^5.0.4", + "@0x/contract-addresses": "^2.3.0", + "@0x/contract-artifacts": "^1.4.0", + "@0x/contract-wrappers": "^8.0.5", + "@0x/dev-utils": "^2.2.0", + "@0x/order-utils": "^7.1.1", + "@0x/subproviders": "^4.0.4", + "@0x/types": "^2.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@radarrelay/types": "^1.2.1", "@types/dockerode": "^2.5.9", "@types/p-limit": "^2.0.0", @@ -56,7 +56,7 @@ "axios": "^0.18.0", "bottleneck": "^2.13.2", "dockerode": "^2.5.7", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "pg": "^7.5.0", "prettier": "^1.16.3", "ramda": "^0.25.0", diff --git a/packages/pipeline/src/data_sources/github/index.ts b/packages/pipeline/src/data_sources/github/index.ts new file mode 100644 index 0000000000..6749676587 --- /dev/null +++ b/packages/pipeline/src/data_sources/github/index.ts @@ -0,0 +1,152 @@ +import { fetchAsync, logUtils } from '@0x/utils'; +import Bottleneck from 'bottleneck'; + +const ONE_SECOND = 1000; + +export interface GithubRepoResponse { + full_name: string; + created_at: string; + updated_at: string; + pushed_at: string; + size: number; + stargazers_count: number; + watchers_count: number; + forks: number; + open_issues: number; + network_count: number; + subscribers_count: number; +} + +export interface GithubPullRequestResponse { + number: number; + title: string; + state: string; + created_at: string; + updated_at: string; + closed_at: string; + merged_at: string; + user: { + login: string; + }; + base: { + repo: { + full_name: string; + }; + }; +} + +export interface GithubForkResponse extends GithubRepoResponse { + owner: { + login: string; + }; + default_branch: string; +} + +export interface GithubComparisonResponse { + status: string; + ahead_by: number; + behind_by: number; + total_commits: number; +} + +export interface GithubIssueResponse { + number: number; + title: string; + state: string; + locked: boolean; + assignee?: { + login?: string; + }; + created_at: string; + updated_at: string; + closed_at: string; + user: { + login: string; + type: string; + site_admin: boolean; + }; + comments: number; +} + +// tslint:disable:prefer-function-over-method +// ^ Keep consistency with other sources and help logical organization +export class GithubSource { + // rate-limit for all API calls through this class instance + private readonly _limiter: Bottleneck; + private readonly _urlBase: string = 'https://api.github.com'; + private readonly _owner: string; + private readonly _repo: string; + private readonly _branch: string; + private readonly _accessToken: string; + + constructor(owner: string, repo: string, branch: string, accessToken: string, maxReqsPerSecond: number) { + this._owner = owner; + this._repo = repo; + this._branch = branch; + this._accessToken = accessToken; + this._limiter = new Bottleneck({ + minTime: ONE_SECOND / maxReqsPerSecond, + }); + } + + /** + * Call Github API for repo and return result. + */ + public async getGithubRepoAsync(): Promise { + const url = `${this._urlBase}/repos/${this._owner}/${this._repo}?access_token=${this._accessToken}`; + const resp = await this._limiter.schedule(() => fetchAsync(url)); + const respJson: GithubRepoResponse = await resp.json(); + return respJson; + } + + /** + * Call Github API for pull requests and return result - paginated. + */ + public async getGithubPullsAsync(page: number): Promise { + const url = `${this._urlBase}/repos/${this._owner}/${this._repo}/pulls?access_token=${ + this._accessToken + }&state=all&per_page=100&page=${page}`; + const resp = await this._limiter.schedule(() => fetchAsync(url)); + const respJson: GithubPullRequestResponse[] = await resp.json(); + return respJson; + } + + /** + * Call Github API for forks of repo and return result - paginated. + */ + public async getGithubForksAsync(page: number): Promise { + const url = `${this._urlBase}/repos/${this._owner}/${this._repo}/forks?access_token=${ + this._accessToken + }&per_page=100&page=${page}`; + const resp = await this._limiter.schedule(() => fetchAsync(url)); + const respJson: GithubForkResponse[] = await resp.json(); + return respJson; + } + + /** + * Call Github API to get commit status of a fork vs repo's main branch. + */ + public async getGithubComparisonAsync(forkOwner: string, forkBranch: string): Promise { + const url = `${this._urlBase}/repos/${this._owner}/${this._repo}/compare/${ + this._branch + }...${forkOwner}:${forkBranch}?access_token=${this._accessToken}`; + const resp = await this._limiter.schedule(() => fetchAsync(url)); + const respJson: GithubComparisonResponse = await resp.json(); + return respJson; + } + + /** + * Call Github API for pull requests and return result - paginated. + */ + public async getGithubIssuesAsync(page: number): Promise { + const url = `${this._urlBase}/repos/${this._owner}/${this._repo}/issues?access_token=${ + this._accessToken + }&state=all&per_page=100&page=${page}`; + const resp = await this._limiter.schedule(() => fetchAsync(url)); + const respJson: GithubIssueResponse[] = await resp.json(); + if (!respJson[0]) { + logUtils.log(respJson); + } + return respJson; + } +} diff --git a/packages/pipeline/src/entities/github_fork.ts b/packages/pipeline/src/entities/github_fork.ts new file mode 100644 index 0000000000..db45bfc725 --- /dev/null +++ b/packages/pipeline/src/entities/github_fork.ts @@ -0,0 +1,60 @@ +import { Column, Entity, PrimaryColumn } from 'typeorm'; + +import { numberToBigIntTransformer } from '../utils'; + +@Entity({ name: 'github_fork', schema: 'raw' }) +export class GithubFork { + @PrimaryColumn({ name: 'observed_timestamp', type: 'bigint', transformer: numberToBigIntTransformer }) + public observedTimestamp!: number; + + @PrimaryColumn({ name: 'full_name' }) + public fullName!: string; + + @PrimaryColumn({ name: 'owner_login' }) + public ownerLogin!: string; + + @Column({ name: 'created_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public createdAt!: number; + + @Column({ name: 'updated_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public updatedAt!: number; + + @Column({ name: 'pushed_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public pushedAt!: number; + + @Column({ name: 'size', transformer: numberToBigIntTransformer }) + public size!: number; + + @Column({ name: 'stargazers', transformer: numberToBigIntTransformer }) + public stargazers!: number; + + @Column({ name: 'watchers', transformer: numberToBigIntTransformer }) + public watchers!: number; + + @Column({ name: 'forks', transformer: numberToBigIntTransformer }) + public forks!: number; + + @Column({ name: 'open_issues', transformer: numberToBigIntTransformer }) + public openIssues!: number; + + @Column({ name: 'network', transformer: numberToBigIntTransformer, nullable: true }) + public network?: number; + + @Column({ name: 'subscribers', transformer: numberToBigIntTransformer, nullable: true }) + public subscribers?: number; + + @Column({ name: 'default_branch' }) + public defaultBranch!: string; + + @Column({ name: 'status', nullable: true }) + public status?: string; + + @Column({ name: 'ahead_by', transformer: numberToBigIntTransformer, nullable: true }) + public aheadBy?: number; + + @Column({ name: 'behind_by', transformer: numberToBigIntTransformer, nullable: true }) + public behindBy?: number; + + @Column({ name: 'total_commits', transformer: numberToBigIntTransformer, nullable: true }) + public totalCommits?: number; +} diff --git a/packages/pipeline/src/entities/github_issue.ts b/packages/pipeline/src/entities/github_issue.ts new file mode 100644 index 0000000000..f7e7d90ef4 --- /dev/null +++ b/packages/pipeline/src/entities/github_issue.ts @@ -0,0 +1,48 @@ +import { Column, Entity, PrimaryColumn } from 'typeorm'; + +import { numberToBigIntTransformer } from '../utils'; + +@Entity({ name: 'github_issue', schema: 'raw' }) +export class GithubIssue { + @PrimaryColumn({ name: 'observed_timestamp', type: 'bigint', transformer: numberToBigIntTransformer }) + public observedTimestamp!: number; + + @PrimaryColumn({ name: 'repo_full_name' }) + public repoFullName!: string; + + @PrimaryColumn({ name: 'issue_number', transformer: numberToBigIntTransformer }) + public issueNumber!: number; + + @Column({ name: 'title' }) + public title!: string; + + @Column({ name: 'state' }) + public state!: string; + + @Column({ name: 'locked', type: 'boolean' }) + public locked!: boolean; + + @Column({ name: 'assignee_login', type: 'varchar', nullable: true }) + public assigneeLogin?: string; + + @Column({ name: 'user_login' }) + public userLogin!: string; + + @Column({ name: 'user_type' }) + public userType!: string; + + @Column({ name: 'user_site_admin', type: 'boolean' }) + public userSiteAdmin!: boolean; + + @Column({ name: 'comments', transformer: numberToBigIntTransformer }) + public comments!: number; + + @Column({ name: 'created_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public createdAt!: number; + + @Column({ name: 'updated_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public updatedAt!: number; + + @Column({ name: 'closed_at', type: 'bigint', transformer: numberToBigIntTransformer, nullable: true }) + public closedAt?: number; +} diff --git a/packages/pipeline/src/entities/github_pull_request.ts b/packages/pipeline/src/entities/github_pull_request.ts new file mode 100644 index 0000000000..148c1d03c2 --- /dev/null +++ b/packages/pipeline/src/entities/github_pull_request.ts @@ -0,0 +1,36 @@ +import { Column, Entity, PrimaryColumn } from 'typeorm'; + +import { numberToBigIntTransformer } from '../utils'; + +@Entity({ name: 'github_pull_request', schema: 'raw' }) +export class GithubPullRequest { + @PrimaryColumn({ name: 'observed_timestamp', type: 'bigint', transformer: numberToBigIntTransformer }) + public observedTimestamp!: number; + + @PrimaryColumn({ name: 'repo_full_name' }) + public repoFullName!: string; + + @PrimaryColumn({ name: 'pull_request_number', transformer: numberToBigIntTransformer }) + public pullRequestNumber!: number; + + @Column({ name: 'created_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public createdAt!: number; + + @Column({ name: 'updated_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public updatedAt!: number; + + @Column({ name: 'closed_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public closedAt?: number | null; + + @Column({ name: 'merged_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public mergedAt?: number | null; + + @Column({ name: 'state' }) + public state!: string; + + @Column({ name: 'title' }) + public title!: string; + + @Column({ name: 'user_login' }) + public userLogin!: string; +} diff --git a/packages/pipeline/src/entities/github_repo.ts b/packages/pipeline/src/entities/github_repo.ts new file mode 100644 index 0000000000..9ff60306d6 --- /dev/null +++ b/packages/pipeline/src/entities/github_repo.ts @@ -0,0 +1,42 @@ +import { Column, Entity, PrimaryColumn } from 'typeorm'; + +import { numberToBigIntTransformer } from '../utils'; + +@Entity({ name: 'github_repo', schema: 'raw' }) +export class GithubRepo { + @PrimaryColumn({ name: 'observed_timestamp', type: 'bigint', transformer: numberToBigIntTransformer }) + public observedTimestamp!: number; + + @PrimaryColumn({ name: 'full_name' }) + public fullName!: string; + + @Column({ name: 'created_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public createdAt!: number; + + @Column({ name: 'updated_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public updatedAt!: number; + + @Column({ name: 'pushed_at', type: 'bigint', transformer: numberToBigIntTransformer }) + public pushedAt!: number; + + @Column({ name: 'size', transformer: numberToBigIntTransformer }) + public size!: number; + + @Column({ name: 'stargazers', transformer: numberToBigIntTransformer }) + public stargazers!: number; + + @Column({ name: 'watchers', transformer: numberToBigIntTransformer }) + public watchers!: number; + + @Column({ name: 'forks', transformer: numberToBigIntTransformer }) + public forks!: number; + + @Column({ name: 'open_issues', transformer: numberToBigIntTransformer }) + public openIssues!: number; + + @Column({ name: 'network', transformer: numberToBigIntTransformer }) + public network?: number; + + @Column({ name: 'subscribers', transformer: numberToBigIntTransformer }) + public subscribers?: number; +} diff --git a/packages/pipeline/src/entities/index.ts b/packages/pipeline/src/entities/index.ts index 3246cb5a76..0f0bb477ec 100644 --- a/packages/pipeline/src/entities/index.ts +++ b/packages/pipeline/src/entities/index.ts @@ -8,6 +8,10 @@ export { EtherscanTransaction } from './etherscan_transaction'; export { ExchangeCancelEvent } from './exchange_cancel_event'; export { ExchangeCancelUpToEvent } from './exchange_cancel_up_to_event'; export { ExchangeFillEvent } from './exchange_fill_event'; +export { GithubFork } from './github_fork'; +export { GithubIssue } from './github_issue'; +export { GithubRepo } from './github_repo'; +export { GithubPullRequest } from './github_pull_request'; export { GreenhouseApplication } from './greenhouse_application'; export { NonfungibleDotComTrade } from './nonfungible_dot_com_trade'; export { OHLCVExternal } from './ohlcv_external'; diff --git a/packages/pipeline/src/ormconfig.ts b/packages/pipeline/src/ormconfig.ts index 411f2f1db3..533f189623 100644 --- a/packages/pipeline/src/ormconfig.ts +++ b/packages/pipeline/src/ormconfig.ts @@ -13,6 +13,10 @@ import { ExchangeCancelEvent, ExchangeCancelUpToEvent, ExchangeFillEvent, + GithubFork, + GithubIssue, + GithubPullRequest, + GithubRepo, GreenhouseApplication, NonfungibleDotComTrade, OHLCVExternal, @@ -38,6 +42,11 @@ const entities = [ ExchangeCancelEvent, ExchangeCancelUpToEvent, ExchangeFillEvent, + ERC20ApprovalEvent, + GithubFork, + GithubIssue, + GithubPullRequest, + GithubRepo, GreenhouseApplication, NonfungibleDotComTrade, OHLCVExternal, diff --git a/packages/pipeline/src/parsers/github/forks.ts b/packages/pipeline/src/parsers/github/forks.ts new file mode 100644 index 0000000000..1467a2b775 --- /dev/null +++ b/packages/pipeline/src/parsers/github/forks.ts @@ -0,0 +1,43 @@ +import { GithubComparisonResponse, GithubForkResponse } from '../../data_sources/github'; +import { GithubFork } from '../../entities'; + +/** + * Converts a Github response from the API into a GithubFork entity. + * @param response A Github response from the API. + */ +export function parseGithubForks(response: GithubForkResponse[], observedTimestamp: number): GithubFork[] { + const result: GithubFork[] = response.map(fork => { + const parsedFork = new GithubFork(); + parsedFork.observedTimestamp = observedTimestamp; + parsedFork.fullName = fork.full_name; + parsedFork.ownerLogin = fork.owner.login; + parsedFork.createdAt = Date.parse(fork.created_at); + parsedFork.updatedAt = Date.parse(fork.updated_at); + parsedFork.pushedAt = Date.parse(fork.pushed_at); + parsedFork.size = fork.size; + parsedFork.stargazers = fork.stargazers_count; + parsedFork.watchers = fork.watchers_count; + parsedFork.forks = fork.forks; + parsedFork.openIssues = fork.open_issues; + parsedFork.network = fork.network_count; + parsedFork.subscribers = fork.subscribers_count; + parsedFork.defaultBranch = fork.default_branch; + return parsedFork; + }); + return result; +} + +/** + * Extends a GithubFork object with additional comparison fields. + */ +export function enrichGithubForkWithComparisonDetails( + githubFork: GithubFork, + comparisonResponse: GithubComparisonResponse, +): GithubFork { + const enrichedGithubFork = { ...githubFork }; // clone object + enrichedGithubFork.status = comparisonResponse.status; + enrichedGithubFork.aheadBy = comparisonResponse.ahead_by; + enrichedGithubFork.behindBy = comparisonResponse.behind_by; + enrichedGithubFork.totalCommits = comparisonResponse.total_commits; + return enrichedGithubFork; +} diff --git a/packages/pipeline/src/parsers/github/index.ts b/packages/pipeline/src/parsers/github/index.ts new file mode 100644 index 0000000000..c27aead733 --- /dev/null +++ b/packages/pipeline/src/parsers/github/index.ts @@ -0,0 +1,4 @@ +export { enrichGithubForkWithComparisonDetails, parseGithubForks } from './forks'; +export { parseGithubIssues } from './issues'; +export { parseGithubRepo } from './repo'; +export { parseGithubPulls } from './pulls'; diff --git a/packages/pipeline/src/parsers/github/issues.ts b/packages/pipeline/src/parsers/github/issues.ts new file mode 100644 index 0000000000..d94c70dfbe --- /dev/null +++ b/packages/pipeline/src/parsers/github/issues.ts @@ -0,0 +1,35 @@ +import { GithubIssueResponse } from '../../data_sources/github'; +import { GithubIssue } from '../../entities'; + +/** + * Converts a Github response from the API into an array GithubIssue entity. + * @param response A Github response from the API. + * @param observedTimestamp The timestamp to record for the observation of the entities. + */ +export function parseGithubIssues( + response: GithubIssueResponse[], + observedTimestamp: number, + repoFullName: string, +): GithubIssue[] { + const emptyResponse: GithubIssue[] = []; + return response && response[0] + ? response.map(issue => { + const parsedIssue = new GithubIssue(); + parsedIssue.observedTimestamp = observedTimestamp; + parsedIssue.repoFullName = repoFullName; + parsedIssue.issueNumber = issue.number; + parsedIssue.title = issue.title; + parsedIssue.state = issue.state; + parsedIssue.locked = issue.locked; + parsedIssue.assigneeLogin = issue.assignee ? issue.assignee.login : undefined; + parsedIssue.userLogin = issue.user.login; + parsedIssue.userType = issue.user.type; + parsedIssue.userSiteAdmin = issue.user.site_admin; + parsedIssue.comments = issue.comments; + parsedIssue.createdAt = Date.parse(issue.created_at); + parsedIssue.updatedAt = Date.parse(issue.updated_at); + parsedIssue.closedAt = issue.closed_at ? Date.parse(issue.closed_at) : undefined; + return parsedIssue; + }) + : emptyResponse; +} diff --git a/packages/pipeline/src/parsers/github/pulls.ts b/packages/pipeline/src/parsers/github/pulls.ts new file mode 100644 index 0000000000..b4542ad209 --- /dev/null +++ b/packages/pipeline/src/parsers/github/pulls.ts @@ -0,0 +1,26 @@ +import { GithubPullRequestResponse } from '../../data_sources/github'; +import { GithubPullRequest } from '../../entities'; + +/** + * Converts a Github response from the API into an GithubRepo entity. + * @param rawRepo A Github response from the API into an GithubRepo entity. + */ +export function parseGithubPulls( + response: GithubPullRequestResponse[], + observedTimestamp: number, +): GithubPullRequest[] { + return response.map(pull => { + const parsedPullRequest = new GithubPullRequest(); + parsedPullRequest.observedTimestamp = observedTimestamp; + parsedPullRequest.repoFullName = pull.base.repo.full_name; + parsedPullRequest.createdAt = Date.parse(pull.created_at); + parsedPullRequest.updatedAt = Date.parse(pull.updated_at); + parsedPullRequest.closedAt = pull.closed_at ? Date.parse(pull.closed_at) : null; + parsedPullRequest.mergedAt = pull.merged_at ? Date.parse(pull.merged_at) : null; + parsedPullRequest.pullRequestNumber = pull.number; + parsedPullRequest.state = pull.state; + parsedPullRequest.title = pull.title; + parsedPullRequest.userLogin = pull.user.login; + return parsedPullRequest; + }); +} diff --git a/packages/pipeline/src/parsers/github/repo.ts b/packages/pipeline/src/parsers/github/repo.ts new file mode 100644 index 0000000000..58f742f9f5 --- /dev/null +++ b/packages/pipeline/src/parsers/github/repo.ts @@ -0,0 +1,23 @@ +import { GithubRepoResponse } from '../../data_sources/github'; +import { GithubRepo } from '../../entities'; + +/** + * Converts a Github response from the API into an GithubRepo entity. + * @param rawRepo A Github response from the API into an GithubRepo entity. + */ +export function parseGithubRepo(rawRepo: GithubRepoResponse, observedTimestamp: number): GithubRepo { + const parsedRepo = new GithubRepo(); + parsedRepo.observedTimestamp = observedTimestamp; + parsedRepo.fullName = rawRepo.full_name; + parsedRepo.createdAt = Date.parse(rawRepo.created_at); + parsedRepo.updatedAt = Date.parse(rawRepo.updated_at); + parsedRepo.pushedAt = Date.parse(rawRepo.pushed_at); + parsedRepo.size = rawRepo.size; + parsedRepo.stargazers = rawRepo.stargazers_count; + parsedRepo.watchers = rawRepo.watchers_count; + parsedRepo.forks = rawRepo.forks; + parsedRepo.openIssues = rawRepo.open_issues; + parsedRepo.network = rawRepo.network_count; + parsedRepo.subscribers = rawRepo.subscribers_count; + return parsedRepo; +} diff --git a/packages/pipeline/src/scripts/pull_github.ts b/packages/pipeline/src/scripts/pull_github.ts new file mode 100644 index 0000000000..4fa420b655 --- /dev/null +++ b/packages/pipeline/src/scripts/pull_github.ts @@ -0,0 +1,109 @@ +import { Connection, ConnectionOptions, createConnection } from 'typeorm'; + +import { logUtils } from '@0x/utils'; + +import { GithubSource } from '../data_sources/github'; +import { GithubFork, GithubIssue, GithubPullRequest, GithubRepo } from '../entities'; +import * as ormConfig from '../ormconfig'; +import { + enrichGithubForkWithComparisonDetails, + parseGithubForks, + parseGithubIssues, + parseGithubPulls, + parseGithubRepo, +} from '../parsers/github'; +import { handleError } from '../utils'; + +const GITHUB_OWNER = '0xProject'; +const GITHUB_REPO = '0x-monorepo'; +const GITHUB_BRANCH = 'development'; +const RECORDS_PER_PAGE = 100; +const MAX_REQUESTS_PER_SECOND = 1; + +let connection: Connection; + +(async () => { + connection = await createConnection(ormConfig as ConnectionOptions); + const accessToken = process.env.GITHUB_ACCESS_TOKEN; + if (accessToken === undefined) { + throw new Error('Missing required env var: GITHUB_ACCESS_TOKEN'); + } + const githubSource = new GithubSource( + GITHUB_OWNER, + GITHUB_REPO, + GITHUB_BRANCH, + accessToken, + MAX_REQUESTS_PER_SECOND, + ); + const observedTimestamp = Date.now(); + + // get repo and save + const GithubRepoRepository = connection.getRepository(GithubRepo); + logUtils.log('Fetching Github repo from API.'); + const rawRepo = await githubSource.getGithubRepoAsync(); + const repo = parseGithubRepo(rawRepo, observedTimestamp); + logUtils.log('Saving Github repo to database.'); + await GithubRepoRepository.save(repo); + + // get pull requests and save + const GithubPullRequestRepository = connection.getRepository(GithubPullRequest); + let numberOfRecords = RECORDS_PER_PAGE; + let page = 1; + while (numberOfRecords === RECORDS_PER_PAGE) { + logUtils.log(`Fetching Github pull requests from API, page: ${page}.`); + const rawPulls = await githubSource.getGithubPullsAsync(page); + const pulls = parseGithubPulls(rawPulls, observedTimestamp); + numberOfRecords = pulls.length; + page++; + logUtils.log(`Saving ${pulls.length} pull requests to database.`); + await GithubPullRequestRepository.save(pulls); + } + + // get forks and save + const GithubForkRepository = connection.getRepository(GithubFork); + numberOfRecords = RECORDS_PER_PAGE; + page = 1; + while (numberOfRecords === RECORDS_PER_PAGE) { + logUtils.log(`Fetching Github forks from API, page: ${page}.`); + const rawForks = await githubSource.getGithubForksAsync(page); + const forks = parseGithubForks(rawForks, observedTimestamp); + logUtils.log('Fetching compare stats for each fork from API.'); + const enrichedForks = await Promise.all( + forks.map(async fork => { + const comparison = await githubSource.getGithubComparisonAsync(fork.ownerLogin, fork.defaultBranch); + const enriched = enrichGithubForkWithComparisonDetails(fork, comparison); + return enriched; + }), + ); + numberOfRecords = enrichedForks.length; + page++; + logUtils.log(`Saving ${enrichedForks.length} forks to database.`); + await GithubForkRepository.save(enrichedForks); + } + + // get issues and save + const GithubIssueRepository = connection.getRepository(GithubIssue); + numberOfRecords = RECORDS_PER_PAGE; + page = 1; + const maxAttempts = 3; + const repoFullName = `${GITHUB_OWNER}/${GITHUB_REPO}`; + while (numberOfRecords === RECORDS_PER_PAGE) { + let rawIssues; + let issues; + let attempt = 1; + do { + logUtils.log(`Fetching Github issues from API, page: ${page}.`); + if (attempt > 1) { + logUtils.log(`Attempt #${attempt}`); + } + rawIssues = await githubSource.getGithubIssuesAsync(page); + issues = parseGithubIssues(rawIssues, observedTimestamp, repoFullName); + } while (issues.length === 0 && attempt++ < maxAttempts); // Github API returns no records + numberOfRecords = issues.length; + page++; + logUtils.log(`Saving ${issues.length} issues to database.`); + await GithubIssueRepository.save(issues); + } + + process.exit(0); +})().catch(handleError); diff --git a/packages/pipeline/test/entities/github_test.ts b/packages/pipeline/test/entities/github_test.ts new file mode 100644 index 0000000000..a41d140f31 --- /dev/null +++ b/packages/pipeline/test/entities/github_test.ts @@ -0,0 +1,109 @@ +import 'mocha'; +import 'reflect-metadata'; + +import { GithubFork, GithubIssue, GithubPullRequest, GithubRepo } from '../../src/entities'; +import { createDbConnectionOnceAsync } from '../db_setup'; +import { chaiSetup } from '../utils/chai_setup'; + +import { testSaveAndFindEntityAsync } from './util'; + +chaiSetup.configure(); + +// tslint:disable:custom-no-magic-numbers +const fork: GithubFork = { + observedTimestamp: Date.now(), + fullName: 'NoahZinsmeister/0x-monorepo', + ownerLogin: 'NoahZinsmeister', + createdAt: 1552181010000, + updatedAt: 1552191123000, + pushedAt: 1552191120000, + size: 86271, + stargazers: 0, + watchers: 0, + forks: 0, + openIssues: 0, + network: undefined, + subscribers: undefined, + defaultBranch: 'development', + status: 'ahead', + aheadBy: 1, + behindBy: 0, + totalCommits: 1, +}; + +const issue: GithubIssue = { + observedTimestamp: Date.now(), + repoFullName: '0xProject/0x-monorepo', + issueNumber: 1691, + title: 'An in-range update of source-map-support is breaking the build', + state: 'open', + locked: false, + assigneeLogin: undefined, + userLogin: 'greenkeeper[bot]', + userType: 'Bot', + userSiteAdmin: false, + comments: 1, + createdAt: Date.parse('2019-03-12T17:30:58Z'), + updatedAt: Date.parse('2019-03-12T17:32:26Z'), + closedAt: undefined, +}; + +const pullRequest: GithubPullRequest = { + observedTimestamp: Date.now(), + repoFullName: '0xProject/0x-monorepo', + pullRequestNumber: 1684, + state: 'open', + title: '[WIP] Pull Github data', + userLogin: 'askeluv', + createdAt: 1552019788000, + updatedAt: 1552019788000, + closedAt: null, + mergedAt: null, +}; + +const repo: GithubRepo = { + observedTimestamp: Date.now(), + fullName: '0xProject/0x-monorepo', + createdAt: 1495549053000, + updatedAt: 1551908929000, + pushedAt: 1551916745000, + size: 86538, + stargazers: 989, + watchers: 989, + forks: 294, + openIssues: 46, + network: 294, + subscribers: 89, +}; + +describe('GithubFork entity', () => { + it('save/find', async () => { + const connection = await createDbConnectionOnceAsync(); + const forkRepository = connection.getRepository(GithubFork); + await testSaveAndFindEntityAsync(forkRepository, fork); + }); +}); + +describe('GithubIssue entity', () => { + it('save/find', async () => { + const connection = await createDbConnectionOnceAsync(); + const issueRepository = connection.getRepository(GithubIssue); + await testSaveAndFindEntityAsync(issueRepository, issue); + }); +}); + +describe('GithubPullRequest entity', () => { + it('save/find', async () => { + const connection = await createDbConnectionOnceAsync(); + const pullRequestRepository = connection.getRepository(GithubPullRequest); + await testSaveAndFindEntityAsync(pullRequestRepository, pullRequest); + }); +}); + +describe('GithubRepo entity', () => { + it('save/find', async () => { + const connection = await createDbConnectionOnceAsync(); + const repoRepository = connection.getRepository(GithubRepo); + await testSaveAndFindEntityAsync(repoRepository, repo); + }); +}); diff --git a/packages/pipeline/test/fixtures/github/api_v3_compare.json b/packages/pipeline/test/fixtures/github/api_v3_compare.json new file mode 100644 index 0000000000..b54df20a0d --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_compare.json @@ -0,0 +1,3667 @@ +{ + "url": "https://api.github.com/repos/0xProject/0x-monorepo/compare/development...NoahZinsmeister:development", + "html_url": "https://github.com/0xProject/0x-monorepo/compare/development...NoahZinsmeister:development", + "permalink_url": "https://github.com/0xProject/0x-monorepo/compare/0xProject:9e03e1c...NoahZinsmeister:e23547d", + "diff_url": "https://github.com/0xProject/0x-monorepo/compare/development...NoahZinsmeister:development.diff", + "patch_url": "https://github.com/0xProject/0x-monorepo/compare/development...NoahZinsmeister:development.patch", + "base_commit": { + "sha": "9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "node_id": "MDY6Q29tbWl0OTIxODEzNzE6OWUwM2UxYzc0MmQ3M2M2ZjBiMmQ2MWIxYTA2OTEyMGU0YWE3MWQzZQ==", + "commit": { + "author": { + "name": "Amir Bandeali", + "email": "abandeali1@gmail.com", + "date": "2019-03-07T22:55:32Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2019-03-07T22:55:32Z" + }, + "message": "Merge pull request #1668 from 0xProject/feat/contracts/tec-txorigin-check\n\nAdd tx.origin to TEC approvals", + "tree": { + "sha": "b53b7a259753f55d20852d61eb56ddfc48757352", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/git/trees/b53b7a259753f55d20852d61eb56ddfc48757352" + }, + "url": "https://api.github.com/repos/0xProject/0x-monorepo/git/commits/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJcgaFkCRBK7hj4Ov3rIwAAdHIIAK0Hn6PnU4TceyUmxQjRPJMO\nC/nVXyxaplXfyU4U8ZcMfAqWm94AaywNIeCPHaA2PE2+GEjwOvd3nMWPFEL53K3r\nnaZrDKTj2lncaz4t382ihiBPSklWskF2Hl8eUQVc9Bp2w1OlnBBUDzr67m+tmtrz\npfysqWVT+VCw5/4LPpF2/ExpynuDKnWwAGtP1lZuWRN82EYo/9/ni/cUG17TuPaF\nlU8imoTtxUxgptTp8Uz2bA8ys6DpoVFwPzQ+Wf8QFuvf5Xlgy1Sf6QkNHimMdZDa\nsZ2N/Es/oMMw7xxJehNqcRQ3mzmDmd14h78h0o7M9v/lrVwFAEvKdFebCNFGDd0=\n=scus\n-----END PGP SIGNATURE-----\n", + "payload": "tree b53b7a259753f55d20852d61eb56ddfc48757352\nparent 6fbfcef1faa2246909bc09e051190d68aaaa101b\nparent 9471510086d0f3d9ffee3db095cfa3e179a43b31\nauthor Amir Bandeali 1551999332 -0800\ncommitter GitHub 1551999332 -0800\n\nMerge pull request #1668 from 0xProject/feat/contracts/tec-txorigin-check\n\nAdd tx.origin to TEC approvals" + } + }, + "url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "html_url": "https://github.com/0xProject/0x-monorepo/commit/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e/comments", + "author": { + "login": "abandeali1", + "id": 18060168, + "node_id": "MDQ6VXNlcjE4MDYwMTY4", + "avatar_url": "https://avatars0.githubusercontent.com/u/18060168?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/abandeali1", + "html_url": "https://github.com/abandeali1", + "followers_url": "https://api.github.com/users/abandeali1/followers", + "following_url": "https://api.github.com/users/abandeali1/following{/other_user}", + "gists_url": "https://api.github.com/users/abandeali1/gists{/gist_id}", + "starred_url": "https://api.github.com/users/abandeali1/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/abandeali1/subscriptions", + "organizations_url": "https://api.github.com/users/abandeali1/orgs", + "repos_url": "https://api.github.com/users/abandeali1/repos", + "events_url": "https://api.github.com/users/abandeali1/events{/privacy}", + "received_events_url": "https://api.github.com/users/abandeali1/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "6fbfcef1faa2246909bc09e051190d68aaaa101b", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/6fbfcef1faa2246909bc09e051190d68aaaa101b", + "html_url": "https://github.com/0xProject/0x-monorepo/commit/6fbfcef1faa2246909bc09e051190d68aaaa101b" + }, + { + "sha": "9471510086d0f3d9ffee3db095cfa3e179a43b31", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/9471510086d0f3d9ffee3db095cfa3e179a43b31", + "html_url": "https://github.com/0xProject/0x-monorepo/commit/9471510086d0f3d9ffee3db095cfa3e179a43b31" + } + ] + }, + "merge_base_commit": { + "sha": "9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "node_id": "MDY6Q29tbWl0MTc0NzY0NTYyOjllMDNlMWM3NDJkNzNjNmYwYjJkNjFiMWEwNjkxMjBlNGFhNzFkM2U=", + "commit": { + "author": { + "name": "Amir Bandeali", + "email": "abandeali1@gmail.com", + "date": "2019-03-07T22:55:32Z" + }, + "committer": { + "name": "GitHub", + "email": "noreply@github.com", + "date": "2019-03-07T22:55:32Z" + }, + "message": "Merge pull request #1668 from 0xProject/feat/contracts/tec-txorigin-check\n\nAdd tx.origin to TEC approvals", + "tree": { + "sha": "b53b7a259753f55d20852d61eb56ddfc48757352", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/git/trees/b53b7a259753f55d20852d61eb56ddfc48757352" + }, + "url": "https://api.github.com/repos/0xProject/0x-monorepo/git/commits/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\n\nwsBcBAABCAAQBQJcgaFkCRBK7hj4Ov3rIwAAdHIIAK0Hn6PnU4TceyUmxQjRPJMO\nC/nVXyxaplXfyU4U8ZcMfAqWm94AaywNIeCPHaA2PE2+GEjwOvd3nMWPFEL53K3r\nnaZrDKTj2lncaz4t382ihiBPSklWskF2Hl8eUQVc9Bp2w1OlnBBUDzr67m+tmtrz\npfysqWVT+VCw5/4LPpF2/ExpynuDKnWwAGtP1lZuWRN82EYo/9/ni/cUG17TuPaF\nlU8imoTtxUxgptTp8Uz2bA8ys6DpoVFwPzQ+Wf8QFuvf5Xlgy1Sf6QkNHimMdZDa\nsZ2N/Es/oMMw7xxJehNqcRQ3mzmDmd14h78h0o7M9v/lrVwFAEvKdFebCNFGDd0=\n=scus\n-----END PGP SIGNATURE-----\n", + "payload": "tree b53b7a259753f55d20852d61eb56ddfc48757352\nparent 6fbfcef1faa2246909bc09e051190d68aaaa101b\nparent 9471510086d0f3d9ffee3db095cfa3e179a43b31\nauthor Amir Bandeali 1551999332 -0800\ncommitter GitHub 1551999332 -0800\n\nMerge pull request #1668 from 0xProject/feat/contracts/tec-txorigin-check\n\nAdd tx.origin to TEC approvals" + } + }, + "url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "html_url": "https://github.com/0xProject/0x-monorepo/commit/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e/comments", + "author": { + "login": "abandeali1", + "id": 18060168, + "node_id": "MDQ6VXNlcjE4MDYwMTY4", + "avatar_url": "https://avatars0.githubusercontent.com/u/18060168?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/abandeali1", + "html_url": "https://github.com/abandeali1", + "followers_url": "https://api.github.com/users/abandeali1/followers", + "following_url": "https://api.github.com/users/abandeali1/following{/other_user}", + "gists_url": "https://api.github.com/users/abandeali1/gists{/gist_id}", + "starred_url": "https://api.github.com/users/abandeali1/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/abandeali1/subscriptions", + "organizations_url": "https://api.github.com/users/abandeali1/orgs", + "repos_url": "https://api.github.com/users/abandeali1/repos", + "events_url": "https://api.github.com/users/abandeali1/events{/privacy}", + "received_events_url": "https://api.github.com/users/abandeali1/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "web-flow", + "id": 19864447, + "node_id": "MDQ6VXNlcjE5ODY0NDQ3", + "avatar_url": "https://avatars3.githubusercontent.com/u/19864447?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/web-flow", + "html_url": "https://github.com/web-flow", + "followers_url": "https://api.github.com/users/web-flow/followers", + "following_url": "https://api.github.com/users/web-flow/following{/other_user}", + "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}", + "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions", + "organizations_url": "https://api.github.com/users/web-flow/orgs", + "repos_url": "https://api.github.com/users/web-flow/repos", + "events_url": "https://api.github.com/users/web-flow/events{/privacy}", + "received_events_url": "https://api.github.com/users/web-flow/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "6fbfcef1faa2246909bc09e051190d68aaaa101b", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/6fbfcef1faa2246909bc09e051190d68aaaa101b", + "html_url": "https://github.com/0xProject/0x-monorepo/commit/6fbfcef1faa2246909bc09e051190d68aaaa101b" + }, + { + "sha": "9471510086d0f3d9ffee3db095cfa3e179a43b31", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/9471510086d0f3d9ffee3db095cfa3e179a43b31", + "html_url": "https://github.com/0xProject/0x-monorepo/commit/9471510086d0f3d9ffee3db095cfa3e179a43b31" + } + ] + }, + "status": "ahead", + "ahead_by": 1, + "behind_by": 0, + "total_commits": 1, + "commits": [ + { + "sha": "e23547d5dac2626e326dec0d1d27aa11b290d020", + "node_id": "MDY6Q29tbWl0OTIxODEzNzE6ZTIzNTQ3ZDVkYWMyNjI2ZTMyNmRlYzBkMWQyN2FhMTFiMjkwZDAyMA==", + "commit": { + "author": { + "name": "Noah Zinsmeister", + "email": "noahwz@gmail.com", + "date": "2019-03-10T04:11:30Z" + }, + "committer": { + "name": "Noah Zinsmeister", + "email": "noahwz@gmail.com", + "date": "2019-03-10T04:11:30Z" + }, + "message": "enable transfer logic", + "tree": { + "sha": "bb901231fc8dcd7f3c470ec23e8e564ffacd3a2b", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/git/trees/bb901231fc8dcd7f3c470ec23e8e564ffacd3a2b" + }, + "url": "https://api.github.com/repos/0xProject/0x-monorepo/git/commits/e23547d5dac2626e326dec0d1d27aa11b290d020", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/e23547d5dac2626e326dec0d1d27aa11b290d020", + "html_url": "https://github.com/0xProject/0x-monorepo/commit/e23547d5dac2626e326dec0d1d27aa11b290d020", + "comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/e23547d5dac2626e326dec0d1d27aa11b290d020/comments", + "author": { + "login": "NoahZinsmeister", + "id": 3760414, + "node_id": "MDQ6VXNlcjM3NjA0MTQ=", + "avatar_url": "https://avatars3.githubusercontent.com/u/3760414?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/NoahZinsmeister", + "html_url": "https://github.com/NoahZinsmeister", + "followers_url": "https://api.github.com/users/NoahZinsmeister/followers", + "following_url": "https://api.github.com/users/NoahZinsmeister/following{/other_user}", + "gists_url": "https://api.github.com/users/NoahZinsmeister/gists{/gist_id}", + "starred_url": "https://api.github.com/users/NoahZinsmeister/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/NoahZinsmeister/subscriptions", + "organizations_url": "https://api.github.com/users/NoahZinsmeister/orgs", + "repos_url": "https://api.github.com/users/NoahZinsmeister/repos", + "events_url": "https://api.github.com/users/NoahZinsmeister/events{/privacy}", + "received_events_url": "https://api.github.com/users/NoahZinsmeister/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "NoahZinsmeister", + "id": 3760414, + "node_id": "MDQ6VXNlcjM3NjA0MTQ=", + "avatar_url": "https://avatars3.githubusercontent.com/u/3760414?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/NoahZinsmeister", + "html_url": "https://github.com/NoahZinsmeister", + "followers_url": "https://api.github.com/users/NoahZinsmeister/followers", + "following_url": "https://api.github.com/users/NoahZinsmeister/following{/other_user}", + "gists_url": "https://api.github.com/users/NoahZinsmeister/gists{/gist_id}", + "starred_url": "https://api.github.com/users/NoahZinsmeister/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/NoahZinsmeister/subscriptions", + "organizations_url": "https://api.github.com/users/NoahZinsmeister/orgs", + "repos_url": "https://api.github.com/users/NoahZinsmeister/repos", + "events_url": "https://api.github.com/users/NoahZinsmeister/events{/privacy}", + "received_events_url": "https://api.github.com/users/NoahZinsmeister/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/commits/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "html_url": "https://github.com/0xProject/0x-monorepo/commit/9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e" + } + ] + } + ], + "files": [ + { + "sha": "da3bed7a3db35c50bcd43ecaa5837e7f3d5043f9", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.d.ts", + "status": "added", + "additions": 180, + "deletions": 0, + "changes": 180, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,180 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type AssetProxyOwnerEventArgs = AssetProxyOwnerAssetProxyRegistrationEventArgs | AssetProxyOwnerConfirmationTimeSetEventArgs | AssetProxyOwnerTimeLockChangeEventArgs | AssetProxyOwnerConfirmationEventArgs | AssetProxyOwnerRevocationEventArgs | AssetProxyOwnerSubmissionEventArgs | AssetProxyOwnerExecutionEventArgs | AssetProxyOwnerExecutionFailureEventArgs | AssetProxyOwnerDepositEventArgs | AssetProxyOwnerOwnerAdditionEventArgs | AssetProxyOwnerOwnerRemovalEventArgs | AssetProxyOwnerRequirementChangeEventArgs;\n+export declare enum AssetProxyOwnerEvents {\n+ AssetProxyRegistration = \"AssetProxyRegistration\",\n+ ConfirmationTimeSet = \"ConfirmationTimeSet\",\n+ TimeLockChange = \"TimeLockChange\",\n+ Confirmation = \"Confirmation\",\n+ Revocation = \"Revocation\",\n+ Submission = \"Submission\",\n+ Execution = \"Execution\",\n+ ExecutionFailure = \"ExecutionFailure\",\n+ Deposit = \"Deposit\",\n+ OwnerAddition = \"OwnerAddition\",\n+ OwnerRemoval = \"OwnerRemoval\",\n+ RequirementChange = \"RequirementChange\"\n+}\n+export interface AssetProxyOwnerAssetProxyRegistrationEventArgs extends DecodedLogArgs {\n+ assetProxyContract: string;\n+ isRegistered: boolean;\n+}\n+export interface AssetProxyOwnerConfirmationTimeSetEventArgs extends DecodedLogArgs {\n+ transactionId: BigNumber;\n+ confirmationTime: BigNumber;\n+}\n+export interface AssetProxyOwnerTimeLockChangeEventArgs extends DecodedLogArgs {\n+ secondsTimeLocked: BigNumber;\n+}\n+export interface AssetProxyOwnerConfirmationEventArgs extends DecodedLogArgs {\n+ sender: string;\n+ transactionId: BigNumber;\n+}\n+export interface AssetProxyOwnerRevocationEventArgs extends DecodedLogArgs {\n+ sender: string;\n+ transactionId: BigNumber;\n+}\n+export interface AssetProxyOwnerSubmissionEventArgs extends DecodedLogArgs {\n+ transactionId: BigNumber;\n+}\n+export interface AssetProxyOwnerExecutionEventArgs extends DecodedLogArgs {\n+ transactionId: BigNumber;\n+}\n+export interface AssetProxyOwnerExecutionFailureEventArgs extends DecodedLogArgs {\n+ transactionId: BigNumber;\n+}\n+export interface AssetProxyOwnerDepositEventArgs extends DecodedLogArgs {\n+ sender: string;\n+ value: BigNumber;\n+}\n+export interface AssetProxyOwnerOwnerAdditionEventArgs extends DecodedLogArgs {\n+ owner: string;\n+}\n+export interface AssetProxyOwnerOwnerRemovalEventArgs extends DecodedLogArgs {\n+ owner: string;\n+}\n+export interface AssetProxyOwnerRequirementChangeEventArgs extends DecodedLogArgs {\n+ required: BigNumber;\n+}\n+export declare class AssetProxyOwnerContract extends BaseContract {\n+ owners: {\n+ callAsync(index_0: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ removeOwner: {\n+ sendTransactionAsync(owner: string, txData?: Partial): Promise;\n+ estimateGasAsync(owner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(owner: string): string;\n+ callAsync(owner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ revokeConfirmation: {\n+ sendTransactionAsync(transactionId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(transactionId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(transactionId: BigNumber): string;\n+ callAsync(transactionId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ isOwner: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ confirmations: {\n+ callAsync(index_0: BigNumber, index_1: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ executeRemoveAuthorizedAddressAtIndex: {\n+ sendTransactionAsync(transactionId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(transactionId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(transactionId: BigNumber): string;\n+ callAsync(transactionId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ secondsTimeLocked: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getTransactionCount: {\n+ callAsync(pending: boolean, executed: boolean, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ registerAssetProxy: {\n+ sendTransactionAsync(assetProxyContract: string, isRegistered: boolean, txData?: Partial): Promise;\n+ estimateGasAsync(assetProxyContract: string, isRegistered: boolean, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(assetProxyContract: string, isRegistered: boolean): string;\n+ callAsync(assetProxyContract: string, isRegistered: boolean, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ addOwner: {\n+ sendTransactionAsync(owner: string, txData?: Partial): Promise;\n+ estimateGasAsync(owner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(owner: string): string;\n+ callAsync(owner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ isConfirmed: {\n+ callAsync(transactionId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ changeTimeLock: {\n+ sendTransactionAsync(_secondsTimeLocked: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_secondsTimeLocked: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_secondsTimeLocked: BigNumber): string;\n+ callAsync(_secondsTimeLocked: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ isAssetProxyRegistered: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getConfirmationCount: {\n+ callAsync(transactionId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transactions: {\n+ callAsync(index_0: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<[string, BigNumber, string, boolean]>;\n+ };\n+ getOwners: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getTransactionIds: {\n+ callAsync(from: BigNumber, to: BigNumber, pending: boolean, executed: boolean, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getConfirmations: {\n+ callAsync(transactionId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transactionCount: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ changeRequirement: {\n+ sendTransactionAsync(_required: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_required: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_required: BigNumber): string;\n+ callAsync(_required: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ confirmTransaction: {\n+ sendTransactionAsync(transactionId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(transactionId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(transactionId: BigNumber): string;\n+ callAsync(transactionId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ submitTransaction: {\n+ sendTransactionAsync(destination: string, value: BigNumber, data: string, txData?: Partial): Promise;\n+ estimateGasAsync(destination: string, value: BigNumber, data: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(destination: string, value: BigNumber, data: string): string;\n+ callAsync(destination: string, value: BigNumber, data: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ confirmationTimes: {\n+ callAsync(index_0: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ MAX_OWNER_COUNT: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ required: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ replaceOwner: {\n+ sendTransactionAsync(owner: string, newOwner: string, txData?: Partial): Promise;\n+ estimateGasAsync(owner: string, newOwner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(owner: string, newOwner: string): string;\n+ callAsync(owner: string, newOwner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ executeTransaction: {\n+ sendTransactionAsync(transactionId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(transactionId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(transactionId: BigNumber): string;\n+ callAsync(transactionId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, _owners: string[], _assetProxyContracts: string[], _required: BigNumber, _secondsTimeLocked: BigNumber): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial, _owners: string[], _assetProxyContracts: string[], _required: BigNumber, _secondsTimeLocked: BigNumber): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=asset_proxy_owner.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "58428c5a5ee8bbedb2ceb65448e9ab54fb5ed5c0", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"asset_proxy_owner.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/asset_proxy_owner.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,wBAAwB,GAC9B,8CAA8C,GAC9C,2CAA2C,GAC3C,sCAAsC,GACtC,oCAAoC,GACpC,kCAAkC,GAClC,kCAAkC,GAClC,iCAAiC,GACjC,wCAAwC,GACxC,+BAA+B,GAC/B,qCAAqC,GACrC,oCAAoC,GACpC,yCAAyC,CAAC;AAEhD,oBAAY,qBAAqB;IAC7B,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;CAC1C;AAED,MAAM,WAAW,8CAA+C,SAAQ,cAAc;IAClF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,2CAA4C,SAAQ,cAAc;IAC/E,aAAa,EAAE,SAAS,CAAC;IACzB,gBAAgB,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,sCAAuC,SAAQ,cAAc;IAC1E,iBAAiB,EAAE,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,oCAAqC,SAAQ,cAAc;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAmC,SAAQ,cAAc;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAmC,SAAQ,cAAc;IACtE,aAAa,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,iCAAkC,SAAQ,cAAc;IACrE,aAAa,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,wCAAyC,SAAQ,cAAc;IAC5E,aAAa,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,+BAAgC,SAAQ,cAAc;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,qCAAsC,SAAQ,cAAc;IACzE,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oCAAqC,SAAQ,cAAc;IACxE,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yCAA0C,SAAQ,cAAc;IAC7E,QAAQ,EAAE,SAAS,CAAC;CACvB;AAMD,qBAAa,uBAAwB,SAAQ,YAAY;IAC9C,MAAM;;MA2BX;IACK,WAAW;;;;;MA2EhB;IACK,kBAAkB;;;;;MA2EvB;IACK,OAAO;;MA2BZ;IACK,aAAa;;MA6BlB;IACK,qCAAqC;;;;;MA2E1C;IACK,iBAAiB;;MAyBtB;IACK,mBAAmB;;MA6BxB;IACK,kBAAkB;;;;;MAoFvB;IACK,QAAQ;;;;;MA2Eb;IACK,WAAW;;MA2BhB;IACK,cAAc;;;;;MA2EnB;IACK,sBAAsB;;MA2B3B;IACK,oBAAoB;;MA2BzB;IACK,YAAY;;MA2BjB;IACK,SAAS;;MAyBd;IACK,iBAAiB;;MAiCtB;IACK,gBAAgB;;MA2BrB;IACK,gBAAgB;;MAyBrB;IACK,iBAAiB;;;;;MA2EtB;IACK,kBAAkB;;;;;MA2EvB;IACK,iBAAiB;;;;;MA6FtB;IACK,iBAAiB;;MA2BtB;IACK,eAAe;;MAyBpB;IACK,QAAQ;;MAyBb;IACK,YAAY;;;;;MAoFjB;IACK,kBAAkB;;;;;MA2EvB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,OAAO,EAAE,MAAM,EAAE,EACjB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,SAAS,GAClC,OAAO,CAAC,uBAAuB,CAAC;WAaf,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,OAAO,EAAE,MAAM,EAAE,EACjB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,SAAS,GAClC,OAAO,CAAC,uBAAuB,CAAC;gBAyCvB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "deaf4bbd1ca935029de610ba2a45e9a9634c54f3", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.js", + "status": "added", + "additions": 1445, + "deletions": 0, + "changes": 1445, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,1445 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+var __read = (this && this.__read) || function (o, n) {\n+ var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n+ if (!m) return o;\n+ var i = m.call(o), r, ar = [], e;\n+ try {\n+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n+ }\n+ catch (error) { e = { error: error }; }\n+ finally {\n+ try {\n+ if (r && !r.done && (m = i[\"return\"])) m.call(i);\n+ }\n+ finally { if (e) throw e.error; }\n+ }\n+ return ar;\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var AssetProxyOwnerEvents;\n+(function (AssetProxyOwnerEvents) {\n+ AssetProxyOwnerEvents[\"AssetProxyRegistration\"] = \"AssetProxyRegistration\";\n+ AssetProxyOwnerEvents[\"ConfirmationTimeSet\"] = \"ConfirmationTimeSet\";\n+ AssetProxyOwnerEvents[\"TimeLockChange\"] = \"TimeLockChange\";\n+ AssetProxyOwnerEvents[\"Confirmation\"] = \"Confirmation\";\n+ AssetProxyOwnerEvents[\"Revocation\"] = \"Revocation\";\n+ AssetProxyOwnerEvents[\"Submission\"] = \"Submission\";\n+ AssetProxyOwnerEvents[\"Execution\"] = \"Execution\";\n+ AssetProxyOwnerEvents[\"ExecutionFailure\"] = \"ExecutionFailure\";\n+ AssetProxyOwnerEvents[\"Deposit\"] = \"Deposit\";\n+ AssetProxyOwnerEvents[\"OwnerAddition\"] = \"OwnerAddition\";\n+ AssetProxyOwnerEvents[\"OwnerRemoval\"] = \"OwnerRemoval\";\n+ AssetProxyOwnerEvents[\"RequirementChange\"] = \"RequirementChange\";\n+})(AssetProxyOwnerEvents = exports.AssetProxyOwnerEvents || (exports.AssetProxyOwnerEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var AssetProxyOwnerContract = /** @class */ (function (_super) {\n+ __extends(AssetProxyOwnerContract, _super);\n+ function AssetProxyOwnerContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'AssetProxyOwner', abi, address, supportedProvider, txDefaults) || this;\n+ _this.owners = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('owners(uint256)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('owners(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.removeOwner = {\n+ sendTransactionAsync: function (owner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeOwner(address)', [owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.removeOwner.estimateGasAsync.bind(self, owner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (owner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeOwner(address)', [owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (owner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('removeOwner(address)', [owner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (owner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeOwner(address)', [owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('removeOwner(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.revokeConfirmation = {\n+ sendTransactionAsync: function (transactionId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('revokeConfirmation(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.revokeConfirmation.estimateGasAsync.bind(self, transactionId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (transactionId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('revokeConfirmation(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (transactionId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('revokeConfirmation(uint256)', [transactionId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (transactionId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('revokeConfirmation(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('revokeConfirmation(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.isOwner = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('isOwner(address)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('isOwner(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.confirmations = {\n+ callAsync: function (index_0, index_1, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('confirmations(uint256,address)', [index_0,\n+ index_1\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('confirmations(uint256,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.executeRemoveAuthorizedAddressAtIndex = {\n+ sendTransactionAsync: function (transactionId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('executeRemoveAuthorizedAddressAtIndex(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.executeRemoveAuthorizedAddressAtIndex.estimateGasAsync.bind(self, transactionId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (transactionId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('executeRemoveAuthorizedAddressAtIndex(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (transactionId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('executeRemoveAuthorizedAddressAtIndex(uint256)', [transactionId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (transactionId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('executeRemoveAuthorizedAddressAtIndex(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('executeRemoveAuthorizedAddressAtIndex(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.secondsTimeLocked = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('secondsTimeLocked()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('secondsTimeLocked()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getTransactionCount = {\n+ callAsync: function (pending, executed, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getTransactionCount(bool,bool)', [pending,\n+ executed\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getTransactionCount(bool,bool)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.registerAssetProxy = {\n+ sendTransactionAsync: function (assetProxyContract, isRegistered, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('registerAssetProxy(address,bool)', [assetProxyContract,\n+ isRegistered\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.registerAssetProxy.estimateGasAsync.bind(self, assetProxyContract, isRegistered))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (assetProxyContract, isRegistered, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('registerAssetProxy(address,bool)', [assetProxyContract,\n+ isRegistered\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (assetProxyContract, isRegistered) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('registerAssetProxy(address,bool)', [assetProxyContract,\n+ isRegistered\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (assetProxyContract, isRegistered, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('registerAssetProxy(address,bool)', [assetProxyContract,\n+ isRegistered\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('registerAssetProxy(address,bool)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.addOwner = {\n+ sendTransactionAsync: function (owner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addOwner(address)', [owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.addOwner.estimateGasAsync.bind(self, owner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (owner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addOwner(address)', [owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (owner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('addOwner(address)', [owner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (owner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addOwner(address)', [owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('addOwner(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.isConfirmed = {\n+ callAsync: function (transactionId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('isConfirmed(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('isConfirmed(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.changeTimeLock = {\n+ sendTransactionAsync: function (_secondsTimeLocked, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('changeTimeLock(uint256)', [_secondsTimeLocked\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.changeTimeLock.estimateGasAsync.bind(self, _secondsTimeLocked))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_secondsTimeLocked, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('changeTimeLock(uint256)', [_secondsTimeLocked\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_secondsTimeLocked) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('changeTimeLock(uint256)', [_secondsTimeLocked\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_secondsTimeLocked, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('changeTimeLock(uint256)', [_secondsTimeLocked\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('changeTimeLock(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.isAssetProxyRegistered = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('isAssetProxyRegistered(address)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('isAssetProxyRegistered(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getConfirmationCount = {\n+ callAsync: function (transactionId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getConfirmationCount(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getConfirmationCount(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transactions = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transactions(uint256)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transactions(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getOwners = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getOwners()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getOwners()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getTransactionIds = {\n+ callAsync: function (from, to, pending, executed, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getTransactionIds(uint256,uint256,bool,bool)', [from,\n+ to,\n+ pending,\n+ executed\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getTransactionIds(uint256,uint256,bool,bool)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getConfirmations = {\n+ callAsync: function (transactionId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getConfirmations(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getConfirmations(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transactionCount = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transactionCount()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transactionCount()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.changeRequirement = {\n+ sendTransactionAsync: function (_required, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('changeRequirement(uint256)', [_required\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.changeRequirement.estimateGasAsync.bind(self, _required))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_required, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('changeRequirement(uint256)', [_required\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_required) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('changeRequirement(uint256)', [_required\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_required, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('changeRequirement(uint256)', [_required\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('changeRequirement(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.confirmTransaction = {\n+ sendTransactionAsync: function (transactionId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('confirmTransaction(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.confirmTransaction.estimateGasAsync.bind(self, transactionId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (transactionId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('confirmTransaction(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (transactionId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('confirmTransaction(uint256)', [transactionId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (transactionId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('confirmTransaction(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('confirmTransaction(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.submitTransaction = {\n+ sendTransactionAsync: function (destination, value, data, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('submitTransaction(address,uint256,bytes)', [destination,\n+ value,\n+ data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.submitTransaction.estimateGasAsync.bind(self, destination, value, data))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (destination, value, data, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('submitTransaction(address,uint256,bytes)', [destination,\n+ value,\n+ data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (destination, value, data) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('submitTransaction(address,uint256,bytes)', [destination,\n+ value,\n+ data\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (destination, value, data, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('submitTransaction(address,uint256,bytes)', [destination,\n+ value,\n+ data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('submitTransaction(address,uint256,bytes)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.confirmationTimes = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('confirmationTimes(uint256)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('confirmationTimes(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.MAX_OWNER_COUNT = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('MAX_OWNER_COUNT()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('MAX_OWNER_COUNT()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.required = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('required()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('required()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.replaceOwner = {\n+ sendTransactionAsync: function (owner, newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('replaceOwner(address,address)', [owner,\n+ newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.replaceOwner.estimateGasAsync.bind(self, owner, newOwner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (owner, newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('replaceOwner(address,address)', [owner,\n+ newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (owner, newOwner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('replaceOwner(address,address)', [owner,\n+ newOwner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (owner, newOwner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('replaceOwner(address,address)', [owner,\n+ newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('replaceOwner(address,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.executeTransaction = {\n+ sendTransactionAsync: function (transactionId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('executeTransaction(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.executeTransaction.estimateGasAsync.bind(self, transactionId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (transactionId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('executeTransaction(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (transactionId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('executeTransaction(uint256)', [transactionId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (transactionId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('executeTransaction(uint256)', [transactionId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('executeTransaction(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ AssetProxyOwnerContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults, _owners, _assetProxyContracts, _required, _secondsTimeLocked) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, AssetProxyOwnerContract.deployAsync(bytecode, abi, provider, txDefaults, _owners, _assetProxyContracts, _required, _secondsTimeLocked)];\n+ });\n+ });\n+ };\n+ AssetProxyOwnerContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults, _owners, _assetProxyContracts, _required, _secondsTimeLocked) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_b) {\n+ switch (_b.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ _a = __read(base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [_owners,\n+ _assetProxyContracts,\n+ _required,\n+ _secondsTimeLocked\n+ ], base_contract_1.BaseContract._bigNumberToString), 4), _owners = _a[0], _assetProxyContracts = _a[1], _required = _a[2], _secondsTimeLocked = _a[3];\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, [_owners,\n+ _assetProxyContracts,\n+ _required,\n+ _secondsTimeLocked\n+ ]);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _b.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _b.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _b.sent();\n+ utils_1.logUtils.log(\"AssetProxyOwner successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new AssetProxyOwnerContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [_owners,\n+ _assetProxyContracts,\n+ _required,\n+ _secondsTimeLocked\n+ ];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return AssetProxyOwnerContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.AssetProxyOwnerContract = AssetProxyOwnerContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=asset_proxy_owner.js.map\n\\ No newline at end of file" + }, + { + "sha": "9d796719175f5703e76872406a30568b5c5f1229", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/asset_proxy_owner.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"asset_proxy_owner.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/asset_proxy_owner.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "ff28484cf0d4f3a402e9308ad812cbc5e620b1ae", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.d.ts", + "status": "added", + "additions": 85, + "deletions": 0, + "changes": 85, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,85 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type DummyERC20TokenEventArgs = DummyERC20TokenTransferEventArgs | DummyERC20TokenApprovalEventArgs;\n+export declare enum DummyERC20TokenEvents {\n+ Transfer = \"Transfer\",\n+ Approval = \"Approval\"\n+}\n+export interface DummyERC20TokenTransferEventArgs extends DecodedLogArgs {\n+ _from: string;\n+ _to: string;\n+ _value: BigNumber;\n+}\n+export interface DummyERC20TokenApprovalEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _spender: string;\n+ _value: BigNumber;\n+}\n+export declare class DummyERC20TokenContract extends BaseContract {\n+ name: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ approve: {\n+ sendTransactionAsync(_spender: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_spender: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_spender: string, _value: BigNumber): string;\n+ callAsync(_spender: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ totalSupply: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferFrom: {\n+ sendTransactionAsync(_from: string, _to: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _value: BigNumber): string;\n+ callAsync(_from: string, _to: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ decimals: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ balanceOf: {\n+ callAsync(_owner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ owner: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ symbol: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ mint: {\n+ sendTransactionAsync(_value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_value: BigNumber): string;\n+ callAsync(_value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transfer: {\n+ sendTransactionAsync(_to: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_to: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_to: string, _value: BigNumber): string;\n+ callAsync(_to: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ allowance: {\n+ callAsync(_owner: string, _spender: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ setBalance: {\n+ sendTransactionAsync(_target: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_target: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_target: string, _value: BigNumber): string;\n+ callAsync(_target: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferOwnership: {\n+ sendTransactionAsync(newOwner: string, txData?: Partial): Promise;\n+ estimateGasAsync(newOwner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(newOwner: string): string;\n+ callAsync(newOwner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ MAX_MINT_AMOUNT: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, _name: string, _symbol: string, _decimals: BigNumber, _totalSupply: BigNumber): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial, _name: string, _symbol: string, _decimals: BigNumber, _totalSupply: BigNumber): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=dummy_erc20_token.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "e11e773f837176ec3d1158a2399eb08cb1716ced", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"dummy_erc20_token.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/dummy_erc20_token.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,wBAAwB,GAC9B,gCAAgC,GAChC,gCAAgC,CAAC;AAEvC,oBAAY,qBAAqB;IAC7B,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACxB;AAED,MAAM,WAAW,gCAAiC,SAAQ,cAAc;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,gCAAiC,SAAQ,cAAc;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACrB;AAMD,qBAAa,uBAAwB,SAAQ,YAAY;IAC9C,IAAI;;MAyBT;IACK,OAAO;;;;;MAoFZ;IACK,WAAW;;MAyBhB;IACK,YAAY;;;;;MA6FjB;IACK,QAAQ;;MAyBb;IACK,SAAS;;MA2Bd;IACK,KAAK;;MAyBV;IACK,MAAM;;MAyBX;IACK,IAAI;;;;;MA2ET;IACK,QAAQ;;;;;MAoFb;IACK,SAAS;;MA6Bd;IACK,UAAU;;;;;MAoFf;IACK,iBAAiB;;;;;MA2EtB;IACK,eAAe;;MAyBpB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,SAAS,GAC5B,OAAO,CAAC,uBAAuB,CAAC;WAaf,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,SAAS,GAC5B,OAAO,CAAC,uBAAuB,CAAC;gBAyCvB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "bb4e3857e51bf86a3cd74390cd1314168fbd05e1", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.js", + "status": "added", + "additions": 843, + "deletions": 0, + "changes": 843, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,843 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+var __read = (this && this.__read) || function (o, n) {\n+ var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n+ if (!m) return o;\n+ var i = m.call(o), r, ar = [], e;\n+ try {\n+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n+ }\n+ catch (error) { e = { error: error }; }\n+ finally {\n+ try {\n+ if (r && !r.done && (m = i[\"return\"])) m.call(i);\n+ }\n+ finally { if (e) throw e.error; }\n+ }\n+ return ar;\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var DummyERC20TokenEvents;\n+(function (DummyERC20TokenEvents) {\n+ DummyERC20TokenEvents[\"Transfer\"] = \"Transfer\";\n+ DummyERC20TokenEvents[\"Approval\"] = \"Approval\";\n+})(DummyERC20TokenEvents = exports.DummyERC20TokenEvents || (exports.DummyERC20TokenEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var DummyERC20TokenContract = /** @class */ (function (_super) {\n+ __extends(DummyERC20TokenContract, _super);\n+ function DummyERC20TokenContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'DummyERC20Token', abi, address, supportedProvider, txDefaults) || this;\n+ _this.name = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('name()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('name()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.approve = {\n+ sendTransactionAsync: function (_spender, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.approve.estimateGasAsync.bind(self, _spender, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_spender, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_spender, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_spender, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.totalSupply = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('totalSupply()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('totalSupply()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferFrom = {\n+ sendTransactionAsync: function (_from, _to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferFrom.estimateGasAsync.bind(self, _from, _to, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.decimals = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('decimals()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('decimals()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.balanceOf = {\n+ callAsync: function (_owner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('balanceOf(address)', [_owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('balanceOf(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.owner = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('owner()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('owner()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.symbol = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('symbol()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('symbol()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.mint = {\n+ sendTransactionAsync: function (_value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('mint(uint256)', [_value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.mint.estimateGasAsync.bind(self, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('mint(uint256)', [_value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('mint(uint256)', [_value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('mint(uint256)', [_value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('mint(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transfer = {\n+ sendTransactionAsync: function (_to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transfer.estimateGasAsync.bind(self, _to, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_to, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_to, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transfer(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.allowance = {\n+ callAsync: function (_owner, _spender, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('allowance(address,address)', [_owner,\n+ _spender\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('allowance(address,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.setBalance = {\n+ sendTransactionAsync: function (_target, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setBalance(address,uint256)', [_target,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.setBalance.estimateGasAsync.bind(self, _target, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_target, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setBalance(address,uint256)', [_target,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_target, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('setBalance(address,uint256)', [_target,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_target, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setBalance(address,uint256)', [_target,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('setBalance(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferOwnership = {\n+ sendTransactionAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferOwnership.estimateGasAsync.bind(self, newOwner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (newOwner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (newOwner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferOwnership(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.MAX_MINT_AMOUNT = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('MAX_MINT_AMOUNT()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('MAX_MINT_AMOUNT()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ DummyERC20TokenContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults, _name, _symbol, _decimals, _totalSupply) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, DummyERC20TokenContract.deployAsync(bytecode, abi, provider, txDefaults, _name, _symbol, _decimals, _totalSupply)];\n+ });\n+ });\n+ };\n+ DummyERC20TokenContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults, _name, _symbol, _decimals, _totalSupply) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_b) {\n+ switch (_b.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ _a = __read(base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [_name,\n+ _symbol,\n+ _decimals,\n+ _totalSupply\n+ ], base_contract_1.BaseContract._bigNumberToString), 4), _name = _a[0], _symbol = _a[1], _decimals = _a[2], _totalSupply = _a[3];\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, [_name,\n+ _symbol,\n+ _decimals,\n+ _totalSupply\n+ ]);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _b.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _b.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _b.sent();\n+ utils_1.logUtils.log(\"DummyERC20Token successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new DummyERC20TokenContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [_name,\n+ _symbol,\n+ _decimals,\n+ _totalSupply\n+ ];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return DummyERC20TokenContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.DummyERC20TokenContract = DummyERC20TokenContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=dummy_erc20_token.js.map\n\\ No newline at end of file" + }, + { + "sha": "ccf84738e65bb9b7520b2b69a0f04206808c3106", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc20_token.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"dummy_erc20_token.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/dummy_erc20_token.ts\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uGAAuG;AACvG,oCAAoC;AACpC,mCAAmC;AACnC,mDAAiD;AAEjD,mCAA2E;AAE3E,iDAA+C;AAC/C,+BAAiC;AACjC,0BAA4B;AAO5B,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC7B,8CAAqB,CAAA;IACrB,8CAAqB,CAAA;AACzB,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC;AAeD,0BAA0B;AAC1B,2CAA2C;AAC3C,sCAAsC;AACtC;IAA6C,2CAAY;IAmxBrD,iCAAY,GAAgB,EAAE,OAAe,EAAE,iBAAoC,EAAE,UAA4B;QAAjH,YACI,kBAAM,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,SAExE;QArxBM,UAAI,GAAG;YACJ,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gCACjC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gCAE9C,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,aAAO,GAAG;YACP,oBAAoB,EAA1B,UACI,QAAgB,EAChB,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,CAAC,QAAQ;oCAC7F,MAAM;iCACL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAC9B,IAAI,EACJ,QAAQ,EACR,MAAM,CACT,CACJ,EAAA;;gCAZK,kBAAkB,GAAG,SAY1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,QAAgB,EAChB,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,CAAC,QAAQ;oCAC7F,MAAM;iCACL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,QAAgB,EAChB,MAAiB;gBAEjB,IAAM,IAAI,GAAG,IAAsC,CAAC;gBACpD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,CAAC,QAAQ;oBAC3G,MAAM;iBACL,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,QAAgB,EAChB,MAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,CAAC,QAAQ;oCACzF,MAAM;iCACL,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;gCAEhE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,iBAAW,GAAG;YACX,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gCACxC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;gCAErD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,kBAAY,GAAG;YACZ,oBAAoB,EAA1B,UACI,KAAa,EACb,GAAW,EACX,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,CAAC,KAAK;oCACvG,GAAG;oCACH,MAAM;iCACL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CACnC,IAAI,EACJ,KAAK,EACL,GAAG,EACH,MAAM,CACT,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,KAAa,EACb,GAAW,EACX,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,CAAC,KAAK;oCACvG,GAAG;oCACH,MAAM;iCACL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,KAAa,EACb,GAAW,EACX,MAAiB;gBAEjB,IAAM,IAAI,GAAG,IAAsC,CAAC;gBACpD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,CAAC,KAAK;oBACrH,GAAG;oBACH,MAAM;iBACL,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,KAAa,EACb,GAAW,EACX,MAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,CAAC,KAAK;oCACnG,GAAG;oCACH,MAAM;iCACL,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,uCAAuC,CAAC,CAAC;gCAE7E,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,cAAQ,GAAG;YACR,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gCACrC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gCAElD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,eAAS,GAAG;YACT,SAAS,EAAf,UACI,MAAc,EACd,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,CAAC,MAAM;iCAChF,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;gCAE1D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,WAAK,GAAG;YACL,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gCAClC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gCAE/C,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,YAAM,GAAG;YACN,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gCACnC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gCAEhD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,UAAI,GAAG;YACJ,oBAAoB,EAA1B,UACI,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC,MAAM;iCAC/E,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC3B,IAAI,EACJ,MAAM,CACT,CACJ,EAAA;;gCAXK,kBAAkB,GAAG,SAW1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC,MAAM;iCAC/E,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAAiB;gBAEjB,IAAM,IAAI,GAAG,IAAsC,CAAC;gBACpD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC,MAAM;iBAC7F,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC,MAAM;iCAC3E,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;gCAErD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,cAAQ,GAAG;YACR,oBAAoB,EAA1B,UACI,GAAW,EACX,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,GAAG;oCACzF,MAAM;iCACL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAC/B,IAAI,EACJ,GAAG,EACH,MAAM,CACT,CACJ,EAAA;;gCAZK,kBAAkB,GAAG,SAY1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,GAAW,EACX,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,GAAG;oCACzF,MAAM;iCACL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,GAAW,EACX,MAAiB;gBAEjB,IAAM,IAAI,GAAG,IAAsC,CAAC;gBACpD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,GAAG;oBACvG,MAAM;iBACL,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,GAAW,EACX,MAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,GAAG;oCACrF,MAAM;iCACL,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;gCAEjE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,eAAS,GAAG;YACT,SAAS,EAAf,UACI,MAAc,EACd,QAAgB,EAChB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,MAAM;oCACzF,QAAQ;iCACP,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;gCAElE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,gBAAU,GAAG;YACV,oBAAoB,EAA1B,UACI,OAAe,EACf,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,OAAO;oCAC/F,MAAM;iCACL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CACjC,IAAI,EACJ,OAAO,EACP,MAAM,CACT,CACJ,EAAA;;gCAZK,kBAAkB,GAAG,SAY1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,OAAe,EACf,MAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,OAAO;oCAC/F,MAAM;iCACL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,OAAe,EACf,MAAiB;gBAEjB,IAAM,IAAI,GAAG,IAAsC,CAAC;gBACpD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,OAAO;oBAC7G,MAAM;iBACL,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,OAAe,EACf,MAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,OAAO;oCAC3F,MAAM;iCACL,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;gCAEnE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,uBAAiB,GAAG;YACjB,oBAAoB,EAA1B,UACI,QAAgB,EAChB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC9F,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CACxC,IAAI,EACJ,QAAQ,CACX,CACJ,EAAA;;gCAXK,kBAAkB,GAAG,SAW1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,QAAgB,EAChB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC9F,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,QAAgB;gBAEhB,IAAM,IAAI,GAAG,IAAsC,CAAC;gBACpD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iBAC5G,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,QAAgB,EAChB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC1F,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;gCAElE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,qBAAe,GAAG;YACf,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAsC,CAAC;gCAC9C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;gCAC5C,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;gCAEzD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QA0EE,kBAAU,CAAC,OAAO,CAAC,KAAI,EAAE,CAAC,gCAAgC,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;;IACnG,CAAC;IA1EmB,iDAAyB,GAA7C,UACI,QAAmD,EACnD,iBAAoC,EACpC,UAA2B,EACvB,KAAa,EACb,OAAe,EACf,SAAoB,EACpB,YAAuB;;;;gBAE3B,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;oBACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;iBACrE;gBACK,QAAQ,GAAG,qBAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;gBAC/D,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvD,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC;gBACxC,sBAAO,uBAAuB,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAC7F,OAAO,EACP,SAAS,EACT,YAAY,CACX,EAAC;;;KACG;IACmB,mCAAW,GAA/B,UACI,QAAgB,EAChB,GAAgB,EAChB,iBAAoC,EACpC,UAA2B,EACvB,KAAa,EACb,OAAe,EACf,SAAoB,EACpB,YAAuB;;;;;;wBAErB,QAAQ,GAAG,qBAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;wBAC/D,cAAc,GAAG,4BAAY,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;wBAC/D;;;;+EAYC,EAZA,aAAK,EACd,eAAO,EACP,iBAAS,EACT,oBAAY,CASF;wBACI,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACxC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC;wBAClC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK;4BACzD,OAAO;4BACP,SAAS;4BACT,YAAY;yBACX,CAAC,CAAC;wBACW,WAAW,GAAG,IAAI,0BAAW,CAAC,QAAQ,CAAC,CAAC;wBACnB,qBAAM,4BAAY,CAAC,2BAA2B,CACrE,EAAC,IAAI,EAAE,MAAM,EAAC,EACd,UAAU,EACV,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CACjD,EAAA;;wBAJK,kBAAkB,GAAG,SAI1B;wBACc,qBAAM,WAAW,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;wBAAnE,MAAM,GAAG,SAA0D;wBACzE,gBAAQ,CAAC,GAAG,CAAC,sBAAoB,MAAQ,CAAC,CAAC;wBACzB,qBAAM,WAAW,CAAC,4BAA4B,CAAC,MAAM,CAAC,EAAA;;wBAAlE,SAAS,GAAG,SAAsD;wBACxE,gBAAQ,CAAC,GAAG,CAAC,8CAA4C,SAAS,CAAC,eAAiB,CAAC,CAAC;wBAChF,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,SAAS,CAAC,eAAyB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;wBACrH,gBAAgB,CAAC,eAAe,GAAG,CAAC,KAAK;4BACjD,OAAO;4BACP,SAAS;4BACT,YAAY;yBACX,CAAC;wBACM,sBAAO,gBAAgB,EAAC;;;;KAC3B;IAKL,8BAAC;AAAD,CAAC,AAvxBD,CAA6C,4BAAY,GAuxBxD,CAAC,qCAAqC;AAvxB1B,0DAAuB;AAwxBpC,kCAAkC\"}\n\\ No newline at end of file" + }, + { + "sha": "0c9f3baa8ef65ff4159f9916c463246009793a10", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.d.ts", + "status": "added", + "additions": 100, + "deletions": 0, + "changes": 100, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,100 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type DummyERC721TokenEventArgs = DummyERC721TokenTransferEventArgs | DummyERC721TokenApprovalEventArgs | DummyERC721TokenApprovalForAllEventArgs;\n+export declare enum DummyERC721TokenEvents {\n+ Transfer = \"Transfer\",\n+ Approval = \"Approval\",\n+ ApprovalForAll = \"ApprovalForAll\"\n+}\n+export interface DummyERC721TokenTransferEventArgs extends DecodedLogArgs {\n+ _from: string;\n+ _to: string;\n+ _tokenId: BigNumber;\n+}\n+export interface DummyERC721TokenApprovalEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _approved: string;\n+ _tokenId: BigNumber;\n+}\n+export interface DummyERC721TokenApprovalForAllEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _operator: string;\n+ _approved: boolean;\n+}\n+export declare class DummyERC721TokenContract extends BaseContract {\n+ name: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getApproved: {\n+ callAsync(_tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ approve: {\n+ sendTransactionAsync(_approved: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_approved: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_approved: string, _tokenId: BigNumber): string;\n+ callAsync(_approved: string, _tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferFrom: {\n+ sendTransactionAsync(_from: string, _to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _tokenId: BigNumber): string;\n+ callAsync(_from: string, _to: string, _tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ mint: {\n+ sendTransactionAsync(_to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_to: string, _tokenId: BigNumber): string;\n+ callAsync(_to: string, _tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ safeTransferFrom1: {\n+ sendTransactionAsync(_from: string, _to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _tokenId: BigNumber): string;\n+ callAsync(_from: string, _to: string, _tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ ownerOf: {\n+ callAsync(_tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ balanceOf: {\n+ callAsync(_owner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ owner: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ symbol: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ burn: {\n+ sendTransactionAsync(_owner: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_owner: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_owner: string, _tokenId: BigNumber): string;\n+ callAsync(_owner: string, _tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ setApprovalForAll: {\n+ sendTransactionAsync(_operator: string, _approved: boolean, txData?: Partial): Promise;\n+ estimateGasAsync(_operator: string, _approved: boolean, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_operator: string, _approved: boolean): string;\n+ callAsync(_operator: string, _approved: boolean, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ safeTransferFrom2: {\n+ sendTransactionAsync(_from: string, _to: string, _tokenId: BigNumber, _data: string, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _tokenId: BigNumber, _data: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _tokenId: BigNumber, _data: string): string;\n+ callAsync(_from: string, _to: string, _tokenId: BigNumber, _data: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ isApprovedForAll: {\n+ callAsync(_owner: string, _operator: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferOwnership: {\n+ sendTransactionAsync(newOwner: string, txData?: Partial): Promise;\n+ estimateGasAsync(newOwner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(newOwner: string): string;\n+ callAsync(newOwner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, _name: string, _symbol: string): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial, _name: string, _symbol: string): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=dummy_erc721_token.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "134e1107e302a6392449a8233eb09f9f704c4e6d", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"dummy_erc721_token.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/dummy_erc721_token.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,yBAAyB,GAC/B,iCAAiC,GACjC,iCAAiC,GACjC,uCAAuC,CAAC;AAE9C,oBAAY,sBAAsB;IAC9B,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,cAAc,mBAAmB;CACpC;AAED,MAAM,WAAW,iCAAkC,SAAQ,cAAc;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,iCAAkC,SAAQ,cAAc;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,uCAAwC,SAAQ,cAAc;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACtB;AAMD,qBAAa,wBAAyB,SAAQ,YAAY;IAC/C,IAAI;;MAyBT;IACK,WAAW;;MA2BhB;IACK,OAAO;;;;;MAoFZ;IACK,YAAY;;;;;MA6FjB;IACK,IAAI;;;;;MAoFT;IACK,iBAAiB;;;;;MA6FtB;IACK,OAAO;;MA2BZ;IACK,SAAS;;MA2Bd;IACK,KAAK;;MAyBV;IACK,MAAM;;MAyBX;IACK,IAAI;;;;;MAoFT;IACK,iBAAiB;;;;;MAoFtB;IACK,iBAAiB;;;;;MAsGtB;IACK,gBAAgB;;MA6BrB;IACK,iBAAiB;;;;;MA2EtB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACpB,OAAO,CAAC,wBAAwB,CAAC;WAWhB,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACpB,OAAO,CAAC,wBAAwB,CAAC;gBAiCxB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "4c040e84e8c03672958c5d22f9e3fd22366c44c2", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.js", + "status": "added", + "additions": 988, + "deletions": 0, + "changes": 988, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,988 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+var __read = (this && this.__read) || function (o, n) {\n+ var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n+ if (!m) return o;\n+ var i = m.call(o), r, ar = [], e;\n+ try {\n+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n+ }\n+ catch (error) { e = { error: error }; }\n+ finally {\n+ try {\n+ if (r && !r.done && (m = i[\"return\"])) m.call(i);\n+ }\n+ finally { if (e) throw e.error; }\n+ }\n+ return ar;\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var DummyERC721TokenEvents;\n+(function (DummyERC721TokenEvents) {\n+ DummyERC721TokenEvents[\"Transfer\"] = \"Transfer\";\n+ DummyERC721TokenEvents[\"Approval\"] = \"Approval\";\n+ DummyERC721TokenEvents[\"ApprovalForAll\"] = \"ApprovalForAll\";\n+})(DummyERC721TokenEvents = exports.DummyERC721TokenEvents || (exports.DummyERC721TokenEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var DummyERC721TokenContract = /** @class */ (function (_super) {\n+ __extends(DummyERC721TokenContract, _super);\n+ function DummyERC721TokenContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'DummyERC721Token', abi, address, supportedProvider, txDefaults) || this;\n+ _this.name = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('name()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('name()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getApproved = {\n+ callAsync: function (_tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getApproved(uint256)', [_tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getApproved(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.approve = {\n+ sendTransactionAsync: function (_approved, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_approved,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.approve.estimateGasAsync.bind(self, _approved, _tokenId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_approved, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_approved,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_approved, _tokenId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [_approved,\n+ _tokenId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_approved, _tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_approved,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferFrom = {\n+ sendTransactionAsync: function (_from, _to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferFrom.estimateGasAsync.bind(self, _from, _to, _tokenId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _tokenId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.mint = {\n+ sendTransactionAsync: function (_to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('mint(address,uint256)', [_to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.mint.estimateGasAsync.bind(self, _to, _tokenId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('mint(address,uint256)', [_to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_to, _tokenId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('mint(address,uint256)', [_to,\n+ _tokenId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_to, _tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('mint(address,uint256)', [_to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('mint(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.safeTransferFrom1 = {\n+ sendTransactionAsync: function (_from, _to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.safeTransferFrom1.estimateGasAsync.bind(self, _from, _to, _tokenId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _tokenId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('safeTransferFrom(address,address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.ownerOf = {\n+ callAsync: function (_tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('ownerOf(uint256)', [_tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('ownerOf(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.balanceOf = {\n+ callAsync: function (_owner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('balanceOf(address)', [_owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('balanceOf(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.owner = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('owner()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('owner()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.symbol = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('symbol()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('symbol()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.burn = {\n+ sendTransactionAsync: function (_owner, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('burn(address,uint256)', [_owner,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.burn.estimateGasAsync.bind(self, _owner, _tokenId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_owner, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('burn(address,uint256)', [_owner,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_owner, _tokenId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('burn(address,uint256)', [_owner,\n+ _tokenId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_owner, _tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('burn(address,uint256)', [_owner,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('burn(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.setApprovalForAll = {\n+ sendTransactionAsync: function (_operator, _approved, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [_operator,\n+ _approved\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.setApprovalForAll.estimateGasAsync.bind(self, _operator, _approved))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_operator, _approved, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [_operator,\n+ _approved\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_operator, _approved) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [_operator,\n+ _approved\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_operator, _approved, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [_operator,\n+ _approved\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('setApprovalForAll(address,bool)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.safeTransferFrom2 = {\n+ sendTransactionAsync: function (_from, _to, _tokenId, _data, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [_from,\n+ _to,\n+ _tokenId,\n+ _data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.safeTransferFrom2.estimateGasAsync.bind(self, _from, _to, _tokenId, _data))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _tokenId, _data, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [_from,\n+ _to,\n+ _tokenId,\n+ _data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _tokenId, _data) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [_from,\n+ _to,\n+ _tokenId,\n+ _data\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _tokenId, _data, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [_from,\n+ _to,\n+ _tokenId,\n+ _data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('safeTransferFrom(address,address,uint256,bytes)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.isApprovedForAll = {\n+ callAsync: function (_owner, _operator, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('isApprovedForAll(address,address)', [_owner,\n+ _operator\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('isApprovedForAll(address,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferOwnership = {\n+ sendTransactionAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferOwnership.estimateGasAsync.bind(self, newOwner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (newOwner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (newOwner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferOwnership(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ DummyERC721TokenContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults, _name, _symbol) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, DummyERC721TokenContract.deployAsync(bytecode, abi, provider, txDefaults, _name, _symbol)];\n+ });\n+ });\n+ };\n+ DummyERC721TokenContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults, _name, _symbol) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_b) {\n+ switch (_b.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ _a = __read(base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [_name,\n+ _symbol\n+ ], base_contract_1.BaseContract._bigNumberToString), 2), _name = _a[0], _symbol = _a[1];\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, [_name,\n+ _symbol\n+ ]);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _b.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _b.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _b.sent();\n+ utils_1.logUtils.log(\"DummyERC721Token successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new DummyERC721TokenContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [_name,\n+ _symbol\n+ ];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return DummyERC721TokenContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.DummyERC721TokenContract = DummyERC721TokenContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=dummy_erc721_token.js.map\n\\ No newline at end of file" + }, + { + "sha": "d0b0eff0a07d9fe790551b5b733adb8524df3906", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dummy_erc721_token.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"dummy_erc721_token.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/dummy_erc721_token.ts\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uGAAuG;AACvG,oCAAoC;AACpC,mCAAmC;AACnC,mDAAiD;AAEjD,mCAA2E;AAE3E,iDAA+C;AAC/C,+BAAiC;AACjC,0BAA4B;AAQ5B,IAAY,sBAIX;AAJD,WAAY,sBAAsB;IAC9B,+CAAqB,CAAA;IACrB,+CAAqB,CAAA;IACrB,2DAAiC,CAAA;AACrC,CAAC,EAJW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAIjC;AAqBD,0BAA0B;AAC1B,2CAA2C;AAC3C,sCAAsC;AACtC;IAA8C,4CAAY;IA67BtD,kCAAY,GAAgB,EAAE,OAAe,EAAE,iBAAoC,EAAE,UAA4B;QAAjH,YACI,kBAAM,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,SAEzE;QA/7BM,UAAI,GAAG;YACJ,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gCACjC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gCAE9C,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,iBAAW,GAAG;YACX,SAAS,EAAf,UACI,QAAmB,EACnB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,CAAC,QAAQ;iCACpF,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;gCAE5D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,aAAO,GAAG;YACP,oBAAoB,EAA1B,UACI,SAAiB,EACjB,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,CAAC,SAAS;oCAC9F,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAC9B,IAAI,EACJ,SAAS,EACT,QAAQ,CACX,CACJ,EAAA;;gCAZK,kBAAkB,GAAG,SAY1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,SAAiB,EACjB,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,CAAC,SAAS;oCAC9F,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,SAAiB,EACjB,QAAmB;gBAEnB,IAAM,IAAI,GAAG,IAAuC,CAAC;gBACrD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,CAAC,SAAS;oBAC5G,QAAQ;iBACP,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,SAAiB,EACjB,QAAmB,EACnB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,CAAC,SAAS;oCAC1F,QAAQ;iCACP,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;gCAEhE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,kBAAY,GAAG;YACZ,oBAAoB,EAA1B,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,CAAC,KAAK;oCACvG,GAAG;oCACH,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CACnC,IAAI,EACJ,KAAK,EACL,GAAG,EACH,QAAQ,CACX,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,CAAC,KAAK;oCACvG,GAAG;oCACH,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,KAAa,EACb,GAAW,EACX,QAAmB;gBAEnB,IAAM,IAAI,GAAG,IAAuC,CAAC;gBACrD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,CAAC,KAAK;oBACrH,GAAG;oBACH,QAAQ;iBACP,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,CAAC,KAAK;oCACnG,GAAG;oCACH,QAAQ;iCACP,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,uCAAuC,CAAC,CAAC;gCAE7E,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,UAAI,GAAG;YACJ,oBAAoB,EAA1B,UACI,GAAW,EACX,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,GAAG;oCACrF,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC3B,IAAI,EACJ,GAAG,EACH,QAAQ,CACX,CACJ,EAAA;;gCAZK,kBAAkB,GAAG,SAY1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,GAAW,EACX,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,GAAG;oCACrF,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,GAAW,EACX,QAAmB;gBAEnB,IAAM,IAAI,GAAG,IAAuC,CAAC;gBACrD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,GAAG;oBACnG,QAAQ;iBACP,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,GAAW,EACX,QAAmB,EACnB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,GAAG;oCACjF,QAAQ;iCACP,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;gCAE7D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,uBAAiB,GAAG;YACjB,oBAAoB,EAA1B,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2CAA2C,EAAE,CAAC,KAAK;oCAC3G,GAAG;oCACH,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CACxC,IAAI,EACJ,KAAK,EACL,GAAG,EACH,QAAQ,CACX,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2CAA2C,EAAE,CAAC,KAAK;oCAC3G,GAAG;oCACH,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,KAAa,EACb,GAAW,EACX,QAAmB;gBAEnB,IAAM,IAAI,GAAG,IAAuC,CAAC;gBACrD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,2CAA2C,EAAE,CAAC,KAAK;oBACzH,GAAG;oBACH,QAAQ;iBACP,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2CAA2C,EAAE,CAAC,KAAK;oCACvG,GAAG;oCACH,QAAQ;iCACP,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,2CAA2C,CAAC,CAAC;gCAEjF,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,aAAO,GAAG;YACP,SAAS,EAAf,UACI,QAAmB,EACnB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC,QAAQ;iCAChF,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;gCAExD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,eAAS,GAAG;YACT,SAAS,EAAf,UACI,MAAc,EACd,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,CAAC,MAAM;iCAChF,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;gCAE1D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,WAAK,GAAG;YACL,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gCAClC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gCAE/C,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,YAAM,GAAG;YACN,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gCACnC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gCAEhD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,UAAI,GAAG;YACJ,oBAAoB,EAA1B,UACI,MAAc,EACd,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,MAAM;oCACxF,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC3B,IAAI,EACJ,MAAM,EACN,QAAQ,CACX,CACJ,EAAA;;gCAZK,kBAAkB,GAAG,SAY1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAAc,EACd,QAAmB,EACnB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,MAAM;oCACxF,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAAc,EACd,QAAmB;gBAEnB,IAAM,IAAI,GAAG,IAAuC,CAAC;gBACrD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,MAAM;oBACtG,QAAQ;iBACP,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAAc,EACd,QAAmB,EACnB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,MAAM;oCACpF,QAAQ;iCACP,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;gCAE7D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,uBAAiB,GAAG;YACjB,oBAAoB,EAA1B,UACI,SAAiB,EACjB,SAAkB,EAClB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iCAAiC,EAAE,CAAC,SAAS;oCACrG,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CACxC,IAAI,EACJ,SAAS,EACT,SAAS,CACZ,CACJ,EAAA;;gCAZK,kBAAkB,GAAG,SAY1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,SAAiB,EACjB,SAAkB,EAClB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iCAAiC,EAAE,CAAC,SAAS;oCACrG,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,SAAiB,EACjB,SAAkB;gBAElB,IAAM,IAAI,GAAG,IAAuC,CAAC;gBACrD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,iCAAiC,EAAE,CAAC,SAAS;oBACnH,SAAS;iBACR,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,SAAiB,EACjB,SAAkB,EAClB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iCAAiC,EAAE,CAAC,SAAS;oCACjG,SAAS;iCACR,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,CAAC;gCAEvE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,uBAAiB,GAAG;YACjB,oBAAoB,EAA1B,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,KAAa,EACb,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iDAAiD,EAAE,CAAC,KAAK;oCACjH,GAAG;oCACH,QAAQ;oCACR,KAAK;iCACJ,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CACxC,IAAI,EACJ,KAAK,EACL,GAAG,EACH,QAAQ,EACR,KAAK,CACR,CACJ,EAAA;;gCAdK,kBAAkB,GAAG,SAc1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,KAAa,EACb,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iDAAiD,EAAE,CAAC,KAAK;oCACjH,GAAG;oCACH,QAAQ;oCACR,KAAK;iCACJ,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,KAAa;gBAEb,IAAM,IAAI,GAAG,IAAuC,CAAC;gBACrD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,iDAAiD,EAAE,CAAC,KAAK;oBAC/H,GAAG;oBACH,QAAQ;oBACR,KAAK;iBACJ,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,KAAa,EACb,GAAW,EACX,QAAmB,EACnB,KAAa,EACb,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iDAAiD,EAAE,CAAC,KAAK;oCAC7G,GAAG;oCACH,QAAQ;oCACR,KAAK;iCACJ,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,iDAAiD,CAAC,CAAC;gCAEvF,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,sBAAgB,GAAG;YAChB,SAAS,EAAf,UACI,MAAc,EACd,SAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,mCAAmC,EAAE,CAAC,MAAM;oCAChG,SAAS;iCACR,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC,CAAC;gCAEzE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,uBAAiB,GAAG;YACjB,oBAAoB,EAA1B,UACI,QAAgB,EAChB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC9F,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CACxC,IAAI,EACJ,QAAQ,CACX,CACJ,EAAA;;gCAXK,kBAAkB,GAAG,SAW1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,QAAgB,EAChB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC9F,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,QAAgB;gBAEhB,IAAM,IAAI,GAAG,IAAuC,CAAC;gBACrD,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iBAC5G,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,QAAgB,EAChB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAAuC,CAAC;gCAC/C,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC1F,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;gCAElE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QA4DE,kBAAU,CAAC,OAAO,CAAC,KAAI,EAAE,CAAC,gCAAgC,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;;IACnG,CAAC;IA5DmB,kDAAyB,GAA7C,UACI,QAAmD,EACnD,iBAAoC,EACpC,UAA2B,EACvB,KAAa,EACb,OAAe;;;;gBAEnB,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;oBACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;iBACrE;gBACK,QAAQ,GAAG,qBAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;gBAC/D,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvD,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC;gBACxC,sBAAO,wBAAwB,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAC9F,OAAO,CACN,EAAC;;;KACG;IACmB,oCAAW,GAA/B,UACI,QAAgB,EAChB,GAAgB,EAChB,iBAAoC,EACpC,UAA2B,EACvB,KAAa,EACb,OAAe;;;;;;wBAEb,QAAQ,GAAG,qBAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;wBAC/D,cAAc,GAAG,4BAAY,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;wBAC/D;;+EAQC,EARA,aAAK,EACd,eAAO,CAOG;wBACI,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACxC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC;wBAClC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK;4BACzD,OAAO;yBACN,CAAC,CAAC;wBACW,WAAW,GAAG,IAAI,0BAAW,CAAC,QAAQ,CAAC,CAAC;wBACnB,qBAAM,4BAAY,CAAC,2BAA2B,CACrE,EAAC,IAAI,EAAE,MAAM,EAAC,EACd,UAAU,EACV,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CACjD,EAAA;;wBAJK,kBAAkB,GAAG,SAI1B;wBACc,qBAAM,WAAW,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;wBAAnE,MAAM,GAAG,SAA0D;wBACzE,gBAAQ,CAAC,GAAG,CAAC,sBAAoB,MAAQ,CAAC,CAAC;wBACzB,qBAAM,WAAW,CAAC,4BAA4B,CAAC,MAAM,CAAC,EAAA;;wBAAlE,SAAS,GAAG,SAAsD;wBACxE,gBAAQ,CAAC,GAAG,CAAC,+CAA6C,SAAS,CAAC,eAAiB,CAAC,CAAC;wBACjF,gBAAgB,GAAG,IAAI,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,eAAyB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;wBACtH,gBAAgB,CAAC,eAAe,GAAG,CAAC,KAAK;4BACjD,OAAO;yBACN,CAAC;wBACM,sBAAO,gBAAgB,EAAC;;;;KAC3B;IAKL,+BAAC;AAAD,CAAC,AAj8BD,CAA8C,4BAAY,GAi8BzD,CAAC,qCAAqC;AAj8B1B,4DAAwB;AAk8BrC,kCAAkC\"}\n\\ No newline at end of file" + }, + { + "sha": "61ea2e7ffee45d3c8fd5182ba65e30234495d3c0", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.d.ts", + "status": "added", + "additions": 199, + "deletions": 0, + "changes": 199, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,199 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare class DutchAuctionContract extends BaseContract {\n+ getAuctionDetails: {\n+ sendTransactionAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, txData?: Partial): Promise;\n+ estimateGasAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }): string;\n+ callAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ beginTimeSeconds: BigNumber;\n+ endTimeSeconds: BigNumber;\n+ beginAmount: BigNumber;\n+ endAmount: BigNumber;\n+ currentAmount: BigNumber;\n+ currentTimeSeconds: BigNumber;\n+ }>;\n+ };\n+ matchOrders: {\n+ sendTransactionAsync(buyOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, sellOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, buySignature: string, sellSignature: string, txData?: Partial): Promise;\n+ estimateGasAsync(buyOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, sellOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, buySignature: string, sellSignature: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(buyOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, sellOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, buySignature: string, sellSignature: string): string;\n+ callAsync(buyOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, sellOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, buySignature: string, sellSignature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ left: {\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ };\n+ right: {\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ };\n+ leftMakerAssetSpreadAmount: BigNumber;\n+ }>;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, _exchange: string): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial, _exchange: string): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=dutch_auction.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "37a0e33f77265946c71b8f12f81ee2dd215aebec", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"dutch_auction.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/dutch_auction.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAA6B,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAUnD,qBAAa,oBAAqB,SAAQ,YAAY;IAC3C,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2EtB;IACK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsGhB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC;WAUZ,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC;gBA6BpB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "5809f6df7c6a0a08abd992828ebbc36af909eef0", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.js", + "status": "added", + "additions": 311, + "deletions": 0, + "changes": 311, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,311 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+var __read = (this && this.__read) || function (o, n) {\n+ var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n+ if (!m) return o;\n+ var i = m.call(o), r, ar = [], e;\n+ try {\n+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n+ }\n+ catch (error) { e = { error: error }; }\n+ finally {\n+ try {\n+ if (r && !r.done && (m = i[\"return\"])) m.call(i);\n+ }\n+ finally { if (e) throw e.error; }\n+ }\n+ return ar;\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+// tslint:enable:no-unused-variable\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var DutchAuctionContract = /** @class */ (function (_super) {\n+ __extends(DutchAuctionContract, _super);\n+ function DutchAuctionContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'DutchAuction', abi, address, supportedProvider, txDefaults) || this;\n+ _this.getAuctionDetails = {\n+ sendTransactionAsync: function (order, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getAuctionDetails((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))', [order\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.getAuctionDetails.estimateGasAsync.bind(self, order))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (order, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getAuctionDetails((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))', [order\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (order) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('getAuctionDetails((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))', [order\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (order, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getAuctionDetails((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))', [order\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getAuctionDetails((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.matchOrders = {\n+ sendTransactionAsync: function (buyOrder, sellOrder, buySignature, sellSignature, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)', [buyOrder,\n+ sellOrder,\n+ buySignature,\n+ sellSignature\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.matchOrders.estimateGasAsync.bind(self, buyOrder, sellOrder, buySignature, sellSignature))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (buyOrder, sellOrder, buySignature, sellSignature, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)', [buyOrder,\n+ sellOrder,\n+ buySignature,\n+ sellSignature\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (buyOrder, sellOrder, buySignature, sellSignature) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)', [buyOrder,\n+ sellOrder,\n+ buySignature,\n+ sellSignature\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (buyOrder, sellOrder, buySignature, sellSignature, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)', [buyOrder,\n+ sellOrder,\n+ buySignature,\n+ sellSignature\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ DutchAuctionContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults, _exchange) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, DutchAuctionContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange)];\n+ });\n+ });\n+ };\n+ DutchAuctionContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults, _exchange) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_b) {\n+ switch (_b.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ _a = __read(base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [_exchange\n+ ], base_contract_1.BaseContract._bigNumberToString), 1), _exchange = _a[0];\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, [_exchange\n+ ]);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _b.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _b.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _b.sent();\n+ utils_1.logUtils.log(\"DutchAuction successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new DutchAuctionContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [_exchange\n+ ];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return DutchAuctionContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.DutchAuctionContract = DutchAuctionContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=dutch_auction.js.map\n\\ No newline at end of file" + }, + { + "sha": "ad74e3eb29d8ee956e1613b2dffed365db74ab02", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/dutch_auction.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"dutch_auction.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/dutch_auction.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "532e412d689eaed0b27ca9284d5981714ef7307e", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.d.ts", + "status": "added", + "additions": 62, + "deletions": 0, + "changes": 62, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,62 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type ERC20ProxyEventArgs = ERC20ProxyAuthorizedAddressAddedEventArgs | ERC20ProxyAuthorizedAddressRemovedEventArgs;\n+export declare enum ERC20ProxyEvents {\n+ AuthorizedAddressAdded = \"AuthorizedAddressAdded\",\n+ AuthorizedAddressRemoved = \"AuthorizedAddressRemoved\"\n+}\n+export interface ERC20ProxyAuthorizedAddressAddedEventArgs extends DecodedLogArgs {\n+ target: string;\n+ caller: string;\n+}\n+export interface ERC20ProxyAuthorizedAddressRemovedEventArgs extends DecodedLogArgs {\n+ target: string;\n+ caller: string;\n+}\n+export declare class ERC20ProxyContract extends BaseContract {\n+ addAuthorizedAddress: {\n+ sendTransactionAsync(target: string, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string): string;\n+ callAsync(target: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ authorities: {\n+ callAsync(index_0: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ removeAuthorizedAddress: {\n+ sendTransactionAsync(target: string, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string): string;\n+ callAsync(target: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ owner: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ removeAuthorizedAddressAtIndex: {\n+ sendTransactionAsync(target: string, index: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, index: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string, index: BigNumber): string;\n+ callAsync(target: string, index: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getProxyId: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ authorized: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getAuthorizedAddresses: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferOwnership: {\n+ sendTransactionAsync(newOwner: string, txData?: Partial): Promise;\n+ estimateGasAsync(newOwner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(newOwner: string): string;\n+ callAsync(newOwner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=erc20_proxy.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "c6584a6bb33565bcdcfbf3052f3fd56d7d74d9ae", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"erc20_proxy.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/erc20_proxy.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,mBAAmB,GACzB,yCAAyC,GACzC,2CAA2C,CAAC;AAElD,oBAAY,gBAAgB;IACxB,sBAAsB,2BAA2B;IACjD,wBAAwB,6BAA6B;CACxD;AAED,MAAM,WAAW,yCAA0C,SAAQ,cAAc;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,2CAA4C,SAAQ,cAAc;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAMD,qBAAa,kBAAmB,SAAQ,YAAY;IACzC,oBAAoB;;;;;MA2EzB;IACK,WAAW;;MA2BhB;IACK,uBAAuB;;;;;MA2E5B;IACK,KAAK;;MAyBV;IACK,8BAA8B;;;;;MAoFnC;IACK,UAAU;;MAyBf;IACK,UAAU;;MA2Bf;IACK,sBAAsB;;MAyB3B;IACK,iBAAiB;;;;;MA2EtB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,kBAAkB,CAAC;WASV,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,kBAAkB,CAAC;gBAyBlB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "b83d3f661742d6c1a4a9c656cfdd4a4a6c0fc2c0", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.js", + "status": "added", + "additions": 570, + "deletions": 0, + "changes": 570, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,570 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var ERC20ProxyEvents;\n+(function (ERC20ProxyEvents) {\n+ ERC20ProxyEvents[\"AuthorizedAddressAdded\"] = \"AuthorizedAddressAdded\";\n+ ERC20ProxyEvents[\"AuthorizedAddressRemoved\"] = \"AuthorizedAddressRemoved\";\n+})(ERC20ProxyEvents = exports.ERC20ProxyEvents || (exports.ERC20ProxyEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var ERC20ProxyContract = /** @class */ (function (_super) {\n+ __extends(ERC20ProxyContract, _super);\n+ function ERC20ProxyContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'ERC20Proxy', abi, address, supportedProvider, txDefaults) || this;\n+ _this.addAuthorizedAddress = {\n+ sendTransactionAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.addAuthorizedAddress.estimateGasAsync.bind(self, target))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('addAuthorizedAddress(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.authorities = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('authorities(uint256)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('authorities(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.removeAuthorizedAddress = {\n+ sendTransactionAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.removeAuthorizedAddress.estimateGasAsync.bind(self, target))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('removeAuthorizedAddress(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.owner = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('owner()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('owner()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.removeAuthorizedAddressAtIndex = {\n+ sendTransactionAsync: function (target, index, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.removeAuthorizedAddressAtIndex.estimateGasAsync.bind(self, target, index))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, index, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target, index) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, index, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('removeAuthorizedAddressAtIndex(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getProxyId = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getProxyId()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getProxyId()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.authorized = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('authorized(address)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('authorized(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getAuthorizedAddresses = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getAuthorizedAddresses()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getAuthorizedAddresses()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferOwnership = {\n+ sendTransactionAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferOwnership.estimateGasAsync.bind(self, newOwner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (newOwner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (newOwner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferOwnership(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ ERC20ProxyContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, ERC20ProxyContract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ ERC20ProxyContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"ERC20Proxy successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new ERC20ProxyContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return ERC20ProxyContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.ERC20ProxyContract = ERC20ProxyContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=erc20_proxy.js.map\n\\ No newline at end of file" + }, + { + "sha": "54b25eab5fb2ae38ca6e2dd316bad221b977b82f", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_proxy.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"erc20_proxy.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/erc20_proxy.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "ad35ed5462ec077fb0c1715d19dcb0fc4dc89754", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.d.ts", + "status": "added", + "additions": 52, + "deletions": 0, + "changes": 52, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,52 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type ERC20TokenEventArgs = ERC20TokenTransferEventArgs | ERC20TokenApprovalEventArgs;\n+export declare enum ERC20TokenEvents {\n+ Transfer = \"Transfer\",\n+ Approval = \"Approval\"\n+}\n+export interface ERC20TokenTransferEventArgs extends DecodedLogArgs {\n+ _from: string;\n+ _to: string;\n+ _value: BigNumber;\n+}\n+export interface ERC20TokenApprovalEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _spender: string;\n+ _value: BigNumber;\n+}\n+export declare class ERC20TokenContract extends BaseContract {\n+ approve: {\n+ sendTransactionAsync(_spender: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_spender: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_spender: string, _value: BigNumber): string;\n+ callAsync(_spender: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ totalSupply: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferFrom: {\n+ sendTransactionAsync(_from: string, _to: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _value: BigNumber): string;\n+ callAsync(_from: string, _to: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ balanceOf: {\n+ callAsync(_owner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transfer: {\n+ sendTransactionAsync(_to: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_to: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_to: string, _value: BigNumber): string;\n+ callAsync(_to: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ allowance: {\n+ callAsync(_owner: string, _spender: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=erc20_token.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "93136337176e00c984fba23b99abe9f5fc8f04ed", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"erc20_token.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/erc20_token.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,mBAAmB,GACzB,2BAA2B,GAC3B,2BAA2B,CAAC;AAElC,oBAAY,gBAAgB;IACxB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACxB;AAED,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACrB;AAMD,qBAAa,kBAAmB,SAAQ,YAAY;IACzC,OAAO;;;;;MAoFZ;IACK,WAAW;;MAyBhB;IACK,YAAY;;;;;MA6FjB;IACK,SAAS;;MA2Bd;IACK,QAAQ;;;;;MAoFb;IACK,SAAS;;MA6Bd;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,kBAAkB,CAAC;WASV,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,kBAAkB,CAAC;gBAyBlB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "bb173bb962edd44ea30bc054c1b5a77bc2d03fcd", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.js", + "status": "added", + "additions": 456, + "deletions": 0, + "changes": 456, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,456 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var ERC20TokenEvents;\n+(function (ERC20TokenEvents) {\n+ ERC20TokenEvents[\"Transfer\"] = \"Transfer\";\n+ ERC20TokenEvents[\"Approval\"] = \"Approval\";\n+})(ERC20TokenEvents = exports.ERC20TokenEvents || (exports.ERC20TokenEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var ERC20TokenContract = /** @class */ (function (_super) {\n+ __extends(ERC20TokenContract, _super);\n+ function ERC20TokenContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'ERC20Token', abi, address, supportedProvider, txDefaults) || this;\n+ _this.approve = {\n+ sendTransactionAsync: function (_spender, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.approve.estimateGasAsync.bind(self, _spender, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_spender, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_spender, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_spender, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.totalSupply = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('totalSupply()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('totalSupply()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferFrom = {\n+ sendTransactionAsync: function (_from, _to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferFrom.estimateGasAsync.bind(self, _from, _to, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.balanceOf = {\n+ callAsync: function (_owner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('balanceOf(address)', [_owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('balanceOf(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transfer = {\n+ sendTransactionAsync: function (_to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transfer.estimateGasAsync.bind(self, _to, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_to, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_to, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transfer(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.allowance = {\n+ callAsync: function (_owner, _spender, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('allowance(address,address)', [_owner,\n+ _spender\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('allowance(address,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ ERC20TokenContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, ERC20TokenContract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ ERC20TokenContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"ERC20Token successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new ERC20TokenContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return ERC20TokenContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.ERC20TokenContract = ERC20TokenContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=erc20_token.js.map\n\\ No newline at end of file" + }, + { + "sha": "4d030067eb550f7b703e695be863f8129e6c2a61", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc20_token.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"erc20_token.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/erc20_token.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "bed91f0f424406f8137c6e60d0487e58e7c84b69", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.d.ts", + "status": "added", + "additions": 62, + "deletions": 0, + "changes": 62, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,62 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type ERC721ProxyEventArgs = ERC721ProxyAuthorizedAddressAddedEventArgs | ERC721ProxyAuthorizedAddressRemovedEventArgs;\n+export declare enum ERC721ProxyEvents {\n+ AuthorizedAddressAdded = \"AuthorizedAddressAdded\",\n+ AuthorizedAddressRemoved = \"AuthorizedAddressRemoved\"\n+}\n+export interface ERC721ProxyAuthorizedAddressAddedEventArgs extends DecodedLogArgs {\n+ target: string;\n+ caller: string;\n+}\n+export interface ERC721ProxyAuthorizedAddressRemovedEventArgs extends DecodedLogArgs {\n+ target: string;\n+ caller: string;\n+}\n+export declare class ERC721ProxyContract extends BaseContract {\n+ addAuthorizedAddress: {\n+ sendTransactionAsync(target: string, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string): string;\n+ callAsync(target: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ authorities: {\n+ callAsync(index_0: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ removeAuthorizedAddress: {\n+ sendTransactionAsync(target: string, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string): string;\n+ callAsync(target: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ owner: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ removeAuthorizedAddressAtIndex: {\n+ sendTransactionAsync(target: string, index: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, index: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string, index: BigNumber): string;\n+ callAsync(target: string, index: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getProxyId: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ authorized: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getAuthorizedAddresses: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferOwnership: {\n+ sendTransactionAsync(newOwner: string, txData?: Partial): Promise;\n+ estimateGasAsync(newOwner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(newOwner: string): string;\n+ callAsync(newOwner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=erc721_proxy.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "3c31fe9d2a210dc8c79df21c8863f83b6d330ad3", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"erc721_proxy.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/erc721_proxy.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,oBAAoB,GAC1B,0CAA0C,GAC1C,4CAA4C,CAAC;AAEnD,oBAAY,iBAAiB;IACzB,sBAAsB,2BAA2B;IACjD,wBAAwB,6BAA6B;CACxD;AAED,MAAM,WAAW,0CAA2C,SAAQ,cAAc;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4CAA6C,SAAQ,cAAc;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAMD,qBAAa,mBAAoB,SAAQ,YAAY;IAC1C,oBAAoB;;;;;MA2EzB;IACK,WAAW;;MA2BhB;IACK,uBAAuB;;;;;MA2E5B;IACK,KAAK;;MAyBV;IACK,8BAA8B;;;;;MAoFnC;IACK,UAAU;;MAyBf;IACK,UAAU;;MA2Bf;IACK,sBAAsB;;MAyB3B;IACK,iBAAiB;;;;;MA2EtB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,mBAAmB,CAAC;WASX,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,mBAAmB,CAAC;gBAyBnB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "1ae7b1b4ffaa56286edfb7d14578639dc49fc811", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.js", + "status": "added", + "additions": 570, + "deletions": 0, + "changes": 570, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,570 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var ERC721ProxyEvents;\n+(function (ERC721ProxyEvents) {\n+ ERC721ProxyEvents[\"AuthorizedAddressAdded\"] = \"AuthorizedAddressAdded\";\n+ ERC721ProxyEvents[\"AuthorizedAddressRemoved\"] = \"AuthorizedAddressRemoved\";\n+})(ERC721ProxyEvents = exports.ERC721ProxyEvents || (exports.ERC721ProxyEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var ERC721ProxyContract = /** @class */ (function (_super) {\n+ __extends(ERC721ProxyContract, _super);\n+ function ERC721ProxyContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'ERC721Proxy', abi, address, supportedProvider, txDefaults) || this;\n+ _this.addAuthorizedAddress = {\n+ sendTransactionAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.addAuthorizedAddress.estimateGasAsync.bind(self, target))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('addAuthorizedAddress(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.authorities = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('authorities(uint256)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('authorities(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.removeAuthorizedAddress = {\n+ sendTransactionAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.removeAuthorizedAddress.estimateGasAsync.bind(self, target))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('removeAuthorizedAddress(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.owner = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('owner()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('owner()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.removeAuthorizedAddressAtIndex = {\n+ sendTransactionAsync: function (target, index, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.removeAuthorizedAddressAtIndex.estimateGasAsync.bind(self, target, index))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, index, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target, index) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, index, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('removeAuthorizedAddressAtIndex(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getProxyId = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getProxyId()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getProxyId()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.authorized = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('authorized(address)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('authorized(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getAuthorizedAddresses = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getAuthorizedAddresses()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getAuthorizedAddresses()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferOwnership = {\n+ sendTransactionAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferOwnership.estimateGasAsync.bind(self, newOwner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (newOwner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (newOwner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferOwnership(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ ERC721ProxyContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, ERC721ProxyContract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ ERC721ProxyContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"ERC721Proxy successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new ERC721ProxyContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return ERC721ProxyContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.ERC721ProxyContract = ERC721ProxyContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=erc721_proxy.js.map\n\\ No newline at end of file" + }, + { + "sha": "5dbb46e7fde2b84299d59a08cfeb2cb3a094795b", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_proxy.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"erc721_proxy.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/erc721_proxy.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "a0b2982b1ec695e780cf82f9faea97e806428c79", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.d.ts", + "status": "added", + "additions": 73, + "deletions": 0, + "changes": 73, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,73 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type ERC721TokenEventArgs = ERC721TokenTransferEventArgs | ERC721TokenApprovalEventArgs | ERC721TokenApprovalForAllEventArgs;\n+export declare enum ERC721TokenEvents {\n+ Transfer = \"Transfer\",\n+ Approval = \"Approval\",\n+ ApprovalForAll = \"ApprovalForAll\"\n+}\n+export interface ERC721TokenTransferEventArgs extends DecodedLogArgs {\n+ _from: string;\n+ _to: string;\n+ _tokenId: BigNumber;\n+}\n+export interface ERC721TokenApprovalEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _approved: string;\n+ _tokenId: BigNumber;\n+}\n+export interface ERC721TokenApprovalForAllEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _operator: string;\n+ _approved: boolean;\n+}\n+export declare class ERC721TokenContract extends BaseContract {\n+ getApproved: {\n+ callAsync(_tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ approve: {\n+ sendTransactionAsync(_approved: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_approved: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_approved: string, _tokenId: BigNumber): string;\n+ callAsync(_approved: string, _tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferFrom: {\n+ sendTransactionAsync(_from: string, _to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _tokenId: BigNumber): string;\n+ callAsync(_from: string, _to: string, _tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ safeTransferFrom1: {\n+ sendTransactionAsync(_from: string, _to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _tokenId: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _tokenId: BigNumber): string;\n+ callAsync(_from: string, _to: string, _tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ ownerOf: {\n+ callAsync(_tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ balanceOf: {\n+ callAsync(_owner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ setApprovalForAll: {\n+ sendTransactionAsync(_operator: string, _approved: boolean, txData?: Partial): Promise;\n+ estimateGasAsync(_operator: string, _approved: boolean, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_operator: string, _approved: boolean): string;\n+ callAsync(_operator: string, _approved: boolean, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ safeTransferFrom2: {\n+ sendTransactionAsync(_from: string, _to: string, _tokenId: BigNumber, _data: string, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _tokenId: BigNumber, _data: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _tokenId: BigNumber, _data: string): string;\n+ callAsync(_from: string, _to: string, _tokenId: BigNumber, _data: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ isApprovedForAll: {\n+ callAsync(_owner: string, _operator: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=erc721_token.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "e0d5dbf93f1c526afef93ad1d03e9395dc585353", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"erc721_token.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/erc721_token.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,oBAAoB,GAC1B,4BAA4B,GAC5B,4BAA4B,GAC5B,kCAAkC,CAAC;AAEzC,oBAAY,iBAAiB;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,cAAc,mBAAmB;CACpC;AAED,MAAM,WAAW,4BAA6B,SAAQ,cAAc;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,4BAA6B,SAAQ,cAAc;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,kCAAmC,SAAQ,cAAc;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACtB;AAMD,qBAAa,mBAAoB,SAAQ,YAAY;IAC1C,WAAW;;MA2BhB;IACK,OAAO;;;;;MAoFZ;IACK,YAAY;;;;;MA6FjB;IACK,iBAAiB;;;;;MA6FtB;IACK,OAAO;;MA2BZ;IACK,SAAS;;MA2Bd;IACK,iBAAiB;;;;;MAoFtB;IACK,iBAAiB;;;;;MAsGtB;IACK,gBAAgB;;MA6BrB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,mBAAmB,CAAC;WASX,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,mBAAmB,CAAC;gBAyBnB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "edbf650a701d469eaed1ddeb389fc6d26da6f71b", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.js", + "status": "added", + "additions": 655, + "deletions": 0, + "changes": 655, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,655 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var ERC721TokenEvents;\n+(function (ERC721TokenEvents) {\n+ ERC721TokenEvents[\"Transfer\"] = \"Transfer\";\n+ ERC721TokenEvents[\"Approval\"] = \"Approval\";\n+ ERC721TokenEvents[\"ApprovalForAll\"] = \"ApprovalForAll\";\n+})(ERC721TokenEvents = exports.ERC721TokenEvents || (exports.ERC721TokenEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var ERC721TokenContract = /** @class */ (function (_super) {\n+ __extends(ERC721TokenContract, _super);\n+ function ERC721TokenContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'ERC721Token', abi, address, supportedProvider, txDefaults) || this;\n+ _this.getApproved = {\n+ callAsync: function (_tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getApproved(uint256)', [_tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getApproved(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.approve = {\n+ sendTransactionAsync: function (_approved, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_approved,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.approve.estimateGasAsync.bind(self, _approved, _tokenId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_approved, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_approved,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_approved, _tokenId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [_approved,\n+ _tokenId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_approved, _tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_approved,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferFrom = {\n+ sendTransactionAsync: function (_from, _to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferFrom.estimateGasAsync.bind(self, _from, _to, _tokenId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _tokenId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.safeTransferFrom1 = {\n+ sendTransactionAsync: function (_from, _to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.safeTransferFrom1.estimateGasAsync.bind(self, _from, _to, _tokenId))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _tokenId, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _tokenId) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('safeTransferFrom(address,address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.ownerOf = {\n+ callAsync: function (_tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('ownerOf(uint256)', [_tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('ownerOf(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.balanceOf = {\n+ callAsync: function (_owner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('balanceOf(address)', [_owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('balanceOf(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.setApprovalForAll = {\n+ sendTransactionAsync: function (_operator, _approved, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [_operator,\n+ _approved\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.setApprovalForAll.estimateGasAsync.bind(self, _operator, _approved))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_operator, _approved, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [_operator,\n+ _approved\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_operator, _approved) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [_operator,\n+ _approved\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_operator, _approved, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [_operator,\n+ _approved\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('setApprovalForAll(address,bool)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.safeTransferFrom2 = {\n+ sendTransactionAsync: function (_from, _to, _tokenId, _data, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [_from,\n+ _to,\n+ _tokenId,\n+ _data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.safeTransferFrom2.estimateGasAsync.bind(self, _from, _to, _tokenId, _data))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _tokenId, _data, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [_from,\n+ _to,\n+ _tokenId,\n+ _data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _tokenId, _data) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [_from,\n+ _to,\n+ _tokenId,\n+ _data\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _tokenId, _data, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [_from,\n+ _to,\n+ _tokenId,\n+ _data\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('safeTransferFrom(address,address,uint256,bytes)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.isApprovedForAll = {\n+ callAsync: function (_owner, _operator, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('isApprovedForAll(address,address)', [_owner,\n+ _operator\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('isApprovedForAll(address,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ ERC721TokenContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, ERC721TokenContract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ ERC721TokenContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"ERC721Token successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new ERC721TokenContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return ERC721TokenContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.ERC721TokenContract = ERC721TokenContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=erc721_token.js.map\n\\ No newline at end of file" + }, + { + "sha": "468201016e2b3792020504a9a09f636ace671b33", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/erc721_token.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"erc721_token.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/erc721_token.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "8ed91de62f164f5ac83f122850cd1fa2a7d2e82b", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.d.ts", + "status": "added", + "additions": 1041, + "deletions": 0, + "changes": 1041, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,1041 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type ExchangeEventArgs = ExchangeSignatureValidatorApprovalEventArgs | ExchangeFillEventArgs | ExchangeCancelEventArgs | ExchangeCancelUpToEventArgs | ExchangeAssetProxyRegisteredEventArgs;\n+export declare enum ExchangeEvents {\n+ SignatureValidatorApproval = \"SignatureValidatorApproval\",\n+ Fill = \"Fill\",\n+ Cancel = \"Cancel\",\n+ CancelUpTo = \"CancelUpTo\",\n+ AssetProxyRegistered = \"AssetProxyRegistered\"\n+}\n+export interface ExchangeSignatureValidatorApprovalEventArgs extends DecodedLogArgs {\n+ signerAddress: string;\n+ validatorAddress: string;\n+ approved: boolean;\n+}\n+export interface ExchangeFillEventArgs extends DecodedLogArgs {\n+ makerAddress: string;\n+ feeRecipientAddress: string;\n+ takerAddress: string;\n+ senderAddress: string;\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ orderHash: string;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+}\n+export interface ExchangeCancelEventArgs extends DecodedLogArgs {\n+ makerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ orderHash: string;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+}\n+export interface ExchangeCancelUpToEventArgs extends DecodedLogArgs {\n+ makerAddress: string;\n+ senderAddress: string;\n+ orderEpoch: BigNumber;\n+}\n+export interface ExchangeAssetProxyRegisteredEventArgs extends DecodedLogArgs {\n+ id: string;\n+ assetProxy: string;\n+}\n+export declare class ExchangeContract extends BaseContract {\n+ filled: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ batchFillOrders: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[]): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ cancelled: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ preSign: {\n+ sendTransactionAsync(hash: string, signerAddress: string, signature: string, txData?: Partial): Promise;\n+ estimateGasAsync(hash: string, signerAddress: string, signature: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(hash: string, signerAddress: string, signature: string): string;\n+ callAsync(hash: string, signerAddress: string, signature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ matchOrders: {\n+ sendTransactionAsync(leftOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, rightOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, leftSignature: string, rightSignature: string, txData?: Partial): Promise;\n+ estimateGasAsync(leftOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, rightOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, leftSignature: string, rightSignature: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(leftOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, rightOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, leftSignature: string, rightSignature: string): string;\n+ callAsync(leftOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, rightOrder: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, leftSignature: string, rightSignature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ left: {\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ };\n+ right: {\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ };\n+ leftMakerAssetSpreadAmount: BigNumber;\n+ }>;\n+ };\n+ fillOrderNoThrow: {\n+ sendTransactionAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, txData?: Partial): Promise;\n+ estimateGasAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string): string;\n+ callAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ assetProxies: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ batchCancelOrders: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[]): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ batchFillOrKillOrders: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[]): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ cancelOrdersUpTo: {\n+ sendTransactionAsync(targetOrderEpoch: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(targetOrderEpoch: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(targetOrderEpoch: BigNumber): string;\n+ callAsync(targetOrderEpoch: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ batchFillOrdersNoThrow: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[]): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmounts: BigNumber[], signatures: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ getAssetProxy: {\n+ callAsync(assetProxyId: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transactions: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ fillOrKillOrder: {\n+ sendTransactionAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, txData?: Partial): Promise;\n+ estimateGasAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string): string;\n+ callAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ setSignatureValidatorApproval: {\n+ sendTransactionAsync(validatorAddress: string, approval: boolean, txData?: Partial): Promise;\n+ estimateGasAsync(validatorAddress: string, approval: boolean, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(validatorAddress: string, approval: boolean): string;\n+ callAsync(validatorAddress: string, approval: boolean, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ allowedValidators: {\n+ callAsync(index_0: string, index_1: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ marketSellOrders: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmount: BigNumber, signatures: string[], txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmount: BigNumber, signatures: string[], txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmount: BigNumber, signatures: string[]): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmount: BigNumber, signatures: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ getOrdersInfo: {\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ orderStatus: number;\n+ orderHash: string;\n+ orderTakerAssetFilledAmount: BigNumber;\n+ }[]>;\n+ };\n+ preSigned: {\n+ callAsync(index_0: string, index_1: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ owner: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ isValidSignature: {\n+ callAsync(hash: string, signerAddress: string, signature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ marketBuyOrdersNoThrow: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[]): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ fillOrder: {\n+ sendTransactionAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, txData?: Partial): Promise;\n+ estimateGasAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string): string;\n+ callAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAssetFillAmount: BigNumber, signature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ executeTransaction: {\n+ sendTransactionAsync(salt: BigNumber, signerAddress: string, data: string, signature: string, txData?: Partial): Promise;\n+ estimateGasAsync(salt: BigNumber, signerAddress: string, data: string, signature: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(salt: BigNumber, signerAddress: string, data: string, signature: string): string;\n+ callAsync(salt: BigNumber, signerAddress: string, data: string, signature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ registerAssetProxy: {\n+ sendTransactionAsync(assetProxy: string, txData?: Partial): Promise;\n+ estimateGasAsync(assetProxy: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(assetProxy: string): string;\n+ callAsync(assetProxy: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getOrderInfo: {\n+ callAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ orderStatus: number;\n+ orderHash: string;\n+ orderTakerAssetFilledAmount: BigNumber;\n+ }>;\n+ };\n+ cancelOrder: {\n+ sendTransactionAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, txData?: Partial): Promise;\n+ estimateGasAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }): string;\n+ callAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ orderEpoch: {\n+ callAsync(index_0: string, index_1: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ ZRX_ASSET_DATA: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ marketSellOrdersNoThrow: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmount: BigNumber, signatures: string[], txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmount: BigNumber, signatures: string[], txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmount: BigNumber, signatures: string[]): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAssetFillAmount: BigNumber, signatures: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ EIP712_DOMAIN_HASH: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ marketBuyOrders: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[]): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }>;\n+ };\n+ currentContextAddress: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferOwnership: {\n+ sendTransactionAsync(newOwner: string, txData?: Partial): Promise;\n+ estimateGasAsync(newOwner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(newOwner: string): string;\n+ callAsync(newOwner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ VERSION: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, _zrxAssetData: string): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial, _zrxAssetData: string): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=exchange.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "7fbc078b52c8c2a2a137516cb177e95df4991571", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"exchange.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/exchange.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "c184dc4b0575242456223e9e1586e331e0ae208b", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.js", + "status": "added", + "additions": 2129, + "deletions": 0, + "changes": 2129, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "2e0dac0201b3f4fae77d839e91b6f5e941b9abf4", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/exchange.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"exchange.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/exchange.ts\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uGAAuG;AACvG,oCAAoC;AACpC,mCAAmC;AACnC,mDAAiD;AAEjD,mCAA2E;AAE3E,iDAA+C;AAC/C,+BAAiC;AACjC,0BAA4B;AAU5B,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,2EAAyD,CAAA;IACzD,+BAAa,CAAA;IACb,mCAAiB,CAAA;IACjB,2CAAyB,CAAA;IACzB,+DAA6C,CAAA;AACjD,CAAC,EANW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAMzB;AA2CD,0BAA0B;AAC1B,2CAA2C;AAC3C,sCAAsC;AACtC;IAAsC,oCAAY;IA4pE9C,0BAAY,GAAgB,EAAE,OAAe,EAAE,iBAAoC,EAAE,UAA4B;QAAjH,YACI,kBAAM,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,SAEjE;QA9pEM,YAAM,GAAG;YACN,SAAS,EAAf,UACI,OAAe,EACf,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,CAAC,OAAO;iCAC9E,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;gCAEvD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,qBAAe,GAAG;YACf,oBAAoB,EAA1B,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oIAAoI,EAAE,CAAC,MAAM;oCACrM,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CACtC,IAAI,EACJ,MAAM,EACN,qBAAqB,EACrB,UAAU,CACb,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oIAAoI,EAAE,CAAC,MAAM;oCACrM,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB;gBAEpB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,oIAAoI,EAAE,CAAC,MAAM;oBACnN,qBAAqB;oBACrB,UAAU;iBACT,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oIAAoI,EAAE,CAAC,MAAM;oCACjM,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,oIAAoI,CAAC,CAAC;gCAE1K,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,eAAS,GAAG;YACT,SAAS,EAAf,UACI,OAAe,EACf,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,CAAC,OAAO;iCACjF,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;gCAE1D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,aAAO,GAAG;YACP,oBAAoB,EAA1B,UACI,IAAY,EACZ,aAAqB,EACrB,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,CAAC,IAAI;oCAC/F,aAAa;oCACb,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAC9B,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,SAAS,CACZ,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,IAAY,EACZ,aAAqB,EACrB,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,CAAC,IAAI;oCAC/F,aAAa;oCACb,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,IAAY,EACZ,aAAqB,EACrB,SAAiB;gBAEjB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,CAAC,IAAI;oBAC7G,aAAa;oBACb,SAAS;iBACR,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,IAAY,EACZ,aAAqB,EACrB,SAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,CAAC,IAAI;oCAC3F,aAAa;oCACb,SAAS;iCACR,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;gCAEtE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,iBAAW,GAAG;YACX,oBAAoB,EAA1B,UACI,SAAuS,EACvS,UAAwS,EACxS,aAAqB,EACrB,cAAsB,EACtB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,sNAAsN,EAAE,CAAC,SAAS;oCAC1R,UAAU;oCACV,aAAa;oCACb,cAAc;iCACb,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAClC,IAAI,EACJ,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,CACjB,CACJ,EAAA;;gCAdK,kBAAkB,GAAG,SAc1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,SAAuS,EACvS,UAAwS,EACxS,aAAqB,EACrB,cAAsB,EACtB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,sNAAsN,EAAE,CAAC,SAAS;oCAC1R,UAAU;oCACV,aAAa;oCACb,cAAc;iCACb,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,SAAuS,EACvS,UAAwS,EACxS,aAAqB,EACrB,cAAsB;gBAEtB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,sNAAsN,EAAE,CAAC,SAAS;oBACxS,UAAU;oBACV,aAAa;oBACb,cAAc;iBACb,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,SAAuS,EACvS,UAAwS,EACxS,aAAqB,EACrB,cAAsB,EACtB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,sNAAsN,EAAE,CAAC,SAAS;oCACtR,UAAU;oCACV,aAAa;oCACb,cAAc;iCACb,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,sNAAsN,CAAC,CAAC;gCAE5P,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,sBAAgB,GAAG;YAChB,oBAAoB,EAA1B,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,+HAA+H,EAAE,CAAC,KAAK;oCAC/L,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CACvC,IAAI,EACJ,KAAK,EACL,oBAAoB,EACpB,SAAS,CACZ,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,+HAA+H,EAAE,CAAC,KAAK;oCAC/L,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB;gBAEjB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,+HAA+H,EAAE,CAAC,KAAK;oBAC7M,oBAAoB;oBACpB,SAAS;iBACR,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,+HAA+H,EAAE,CAAC,KAAK;oCAC3L,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,+HAA+H,CAAC,CAAC;gCAErK,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,kBAAY,GAAG;YACZ,SAAS,EAAf,UACI,OAAe,EACf,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,CAAC,OAAO;iCACnF,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;gCAE5D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,uBAAiB,GAAG;YACjB,oBAAoB,EAA1B,UACI,MAA2S,EAC3S,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oHAAoH,EAAE,CAAC,MAAM;iCACpL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CACxC,IAAI,EACJ,MAAM,CACT,CACJ,EAAA;;gCAXK,kBAAkB,GAAG,SAW1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAA2S,EAC3S,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oHAAoH,EAAE,CAAC,MAAM;iCACpL,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAA2S;gBAE3S,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,oHAAoH,EAAE,CAAC,MAAM;iBAClM,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAA2S,EAC3S,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oHAAoH,EAAE,CAAC,MAAM;iCAChL,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,oHAAoH,CAAC,CAAC;gCAE1J,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,2BAAqB,GAAG;YACrB,oBAAoB,EAA1B,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0IAA0I,EAAE,CAAC,MAAM;oCAC3M,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAC5C,IAAI,EACJ,MAAM,EACN,qBAAqB,EACrB,UAAU,CACb,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0IAA0I,EAAE,CAAC,MAAM;oCAC3M,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB;gBAEpB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,0IAA0I,EAAE,CAAC,MAAM;oBACzN,qBAAqB;oBACrB,UAAU;iBACT,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0IAA0I,EAAE,CAAC,MAAM;oCACvM,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,0IAA0I,CAAC,CAAC;gCAEhL,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,sBAAgB,GAAG;YAChB,oBAAoB,EAA1B,UACI,gBAA2B,EAC3B,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,gBAAgB;iCACrG,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CACvC,IAAI,EACJ,gBAAgB,CACnB,CACJ,EAAA;;gCAXK,kBAAkB,GAAG,SAW1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,gBAA2B,EAC3B,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,gBAAgB;iCACrG,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,gBAA2B;gBAE3B,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,gBAAgB;iBACnH,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,gBAA2B,EAC3B,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,gBAAgB;iCACjG,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;gCAEjE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,4BAAsB,GAAG;YACtB,oBAAoB,EAA1B,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2IAA2I,EAAE,CAAC,MAAM;oCAC5M,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAC7C,IAAI,EACJ,MAAM,EACN,qBAAqB,EACrB,UAAU,CACb,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2IAA2I,EAAE,CAAC,MAAM;oCAC5M,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB;gBAEpB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,2IAA2I,EAAE,CAAC,MAAM;oBAC1N,qBAAqB;oBACrB,UAAU;iBACT,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAA2S,EAC3S,qBAAkC,EAClC,UAAoB,EACpB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,2IAA2I,EAAE,CAAC,MAAM;oCACxM,qBAAqB;oCACrB,UAAU;iCACT,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,2IAA2I,CAAC,CAAC;gCAEjL,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,mBAAa,GAAG;YACb,SAAS,EAAf,UACI,YAAoB,EACpB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,YAAY;iCACzF,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;gCAE7D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,kBAAY,GAAG;YACZ,SAAS,EAAf,UACI,OAAe,EACf,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,OAAO;iCACpF,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;gCAE7D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,qBAAe,GAAG;YACf,oBAAoB,EAA1B,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,8HAA8H,EAAE,CAAC,KAAK;oCAC9L,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CACtC,IAAI,EACJ,KAAK,EACL,oBAAoB,EACpB,SAAS,CACZ,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,8HAA8H,EAAE,CAAC,KAAK;oCAC9L,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB;gBAEjB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,8HAA8H,EAAE,CAAC,KAAK;oBAC5M,oBAAoB;oBACpB,SAAS;iBACR,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,8HAA8H,EAAE,CAAC,KAAK;oCAC1L,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,8HAA8H,CAAC,CAAC;gCAEpK,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,mCAA6B,GAAG;YAC7B,oBAAoB,EAA1B,UACI,gBAAwB,EACxB,QAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6CAA6C,EAAE,CAAC,gBAAgB;oCACxH,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,IAAI,CACpD,IAAI,EACJ,gBAAgB,EAChB,QAAQ,CACX,CACJ,EAAA;;gCAZK,kBAAkB,GAAG,SAY1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,gBAAwB,EACxB,QAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6CAA6C,EAAE,CAAC,gBAAgB;oCACxH,QAAQ;iCACP,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,gBAAwB,EACxB,QAAiB;gBAEjB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,6CAA6C,EAAE,CAAC,gBAAgB;oBACtI,QAAQ;iBACP,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,gBAAwB,EACxB,QAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6CAA6C,EAAE,CAAC,gBAAgB;oCACpH,QAAQ;iCACP,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,6CAA6C,CAAC,CAAC;gCAEnF,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,uBAAiB,GAAG;YACjB,SAAS,EAAf,UACI,OAAe,EACf,OAAe,EACf,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,oCAAoC,EAAE,CAAC,OAAO;oCAClG,OAAO;iCACN,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;gCAE1E,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,sBAAgB,GAAG;YAChB,oBAAoB,EAA1B,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,mIAAmI,EAAE,CAAC,MAAM;oCACpM,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CACvC,IAAI,EACJ,MAAM,EACN,oBAAoB,EACpB,UAAU,CACb,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,mIAAmI,EAAE,CAAC,MAAM;oCACpM,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB;gBAEpB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,mIAAmI,EAAE,CAAC,MAAM;oBAClN,oBAAoB;oBACpB,UAAU;iBACT,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,mIAAmI,EAAE,CAAC,MAAM;oCAChM,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,mIAAmI,CAAC,CAAC;gCAEzK,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,mBAAa,GAAG;YACb,SAAS,EAAf,UACI,MAA2S,EAC3S,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,gHAAgH,EAAE,CAAC,MAAM;iCAC5K,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,gHAAgH,CAAC,CAAC;gCAEtJ,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,eAAS,GAAG;YACT,SAAS,EAAf,UACI,OAAe,EACf,OAAe,EACf,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,OAAO;oCAC1F,OAAO;iCACN,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;gCAElE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,WAAK,GAAG;YACL,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gCAClC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gCAE/C,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,sBAAgB,GAAG;YAChB,SAAS,EAAf,UACI,IAAY,EACZ,aAAqB,EACrB,SAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,yCAAyC,EAAE,CAAC,IAAI;oCACpG,aAAa;oCACb,SAAS;iCACR,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,yCAAyC,CAAC,CAAC;gCAE/E,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,4BAAsB,GAAG;YACtB,oBAAoB,EAA1B,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,yIAAyI,EAAE,CAAC,MAAM;oCAC1M,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAC7C,IAAI,EACJ,MAAM,EACN,oBAAoB,EACpB,UAAU,CACb,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,yIAAyI,EAAE,CAAC,MAAM;oCAC1M,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB;gBAEpB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,yIAAyI,EAAE,CAAC,MAAM;oBACxN,oBAAoB;oBACpB,UAAU;iBACT,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,yIAAyI,EAAE,CAAC,MAAM;oCACtM,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,yIAAyI,CAAC,CAAC;gCAE/K,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,eAAS,GAAG;YACT,oBAAoB,EAA1B,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,wHAAwH,EAAE,CAAC,KAAK;oCACxL,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAChC,IAAI,EACJ,KAAK,EACL,oBAAoB,EACpB,SAAS,CACZ,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,wHAAwH,EAAE,CAAC,KAAK;oCACxL,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB;gBAEjB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,wHAAwH,EAAE,CAAC,KAAK;oBACtM,oBAAoB;oBACpB,SAAS;iBACR,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,KAAmS,EACnS,oBAA+B,EAC/B,SAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,wHAAwH,EAAE,CAAC,KAAK;oCACpL,oBAAoB;oCACpB,SAAS;iCACR,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,wHAAwH,CAAC,CAAC;gCAE9J,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,wBAAkB,GAAG;YAClB,oBAAoB,EAA1B,UACI,IAAe,EACf,aAAqB,EACrB,IAAY,EACZ,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iDAAiD,EAAE,CAAC,IAAI;oCAChH,aAAa;oCACb,IAAI;oCACJ,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CACzC,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,IAAI,EACJ,SAAS,CACZ,CACJ,EAAA;;gCAdK,kBAAkB,GAAG,SAc1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,IAAe,EACf,aAAqB,EACrB,IAAY,EACZ,SAAiB,EACjB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iDAAiD,EAAE,CAAC,IAAI;oCAChH,aAAa;oCACb,IAAI;oCACJ,SAAS;iCACR,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,IAAe,EACf,aAAqB,EACrB,IAAY,EACZ,SAAiB;gBAEjB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,iDAAiD,EAAE,CAAC,IAAI;oBAC9H,aAAa;oBACb,IAAI;oBACJ,SAAS;iBACR,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,IAAe,EACf,aAAqB,EACrB,IAAY,EACZ,SAAiB,EACjB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iDAAiD,EAAE,CAAC,IAAI;oCAC5G,aAAa;oCACb,IAAI;oCACJ,SAAS;iCACR,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,iDAAiD,CAAC,CAAC;gCAEvF,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,wBAAkB,GAAG;YAClB,oBAAoB,EAA1B,UACI,UAAkB,EAClB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,UAAU;iCACjG,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CACzC,IAAI,EACJ,UAAU,CACb,CACJ,EAAA;;gCAXK,kBAAkB,GAAG,SAW1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,UAAkB,EAClB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,UAAU;iCACjG,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,UAAkB;gBAElB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,UAAU;iBAC/G,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,UAAkB,EAClB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,UAAU;iCAC7F,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;gCAEnE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,kBAAY,GAAG;YACZ,SAAS,EAAf,UACI,KAAmS,EACnS,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6GAA6G,EAAE,CAAC,KAAK;iCACxK,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,6GAA6G,CAAC,CAAC;gCAEnJ,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,iBAAW,GAAG;YACX,oBAAoB,EAA1B,UACI,KAAmS,EACnS,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4GAA4G,EAAE,CAAC,KAAK;iCAC3K,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAClC,IAAI,EACJ,KAAK,CACR,CACJ,EAAA;;gCAXK,kBAAkB,GAAG,SAW1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,KAAmS,EACnS,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4GAA4G,EAAE,CAAC,KAAK;iCAC3K,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,KAAmS;gBAEnS,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,4GAA4G,EAAE,CAAC,KAAK;iBACzL,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,KAAmS,EACnS,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4GAA4G,EAAE,CAAC,KAAK;iCACvK,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,4GAA4G,CAAC,CAAC;gCAElJ,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,gBAAU,GAAG;YACV,SAAS,EAAf,UACI,OAAe,EACf,OAAe,EACf,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,CAAC,OAAO;oCAC3F,OAAO;iCACN,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;gCAEnE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,oBAAc,GAAG;YACd,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;gCAC3C,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;gCAExD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,6BAAuB,GAAG;YACvB,oBAAoB,EAA1B,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0IAA0I,EAAE,CAAC,MAAM;oCAC3M,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,IAAI,CAC9C,IAAI,EACJ,MAAM,EACN,oBAAoB,EACpB,UAAU,CACb,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0IAA0I,EAAE,CAAC,MAAM;oCAC3M,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB;gBAEpB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,0IAA0I,EAAE,CAAC,MAAM;oBACzN,oBAAoB;oBACpB,UAAU;iBACT,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,0IAA0I,EAAE,CAAC,MAAM;oCACvM,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,0IAA0I,CAAC,CAAC;gCAEhL,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,wBAAkB,GAAG;YAClB,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;gCAC/C,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;gCAE5D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,qBAAe,GAAG;YACf,oBAAoB,EAA1B,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,kIAAkI,EAAE,CAAC,MAAM;oCACnM,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CACtC,IAAI,EACJ,MAAM,EACN,oBAAoB,EACpB,UAAU,CACb,CACJ,EAAA;;gCAbK,kBAAkB,GAAG,SAa1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,kIAAkI,EAAE,CAAC,MAAM;oCACnM,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB;gBAEpB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,kIAAkI,EAAE,CAAC,MAAM;oBACjN,oBAAoB;oBACpB,UAAU;iBACT,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,MAA2S,EAC3S,oBAA+B,EAC/B,UAAoB,EACpB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,kIAAkI,EAAE,CAAC,MAAM;oCAC/L,oBAAoB;oCACpB,UAAU;iCACT,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,kIAAkI,CAAC,CAAC;gCAExK,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,2BAAqB,GAAG;YACrB,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;gCAClD,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;gCAE/D,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,uBAAiB,GAAG;YACjB,oBAAoB,EAA1B,UACI,QAAgB,EAChB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC9F,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,EACvC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CACxC,IAAI,EACJ,QAAQ,CACX,CACJ,EAAA;;gCAXK,kBAAkB,GAAG,SAW1B;gCACc,qBAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;gCAAzE,MAAM,GAAG,SAAgE;gCAC/E,sBAAO,MAAM,EAAC;;;;aACjB;YACK,gBAAgB,EAAtB,UACI,QAAgB,EAChB,MAA4B;gBAA5B,uBAAA,EAAA,WAA4B;;;;;;gCAEtB,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC9F,CAAC,CAAC;gCACgC,qBAAM,4BAAY,CAAC,2BAA2B,YAEjE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,MAAM,IACT,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,kBAAkB,GAAG,SAO1B;gCACW,qBAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAA;;gCAAlE,GAAG,GAAG,SAA4D;gCACxE,sBAAO,GAAG,EAAC;;;;aACd;YACD,4BAA4B,EAA5B,UACI,QAAgB;gBAEhB,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAM,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iBAC5G,CAAC,CAAC;gBACK,OAAO,yBAAyB,CAAC;YACrC,CAAC;YACK,SAAS,EAAf,UACI,QAAgB,EAChB,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,CAAC,QAAQ;iCAC1F,CAAC,CAAC;gCAC8B,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;gCAElE,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QACK,aAAO,GAAG;YACP,SAAS,EAAf,UACI,QAAgC,EAChC,YAAyB;gBADzB,yBAAA,EAAA,aAAgC;;;;;;gCAI1B,IAAI,GAAG,IAA+B,CAAC;gCACvC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gCACpC,qBAAM,4BAAY,CAAC,2BAA2B,YAEnE,EAAE,EAAE,IAAI,CAAC,OAAO,IACb,QAAQ,IACX,IAAI,EAAE,WAAW,KAErB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAC1C,EAAA;;gCAPK,oBAAoB,GAAG,SAO5B;gCACqB,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAAA;;gCAArF,aAAa,GAAG,SAAqE;gCAC3F,4BAAY,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;gCACzD,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gCAEjD,MAAM,GAAG,UAAU,CAAC,uBAAuB,CACnD,aAAa,CAAC,CAAC;gCACb,+BAA+B;gCAC/B,sBAAO,MAAM,EAAC;;;;aACjB;SACJ,CAAC;QAqDE,kBAAU,CAAC,OAAO,CAAC,KAAI,EAAE,CAAC,gCAAgC,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;;IACnG,CAAC;IArDmB,0CAAyB,GAA7C,UACI,QAAmD,EACnD,iBAAoC,EACpC,UAA2B,EACvB,aAAqB;;;;gBAEzB,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;oBACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;iBACrE;gBACK,QAAQ,GAAG,qBAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;gBAC/D,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvD,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC;gBACxC,sBAAO,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAC7F,EAAC;;;KACG;IACmB,4BAAW,GAA/B,UACI,QAAgB,EAChB,GAAgB,EAChB,iBAAoC,EACpC,UAA2B,EACvB,aAAqB;;;;;;wBAEnB,QAAQ,GAAG,qBAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;wBAC/D,cAAc,GAAG,4BAAY,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;wBAC/D;+EAMC,EANA,qBAAa,CAMZ;wBACI,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACxC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC;wBAClC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,aAAa;yBAChE,CAAC,CAAC;wBACW,WAAW,GAAG,IAAI,0BAAW,CAAC,QAAQ,CAAC,CAAC;wBACnB,qBAAM,4BAAY,CAAC,2BAA2B,CACrE,EAAC,IAAI,EAAE,MAAM,EAAC,EACd,UAAU,EACV,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CACjD,EAAA;;wBAJK,kBAAkB,GAAG,SAI1B;wBACc,qBAAM,WAAW,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAA;;wBAAnE,MAAM,GAAG,SAA0D;wBACzE,gBAAQ,CAAC,GAAG,CAAC,sBAAoB,MAAQ,CAAC,CAAC;wBACzB,qBAAM,WAAW,CAAC,4BAA4B,CAAC,MAAM,CAAC,EAAA;;wBAAlE,SAAS,GAAG,SAAsD;wBACxE,gBAAQ,CAAC,GAAG,CAAC,uCAAqC,SAAS,CAAC,eAAiB,CAAC,CAAC;wBACzE,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,eAAyB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;wBAC9G,gBAAgB,CAAC,eAAe,GAAG,CAAC,aAAa;yBACxD,CAAC;wBACM,sBAAO,gBAAgB,EAAC;;;;KAC3B;IAKL,uBAAC;AAAD,CAAC,AAhqED,CAAsC,4BAAY,GAgqEjD,CAAC,qCAAqC;AAhqE1B,4CAAgB;AAiqE7B,kCAAkC\"}\n\\ No newline at end of file" + }, + { + "sha": "01fc9ce0b5740090698f702440bce26c75b8e8a4", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.d.ts", + "status": "added", + "additions": 265, + "deletions": 0, + "changes": 265, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,265 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, TxData, TxDataPayable, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare class ForwarderContract extends BaseContract {\n+ marketBuyOrdersWithEth: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], feeOrders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], feeSignatures: string[], feePercentage: BigNumber, feeRecipient: string, txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], feeOrders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], feeSignatures: string[], feePercentage: BigNumber, feeRecipient: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], feeOrders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], feeSignatures: string[], feePercentage: BigNumber, feeRecipient: string): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], makerAssetFillAmount: BigNumber, signatures: string[], feeOrders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], feeSignatures: string[], feePercentage: BigNumber, feeRecipient: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<[{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }, {\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }]>;\n+ };\n+ withdrawAsset: {\n+ sendTransactionAsync(assetData: string, amount: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(assetData: string, amount: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(assetData: string, amount: BigNumber): string;\n+ callAsync(assetData: string, amount: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ owner: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ marketSellOrdersWithEth: {\n+ sendTransactionAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], signatures: string[], feeOrders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], feeSignatures: string[], feePercentage: BigNumber, feeRecipient: string, txData?: Partial): Promise;\n+ estimateGasAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], signatures: string[], feeOrders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], feeSignatures: string[], feePercentage: BigNumber, feeRecipient: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], signatures: string[], feeOrders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], feeSignatures: string[], feePercentage: BigNumber, feeRecipient: string): string;\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], signatures: string[], feeOrders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], feeSignatures: string[], feePercentage: BigNumber, feeRecipient: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<[{\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }, {\n+ makerAssetFilledAmount: BigNumber;\n+ takerAssetFilledAmount: BigNumber;\n+ makerFeePaid: BigNumber;\n+ takerFeePaid: BigNumber;\n+ }]>;\n+ };\n+ transferOwnership: {\n+ sendTransactionAsync(newOwner: string, txData?: Partial): Promise;\n+ estimateGasAsync(newOwner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(newOwner: string): string;\n+ callAsync(newOwner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, _exchange: string, _zrxAssetData: string, _wethAssetData: string): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial, _exchange: string, _zrxAssetData: string, _wethAssetData: string): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=forwarder.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "d07d03a21eda04a3e3f73b773b1fb8f52a182b70", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"forwarder.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/forwarder.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAA6B,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAUnD,qBAAa,iBAAkB,SAAQ,YAAY;IACxC,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiI3B;IACK,aAAa;;;;;MAoFlB;IACK,KAAK;;MAyBV;IACK,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyH5B;IACK,iBAAiB;;;;;MA2EtB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GAC3B,OAAO,CAAC,iBAAiB,CAAC;WAYT,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GAC3B,OAAO,CAAC,iBAAiB,CAAC;gBAqCjB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "3de7ca0af0018419270e8ec3ce5384cc4aacc486", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.js", + "status": "added", + "additions": 528, + "deletions": 0, + "changes": 528, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,528 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+var __read = (this && this.__read) || function (o, n) {\n+ var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n+ if (!m) return o;\n+ var i = m.call(o), r, ar = [], e;\n+ try {\n+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n+ }\n+ catch (error) { e = { error: error }; }\n+ finally {\n+ try {\n+ if (r && !r.done && (m = i[\"return\"])) m.call(i);\n+ }\n+ finally { if (e) throw e.error; }\n+ }\n+ return ar;\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+// tslint:enable:no-unused-variable\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var ForwarderContract = /** @class */ (function (_super) {\n+ __extends(ForwarderContract, _super);\n+ function ForwarderContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'Forwarder', abi, address, supportedProvider, txDefaults) || this;\n+ _this.marketBuyOrdersWithEth = {\n+ sendTransactionAsync: function (orders, makerAssetFillAmount, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)', [orders,\n+ makerAssetFillAmount,\n+ signatures,\n+ feeOrders,\n+ feeSignatures,\n+ feePercentage,\n+ feeRecipient\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.marketBuyOrdersWithEth.estimateGasAsync.bind(self, orders, makerAssetFillAmount, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (orders, makerAssetFillAmount, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)', [orders,\n+ makerAssetFillAmount,\n+ signatures,\n+ feeOrders,\n+ feeSignatures,\n+ feePercentage,\n+ feeRecipient\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (orders, makerAssetFillAmount, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)', [orders,\n+ makerAssetFillAmount,\n+ signatures,\n+ feeOrders,\n+ feeSignatures,\n+ feePercentage,\n+ feeRecipient\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (orders, makerAssetFillAmount, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)', [orders,\n+ makerAssetFillAmount,\n+ signatures,\n+ feeOrders,\n+ feeSignatures,\n+ feePercentage,\n+ feeRecipient\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.withdrawAsset = {\n+ sendTransactionAsync: function (assetData, amount, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('withdrawAsset(bytes,uint256)', [assetData,\n+ amount\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.withdrawAsset.estimateGasAsync.bind(self, assetData, amount))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (assetData, amount, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('withdrawAsset(bytes,uint256)', [assetData,\n+ amount\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (assetData, amount) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('withdrawAsset(bytes,uint256)', [assetData,\n+ amount\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (assetData, amount, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('withdrawAsset(bytes,uint256)', [assetData,\n+ amount\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('withdrawAsset(bytes,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.owner = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('owner()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('owner()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.marketSellOrdersWithEth = {\n+ sendTransactionAsync: function (orders, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)', [orders,\n+ signatures,\n+ feeOrders,\n+ feeSignatures,\n+ feePercentage,\n+ feeRecipient\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.marketSellOrdersWithEth.estimateGasAsync.bind(self, orders, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ console.log(txDataWithDefaults);\n+ // const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);\n+ return [2 /*return*/, '123'];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (orders, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)', [orders,\n+ signatures,\n+ feeOrders,\n+ feeSignatures,\n+ feePercentage,\n+ feeRecipient\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (orders, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)', [orders,\n+ signatures,\n+ feeOrders,\n+ feeSignatures,\n+ feePercentage,\n+ feeRecipient\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (orders, signatures, feeOrders, feeSignatures, feePercentage, feeRecipient, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)', [orders,\n+ signatures,\n+ feeOrders,\n+ feeSignatures,\n+ feePercentage,\n+ feeRecipient\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes[],uint256,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferOwnership = {\n+ sendTransactionAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferOwnership.estimateGasAsync.bind(self, newOwner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (newOwner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (newOwner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferOwnership(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ ForwarderContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults, _exchange, _zrxAssetData, _wethAssetData) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, ForwarderContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange, _zrxAssetData, _wethAssetData)];\n+ });\n+ });\n+ };\n+ ForwarderContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults, _exchange, _zrxAssetData, _wethAssetData) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_b) {\n+ switch (_b.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ _a = __read(base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [_exchange,\n+ _zrxAssetData,\n+ _wethAssetData\n+ ], base_contract_1.BaseContract._bigNumberToString), 3), _exchange = _a[0], _zrxAssetData = _a[1], _wethAssetData = _a[2];\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, [_exchange,\n+ _zrxAssetData,\n+ _wethAssetData\n+ ]);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _b.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _b.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _b.sent();\n+ utils_1.logUtils.log(\"Forwarder successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new ForwarderContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [_exchange,\n+ _zrxAssetData,\n+ _wethAssetData\n+ ];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return ForwarderContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.ForwarderContract = ForwarderContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=forwarder.js.map\n\\ No newline at end of file" + }, + { + "sha": "977c82833f35cfd6ffd2ac35e32a5937b7d68846", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/forwarder.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"forwarder.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/forwarder.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "c66e0b9c5415ddb266013a29325f9c86df3b5695", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.d.ts", + "status": "added", + "additions": 12, + "deletions": 0, + "changes": 12, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,12 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, TxData, SupportedProvider } from 'ethereum-types';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare class IValidatorContract extends BaseContract {\n+ isValidSignature: {\n+ callAsync(hash: string, signerAddress: string, signature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=i_validator.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "d4a6c106597e7085514252c01826d29c517a0ffe", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"i_validator.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/i_validator.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAA6B,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE7K,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAUnD,qBAAa,kBAAmB,SAAQ,YAAY;IACzC,gBAAgB;;MA+BrB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,kBAAkB,CAAC;WASV,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,kBAAkB,CAAC;gBAyBlB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "ea92ccde8a8fc0e487e1a4cc1fb4e3a6a83a2199", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.js", + "status": "added", + "additions": 159, + "deletions": 0, + "changes": 159, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,159 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+// tslint:enable:no-unused-variable\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var IValidatorContract = /** @class */ (function (_super) {\n+ __extends(IValidatorContract, _super);\n+ function IValidatorContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'IValidator', abi, address, supportedProvider, txDefaults) || this;\n+ _this.isValidSignature = {\n+ callAsync: function (hash, signerAddress, signature, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('isValidSignature(bytes32,address,bytes)', [hash,\n+ signerAddress,\n+ signature\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('isValidSignature(bytes32,address,bytes)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ IValidatorContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, IValidatorContract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ IValidatorContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"IValidator successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new IValidatorContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return IValidatorContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.IValidatorContract = IValidatorContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=i_validator.js.map\n\\ No newline at end of file" + }, + { + "sha": "dd64632ce1dd2ca52ddcfa7642396dacc4668e1b", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_validator.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"i_validator.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/i_validator.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "1748e3800565fa9a5b4de65795a23e6aebe1da2c", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.d.ts", + "status": "added", + "additions": 12, + "deletions": 0, + "changes": 12, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,12 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, TxData, SupportedProvider } from 'ethereum-types';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare class IWalletContract extends BaseContract {\n+ isValidSignature: {\n+ callAsync(hash: string, signature: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=i_wallet.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "fc84b38c57d618f7efe1f9e435e4ffb1a3cc0a4f", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"i_wallet.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/i_wallet.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAA6B,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE7K,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAUnD,qBAAa,eAAgB,SAAQ,YAAY;IACtC,gBAAgB;;MA6BrB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,eAAe,CAAC;WASP,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,eAAe,CAAC;gBAyBf,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "273ee09ef2c75dc7db0d2b604c795ce10b8e9f41", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.js", + "status": "added", + "additions": 158, + "deletions": 0, + "changes": 158, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,158 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+// tslint:enable:no-unused-variable\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var IWalletContract = /** @class */ (function (_super) {\n+ __extends(IWalletContract, _super);\n+ function IWalletContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'IWallet', abi, address, supportedProvider, txDefaults) || this;\n+ _this.isValidSignature = {\n+ callAsync: function (hash, signature, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('isValidSignature(bytes32,bytes)', [hash,\n+ signature\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('isValidSignature(bytes32,bytes)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ IWalletContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, IWalletContract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ IWalletContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"IWallet successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new IWalletContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return IWalletContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.IWalletContract = IWalletContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=i_wallet.js.map\n\\ No newline at end of file" + }, + { + "sha": "f74c3f91963c94cade6d68940ebf25fbcdc88ee4", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/i_wallet.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"i_wallet.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/i_wallet.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "023416dc8d2ba971ae5344ccbc387a1d757bc52d", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.d.ts", + "status": "added", + "additions": 79, + "deletions": 0, + "changes": 79, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,79 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type MultiAssetProxyEventArgs = MultiAssetProxyAuthorizedAddressAddedEventArgs | MultiAssetProxyAuthorizedAddressRemovedEventArgs | MultiAssetProxyAssetProxyRegisteredEventArgs;\n+export declare enum MultiAssetProxyEvents {\n+ AuthorizedAddressAdded = \"AuthorizedAddressAdded\",\n+ AuthorizedAddressRemoved = \"AuthorizedAddressRemoved\",\n+ AssetProxyRegistered = \"AssetProxyRegistered\"\n+}\n+export interface MultiAssetProxyAuthorizedAddressAddedEventArgs extends DecodedLogArgs {\n+ target: string;\n+ caller: string;\n+}\n+export interface MultiAssetProxyAuthorizedAddressRemovedEventArgs extends DecodedLogArgs {\n+ target: string;\n+ caller: string;\n+}\n+export interface MultiAssetProxyAssetProxyRegisteredEventArgs extends DecodedLogArgs {\n+ id: string;\n+ assetProxy: string;\n+}\n+export declare class MultiAssetProxyContract extends BaseContract {\n+ assetProxies: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ addAuthorizedAddress: {\n+ sendTransactionAsync(target: string, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string): string;\n+ callAsync(target: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ authorities: {\n+ callAsync(index_0: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getAssetProxy: {\n+ callAsync(assetProxyId: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ removeAuthorizedAddress: {\n+ sendTransactionAsync(target: string, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string): string;\n+ callAsync(target: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ owner: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ removeAuthorizedAddressAtIndex: {\n+ sendTransactionAsync(target: string, index: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(target: string, index: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(target: string, index: BigNumber): string;\n+ callAsync(target: string, index: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getProxyId: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ authorized: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ registerAssetProxy: {\n+ sendTransactionAsync(assetProxy: string, txData?: Partial): Promise;\n+ estimateGasAsync(assetProxy: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(assetProxy: string): string;\n+ callAsync(assetProxy: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getAuthorizedAddresses: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferOwnership: {\n+ sendTransactionAsync(newOwner: string, txData?: Partial): Promise;\n+ estimateGasAsync(newOwner: string, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(newOwner: string): string;\n+ callAsync(newOwner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=multi_asset_proxy.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "4ba97b39ff0983fff980efaaad9cccdc7690f629", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"multi_asset_proxy.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/multi_asset_proxy.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,wBAAwB,GAC9B,8CAA8C,GAC9C,gDAAgD,GAChD,4CAA4C,CAAC;AAEnD,oBAAY,qBAAqB;IAC7B,sBAAsB,2BAA2B;IACjD,wBAAwB,6BAA6B;IACrD,oBAAoB,yBAAyB;CAChD;AAED,MAAM,WAAW,8CAA+C,SAAQ,cAAc;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gDAAiD,SAAQ,cAAc;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4CAA6C,SAAQ,cAAc;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACtB;AAMD,qBAAa,uBAAwB,SAAQ,YAAY;IAC9C,YAAY;;MA2BjB;IACK,oBAAoB;;;;;MA2EzB;IACK,WAAW;;MA2BhB;IACK,aAAa;;MA2BlB;IACK,uBAAuB;;;;;MA2E5B;IACK,KAAK;;MAyBV;IACK,8BAA8B;;;;;MAoFnC;IACK,UAAU;;MAyBf;IACK,UAAU;;MA2Bf;IACK,kBAAkB;;;;;MA2EvB;IACK,sBAAsB;;MAyB3B;IACK,iBAAiB;;;;;MA2EtB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,uBAAuB,CAAC;WASf,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,uBAAuB,CAAC;gBAyBvB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "486bed5e49a36f92da3ec0826da5d6ffb4219af0", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.js", + "status": "added", + "additions": 700, + "deletions": 0, + "changes": 700, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,700 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var MultiAssetProxyEvents;\n+(function (MultiAssetProxyEvents) {\n+ MultiAssetProxyEvents[\"AuthorizedAddressAdded\"] = \"AuthorizedAddressAdded\";\n+ MultiAssetProxyEvents[\"AuthorizedAddressRemoved\"] = \"AuthorizedAddressRemoved\";\n+ MultiAssetProxyEvents[\"AssetProxyRegistered\"] = \"AssetProxyRegistered\";\n+})(MultiAssetProxyEvents = exports.MultiAssetProxyEvents || (exports.MultiAssetProxyEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var MultiAssetProxyContract = /** @class */ (function (_super) {\n+ __extends(MultiAssetProxyContract, _super);\n+ function MultiAssetProxyContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'MultiAssetProxy', abi, address, supportedProvider, txDefaults) || this;\n+ _this.assetProxies = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('assetProxies(bytes4)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('assetProxies(bytes4)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.addAuthorizedAddress = {\n+ sendTransactionAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.addAuthorizedAddress.estimateGasAsync.bind(self, target))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('addAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('addAuthorizedAddress(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.authorities = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('authorities(uint256)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('authorities(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getAssetProxy = {\n+ callAsync: function (assetProxyId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getAssetProxy(bytes4)', [assetProxyId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getAssetProxy(bytes4)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.removeAuthorizedAddress = {\n+ sendTransactionAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.removeAuthorizedAddress.estimateGasAsync.bind(self, target))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddress(address)', [target\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('removeAuthorizedAddress(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.owner = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('owner()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('owner()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.removeAuthorizedAddressAtIndex = {\n+ sendTransactionAsync: function (target, index, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.removeAuthorizedAddressAtIndex.estimateGasAsync.bind(self, target, index))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (target, index, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (target, index) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (target, index, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('removeAuthorizedAddressAtIndex(address,uint256)', [target,\n+ index\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('removeAuthorizedAddressAtIndex(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getProxyId = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getProxyId()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getProxyId()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.authorized = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('authorized(address)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('authorized(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.registerAssetProxy = {\n+ sendTransactionAsync: function (assetProxy, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('registerAssetProxy(address)', [assetProxy\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.registerAssetProxy.estimateGasAsync.bind(self, assetProxy))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (assetProxy, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('registerAssetProxy(address)', [assetProxy\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (assetProxy) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('registerAssetProxy(address)', [assetProxy\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (assetProxy, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('registerAssetProxy(address)', [assetProxy\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('registerAssetProxy(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getAuthorizedAddresses = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getAuthorizedAddresses()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getAuthorizedAddresses()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferOwnership = {\n+ sendTransactionAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferOwnership.estimateGasAsync.bind(self, newOwner))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (newOwner, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (newOwner) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (newOwner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferOwnership(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ MultiAssetProxyContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, MultiAssetProxyContract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ MultiAssetProxyContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"MultiAssetProxy successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new MultiAssetProxyContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return MultiAssetProxyContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.MultiAssetProxyContract = MultiAssetProxyContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=multi_asset_proxy.js.map\n\\ No newline at end of file" + }, + { + "sha": "12503ccfc4394128496f326fa68c00a4a85e8839", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/multi_asset_proxy.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"multi_asset_proxy.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/multi_asset_proxy.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "dcd88491840814007013fd43e65d703b06525d06", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.d.ts", + "status": "added", + "additions": 127, + "deletions": 0, + "changes": 127, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,127 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare class OrderValidatorContract extends BaseContract {\n+ getOrderAndTraderInfo: {\n+ callAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAddress: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<[{\n+ orderStatus: number;\n+ orderHash: string;\n+ orderTakerAssetFilledAmount: BigNumber;\n+ }, {\n+ makerBalance: BigNumber;\n+ makerAllowance: BigNumber;\n+ takerBalance: BigNumber;\n+ takerAllowance: BigNumber;\n+ makerZrxBalance: BigNumber;\n+ makerZrxAllowance: BigNumber;\n+ takerZrxBalance: BigNumber;\n+ takerZrxAllowance: BigNumber;\n+ }]>;\n+ };\n+ getBalanceAndAllowance: {\n+ callAsync(target: string, assetData: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<[BigNumber, BigNumber]>;\n+ };\n+ getOrdersAndTradersInfo: {\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAddresses: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<[{\n+ orderStatus: number;\n+ orderHash: string;\n+ orderTakerAssetFilledAmount: BigNumber;\n+ }[], {\n+ makerBalance: BigNumber;\n+ makerAllowance: BigNumber;\n+ takerBalance: BigNumber;\n+ takerAllowance: BigNumber;\n+ makerZrxBalance: BigNumber;\n+ makerZrxAllowance: BigNumber;\n+ takerZrxBalance: BigNumber;\n+ takerZrxAllowance: BigNumber;\n+ }[]]>;\n+ };\n+ getTradersInfo: {\n+ callAsync(orders: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }[], takerAddresses: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerBalance: BigNumber;\n+ makerAllowance: BigNumber;\n+ takerBalance: BigNumber;\n+ takerAllowance: BigNumber;\n+ makerZrxBalance: BigNumber;\n+ makerZrxAllowance: BigNumber;\n+ takerZrxBalance: BigNumber;\n+ takerZrxAllowance: BigNumber;\n+ }[]>;\n+ };\n+ getERC721TokenOwner: {\n+ callAsync(token: string, tokenId: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ getBalancesAndAllowances: {\n+ callAsync(target: string, assetData: string[], callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<[BigNumber[], BigNumber[]]>;\n+ };\n+ getTraderInfo: {\n+ callAsync(order: {\n+ makerAddress: string;\n+ takerAddress: string;\n+ feeRecipientAddress: string;\n+ senderAddress: string;\n+ makerAssetAmount: BigNumber;\n+ takerAssetAmount: BigNumber;\n+ makerFee: BigNumber;\n+ takerFee: BigNumber;\n+ expirationTimeSeconds: BigNumber;\n+ salt: BigNumber;\n+ makerAssetData: string;\n+ takerAssetData: string;\n+ }, takerAddress: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise<{\n+ makerBalance: BigNumber;\n+ makerAllowance: BigNumber;\n+ takerBalance: BigNumber;\n+ takerAllowance: BigNumber;\n+ makerZrxBalance: BigNumber;\n+ makerZrxAllowance: BigNumber;\n+ takerZrxBalance: BigNumber;\n+ takerZrxAllowance: BigNumber;\n+ }>;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, _exchange: string, _zrxAssetData: string): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial, _exchange: string, _zrxAssetData: string): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=order_validator.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "bbdb4c368c63226961beb1a03b13380a4ab22757", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"order_validator.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/order_validator.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAA6B,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAUnD,qBAAa,sBAAuB,SAAQ,YAAY;IAC7C,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6B1B;IACK,sBAAsB;;MA6B3B;IACK,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6B5B;IACK,cAAc;;;;;;;;;;;;;;;;;;;;;;;;MA6BnB;IACK,mBAAmB;;MA6BxB;IACK,wBAAwB;;MA6B7B;IACK,aAAa;;;;;;;;;;;;;;;;;;;;;;;;MA6BlB;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GAC1B,OAAO,CAAC,sBAAsB,CAAC;WAWd,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GAC1B,OAAO,CAAC,sBAAsB,CAAC;gBAiCtB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "4dc6e383730c01cf9f5ca67651ea31d555d758f8", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.js", + "status": "added", + "additions": 348, + "deletions": 0, + "changes": 348, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,348 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+var __read = (this && this.__read) || function (o, n) {\n+ var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n+ if (!m) return o;\n+ var i = m.call(o), r, ar = [], e;\n+ try {\n+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n+ }\n+ catch (error) { e = { error: error }; }\n+ finally {\n+ try {\n+ if (r && !r.done && (m = i[\"return\"])) m.call(i);\n+ }\n+ finally { if (e) throw e.error; }\n+ }\n+ return ar;\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+// tslint:enable:no-unused-variable\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var OrderValidatorContract = /** @class */ (function (_super) {\n+ __extends(OrderValidatorContract, _super);\n+ function OrderValidatorContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'OrderValidator', abi, address, supportedProvider, txDefaults) || this;\n+ _this.getOrderAndTraderInfo = {\n+ callAsync: function (order, takerAddress, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getOrderAndTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)', [order,\n+ takerAddress\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getOrderAndTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getBalanceAndAllowance = {\n+ callAsync: function (target, assetData, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getBalanceAndAllowance(address,bytes)', [target,\n+ assetData\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getBalanceAndAllowance(address,bytes)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getOrdersAndTradersInfo = {\n+ callAsync: function (orders, takerAddresses, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getOrdersAndTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])', [orders,\n+ takerAddresses\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getOrdersAndTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getTradersInfo = {\n+ callAsync: function (orders, takerAddresses, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])', [orders,\n+ takerAddresses\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getERC721TokenOwner = {\n+ callAsync: function (token, tokenId, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getERC721TokenOwner(address,uint256)', [token,\n+ tokenId\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getERC721TokenOwner(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getBalancesAndAllowances = {\n+ callAsync: function (target, assetData, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getBalancesAndAllowances(address,bytes[])', [target,\n+ assetData\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getBalancesAndAllowances(address,bytes[])');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.getTraderInfo = {\n+ callAsync: function (order, takerAddress, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('getTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)', [order,\n+ takerAddress\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('getTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ OrderValidatorContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults, _exchange, _zrxAssetData) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, OrderValidatorContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange, _zrxAssetData)];\n+ });\n+ });\n+ };\n+ OrderValidatorContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults, _exchange, _zrxAssetData) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_b) {\n+ switch (_b.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ _a = __read(base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [_exchange,\n+ _zrxAssetData\n+ ], base_contract_1.BaseContract._bigNumberToString), 2), _exchange = _a[0], _zrxAssetData = _a[1];\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, [_exchange,\n+ _zrxAssetData\n+ ]);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _b.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _b.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _b.sent();\n+ utils_1.logUtils.log(\"OrderValidator successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new OrderValidatorContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [_exchange,\n+ _zrxAssetData\n+ ];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return OrderValidatorContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.OrderValidatorContract = OrderValidatorContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=order_validator.js.map\n\\ No newline at end of file" + }, + { + "sha": "a02c58b10df8e996b67ef092b87770c9c0317092", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/order_validator.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"order_validator.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/order_validator.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "2438f6cd1670ad5a67a6189d68a77347b142e9ac", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.d.ts", + "status": "added", + "additions": 83, + "deletions": 0, + "changes": 83, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,83 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, TxDataPayable, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type WETH9EventArgs = WETH9ApprovalEventArgs | WETH9TransferEventArgs | WETH9DepositEventArgs | WETH9WithdrawalEventArgs;\n+export declare enum WETH9Events {\n+ Approval = \"Approval\",\n+ Transfer = \"Transfer\",\n+ Deposit = \"Deposit\",\n+ Withdrawal = \"Withdrawal\"\n+}\n+export interface WETH9ApprovalEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _spender: string;\n+ _value: BigNumber;\n+}\n+export interface WETH9TransferEventArgs extends DecodedLogArgs {\n+ _from: string;\n+ _to: string;\n+ _value: BigNumber;\n+}\n+export interface WETH9DepositEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _value: BigNumber;\n+}\n+export interface WETH9WithdrawalEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _value: BigNumber;\n+}\n+export declare class WETH9Contract extends BaseContract {\n+ name: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ approve: {\n+ sendTransactionAsync(guy: string, wad: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(guy: string, wad: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(guy: string, wad: BigNumber): string;\n+ callAsync(guy: string, wad: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ totalSupply: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferFrom: {\n+ sendTransactionAsync(src: string, dst: string, wad: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(src: string, dst: string, wad: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(src: string, dst: string, wad: BigNumber): string;\n+ callAsync(src: string, dst: string, wad: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ withdraw: {\n+ sendTransactionAsync(wad: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(wad: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(wad: BigNumber): string;\n+ callAsync(wad: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ decimals: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ balanceOf: {\n+ callAsync(index_0: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ symbol: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transfer: {\n+ sendTransactionAsync(dst: string, wad: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(dst: string, wad: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(dst: string, wad: BigNumber): string;\n+ callAsync(dst: string, wad: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ deposit: {\n+ sendTransactionAsync(txData?: Partial): Promise;\n+ estimateGasAsync(txData?: Partial): Promise;\n+ getABIEncodedTransactionData(): string;\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ allowance: {\n+ callAsync(index_0: string, index_1: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=weth9.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "520ff691fd0ddc2c622cba31cf6861191e7cab06", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"weth9.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/weth9.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,cAAc,GACpB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,wBAAwB,CAAC;AAE/B,oBAAY,WAAW;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,UAAU,eAAe;CAC5B;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;CACrB;AAMD,qBAAa,aAAc,SAAQ,YAAY;IACpC,IAAI;;MAyBT;IACK,OAAO;;;;;MAoFZ;IACK,WAAW;;MAyBhB;IACK,YAAY;;;;;MA6FjB;IACK,QAAQ;;;;;MA2Eb;IACK,QAAQ;;MAyBb;IACK,SAAS;;MA2Bd;IACK,MAAM;;MAyBX;IACK,QAAQ;;;;;MAoFb;IACK,OAAO;;;;;MAkEZ;IACK,SAAS;;MA6Bd;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,aAAa,CAAC;WASL,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,aAAa,CAAC;gBAyBb,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "a340bf0a7ddef0667a58e500bd3e9ab1e6979155", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.js", + "status": "added", + "additions": 682, + "deletions": 0, + "changes": 682, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,682 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var WETH9Events;\n+(function (WETH9Events) {\n+ WETH9Events[\"Approval\"] = \"Approval\";\n+ WETH9Events[\"Transfer\"] = \"Transfer\";\n+ WETH9Events[\"Deposit\"] = \"Deposit\";\n+ WETH9Events[\"Withdrawal\"] = \"Withdrawal\";\n+})(WETH9Events = exports.WETH9Events || (exports.WETH9Events = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var WETH9Contract = /** @class */ (function (_super) {\n+ __extends(WETH9Contract, _super);\n+ function WETH9Contract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'WETH9', abi, address, supportedProvider, txDefaults) || this;\n+ _this.name = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('name()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('name()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.approve = {\n+ sendTransactionAsync: function (guy, wad, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [guy,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.approve.estimateGasAsync.bind(self, guy, wad))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (guy, wad, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [guy,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (guy, wad) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [guy,\n+ wad\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (guy, wad, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [guy,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.totalSupply = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('totalSupply()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('totalSupply()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferFrom = {\n+ sendTransactionAsync: function (src, dst, wad, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [src,\n+ dst,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferFrom.estimateGasAsync.bind(self, src, dst, wad))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (src, dst, wad, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [src,\n+ dst,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (src, dst, wad) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [src,\n+ dst,\n+ wad\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (src, dst, wad, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [src,\n+ dst,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.withdraw = {\n+ sendTransactionAsync: function (wad, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('withdraw(uint256)', [wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.withdraw.estimateGasAsync.bind(self, wad))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (wad, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('withdraw(uint256)', [wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (wad) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('withdraw(uint256)', [wad\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (wad, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('withdraw(uint256)', [wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('withdraw(uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.decimals = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('decimals()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('decimals()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.balanceOf = {\n+ callAsync: function (index_0, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('balanceOf(address)', [index_0\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('balanceOf(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.symbol = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('symbol()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('symbol()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transfer = {\n+ sendTransactionAsync: function (dst, wad, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [dst,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transfer.estimateGasAsync.bind(self, dst, wad))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (dst, wad, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [dst,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (dst, wad) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transfer(address,uint256)', [dst,\n+ wad\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (dst, wad, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [dst,\n+ wad\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transfer(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.deposit = {\n+ sendTransactionAsync: function (txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('deposit()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.deposit.estimateGasAsync.bind(self))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('deposit()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function () {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('deposit()', []);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('deposit()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('deposit()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.allowance = {\n+ callAsync: function (index_0, index_1, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('allowance(address,address)', [index_0,\n+ index_1\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('allowance(address,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ WETH9Contract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, WETH9Contract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ WETH9Contract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"WETH9 successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new WETH9Contract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return WETH9Contract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.WETH9Contract = WETH9Contract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=weth9.js.map\n\\ No newline at end of file" + }, + { + "sha": "03ea0f0acd458930b8fd0008c4b2324fc270fc3a", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/weth9.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"weth9.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/weth9.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "845352b288ecf542ef193c8544e1c06a51c026d3", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.d.ts", + "status": "added", + "additions": 61, + "deletions": 0, + "changes": 61, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,61 @@\n+import { BaseContract } from '@0x/base-contract';\n+import { BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, TxData, SupportedProvider } from 'ethereum-types';\n+import { BigNumber } from '@0x/utils';\n+import { SimpleContractArtifact } from '@0x/types';\n+export declare type ZRXTokenEventArgs = ZRXTokenTransferEventArgs | ZRXTokenApprovalEventArgs;\n+export declare enum ZRXTokenEvents {\n+ Transfer = \"Transfer\",\n+ Approval = \"Approval\"\n+}\n+export interface ZRXTokenTransferEventArgs extends DecodedLogArgs {\n+ _from: string;\n+ _to: string;\n+ _value: BigNumber;\n+}\n+export interface ZRXTokenApprovalEventArgs extends DecodedLogArgs {\n+ _owner: string;\n+ _spender: string;\n+ _value: BigNumber;\n+}\n+export declare class ZRXTokenContract extends BaseContract {\n+ name: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ approve: {\n+ sendTransactionAsync(_spender: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_spender: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_spender: string, _value: BigNumber): string;\n+ callAsync(_spender: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ totalSupply: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transferFrom: {\n+ sendTransactionAsync(_from: string, _to: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_from: string, _to: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_from: string, _to: string, _value: BigNumber): string;\n+ callAsync(_from: string, _to: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ decimals: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ balanceOf: {\n+ callAsync(_owner: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ symbol: {\n+ callAsync(callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ transfer: {\n+ sendTransactionAsync(_to: string, _value: BigNumber, txData?: Partial): Promise;\n+ estimateGasAsync(_to: string, _value: BigNumber, txData?: Partial): Promise;\n+ getABIEncodedTransactionData(_to: string, _value: BigNumber): string;\n+ callAsync(_to: string, _value: BigNumber, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ allowance: {\n+ callAsync(_owner: string, _spender: string, callData?: Partial, defaultBlock?: number | BlockParamLiteral | undefined): Promise;\n+ };\n+ static deployFrom0xArtifactAsync(artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ static deployAsync(bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial): Promise;\n+ constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial);\n+}\n+//# sourceMappingURL=zrx_token.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "0c6d583f91c8aa44f81ae567df770df17d90308e", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"zrx_token.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/zrx_token.ts\"],\"names\":[],\"mappings\":\"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAa,MAAM,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAMnD,oBAAY,iBAAiB,GACvB,yBAAyB,GACzB,yBAAyB,CAAC;AAEhC,oBAAY,cAAc;IACtB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACxB;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACrB;AAMD,qBAAa,gBAAiB,SAAQ,YAAY;IACvC,IAAI;;MAyBT;IACK,OAAO;;;;;MAoFZ;IACK,WAAW;;MAyBhB;IACK,YAAY;;;;;MA6FjB;IACK,QAAQ;;MAyBb;IACK,SAAS;;MA2Bd;IACK,MAAM;;MAyBX;IACK,QAAQ;;;;;MAoFb;IACK,SAAS;;MA6Bd;WACkB,yBAAyB,CACzC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,EACnD,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC;WASR,WAAW,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC;gBAyBhB,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;CAIpH\"}\n\\ No newline at end of file" + }, + { + "sha": "3ff660ea5f8fc1ad8a9a83593c219fed8553b56d", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.js", + "status": "added", + "additions": 534, + "deletions": 0, + "changes": 534, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,534 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+var __assign = (this && this.__assign) || function () {\n+ __assign = Object.assign || function(t) {\n+ for (var s, i = 1, n = arguments.length; i < n; i++) {\n+ s = arguments[i];\n+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n+ t[p] = s[p];\n+ }\n+ return t;\n+ };\n+ return __assign.apply(this, arguments);\n+};\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name\n+// tslint:disable:no-unused-variable\n+// tslint:disable:no-unbound-method\n+var base_contract_1 = require(\"@0x/base-contract\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var ethers = require(\"ethers\");\n+var _ = require(\"lodash\");\n+var ZRXTokenEvents;\n+(function (ZRXTokenEvents) {\n+ ZRXTokenEvents[\"Transfer\"] = \"Transfer\";\n+ ZRXTokenEvents[\"Approval\"] = \"Approval\";\n+})(ZRXTokenEvents = exports.ZRXTokenEvents || (exports.ZRXTokenEvents = {}));\n+/* istanbul ignore next */\n+// tslint:disable:no-parameter-reassignment\n+// tslint:disable-next-line:class-name\n+var ZRXTokenContract = /** @class */ (function (_super) {\n+ __extends(ZRXTokenContract, _super);\n+ function ZRXTokenContract(abi, address, supportedProvider, txDefaults) {\n+ var _this = _super.call(this, 'ZRXToken', abi, address, supportedProvider, txDefaults) || this;\n+ _this.name = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('name()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('name()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.approve = {\n+ sendTransactionAsync: function (_spender, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.approve.estimateGasAsync.bind(self, _spender, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_spender, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_spender, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_spender, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('approve(address,uint256)', [_spender,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.totalSupply = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('totalSupply()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('totalSupply()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transferFrom = {\n+ sendTransactionAsync: function (_from, _to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transferFrom.estimateGasAsync.bind(self, _from, _to, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_from, _to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_from, _to, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_from, _to, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [_from,\n+ _to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.decimals = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('decimals()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('decimals()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.balanceOf = {\n+ callAsync: function (_owner, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('balanceOf(address)', [_owner\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('balanceOf(address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.symbol = {\n+ callAsync: function (callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('symbol()', []);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('symbol()');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.transfer = {\n+ sendTransactionAsync: function (_to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, txHash;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults(), self.transfer.estimateGasAsync.bind(self, _to, _value))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ return [2 /*return*/, txHash];\n+ }\n+ });\n+ });\n+ },\n+ estimateGasAsync: function (_to, _value, txData) {\n+ if (txData === void 0) { txData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, txDataWithDefaults, gas;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, txData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.estimateGasAsync(txDataWithDefaults)];\n+ case 2:\n+ gas = _a.sent();\n+ return [2 /*return*/, gas];\n+ }\n+ });\n+ });\n+ },\n+ getABIEncodedTransactionData: function (_to, _value) {\n+ var self = this;\n+ var abiEncodedTransactionData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return abiEncodedTransactionData;\n+ },\n+ callAsync: function (_to, _value, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('transfer(address,uint256)', [_to,\n+ _value\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('transfer(address,uint256)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ _this.allowance = {\n+ callAsync: function (_owner, _spender, callData, defaultBlock) {\n+ if (callData === void 0) { callData = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var self, encodedData, callDataWithDefaults, rawCallResult, abiEncoder, result;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ self = this;\n+ encodedData = self._strictEncodeArguments('allowance(address,address)', [_owner,\n+ _spender\n+ ]);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync(__assign({ to: self.address }, callData, { data: encodedData }), self._web3Wrapper.getContractDefaults())];\n+ case 1:\n+ callDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock)];\n+ case 2:\n+ rawCallResult = _a.sent();\n+ base_contract_1.BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);\n+ abiEncoder = self._lookupAbiEncoder('allowance(address,address)');\n+ result = abiEncoder.strictDecodeReturnValue(rawCallResult);\n+ // tslint:enable boolean-naming\n+ return [2 /*return*/, result];\n+ }\n+ });\n+ });\n+ },\n+ };\n+ utils_1.classUtils.bindAll(_this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n+ return _this;\n+ }\n+ ZRXTokenContract.deployFrom0xArtifactAsync = function (artifact, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, bytecode, abi;\n+ return __generator(this, function (_a) {\n+ if (_.isUndefined(artifact.compilerOutput)) {\n+ throw new Error('Compiler output not found in the artifact file');\n+ }\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ bytecode = artifact.compilerOutput.evm.bytecode.object;\n+ abi = artifact.compilerOutput.abi;\n+ return [2 /*return*/, ZRXTokenContract.deployAsync(bytecode, abi, provider, txDefaults)];\n+ });\n+ });\n+ };\n+ ZRXTokenContract.deployAsync = function (bytecode, abi, supportedProvider, txDefaults) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var provider, constructorAbi, iface, deployInfo, txData, web3Wrapper, txDataWithDefaults, txHash, txReceipt, contractInstance;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ constructorAbi = base_contract_1.BaseContract._lookupConstructorAbi(abi);\n+ base_contract_1.BaseContract._formatABIDataItemList(constructorAbi.inputs, [], base_contract_1.BaseContract._bigNumberToString);\n+ iface = new ethers.utils.Interface(abi);\n+ deployInfo = iface.deployFunction;\n+ txData = deployInfo.encode(bytecode, []);\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(provider);\n+ return [4 /*yield*/, base_contract_1.BaseContract._applyDefaultsToTxDataAsync({ data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper))];\n+ case 1:\n+ txDataWithDefaults = _a.sent();\n+ return [4 /*yield*/, web3Wrapper.sendTransactionAsync(txDataWithDefaults)];\n+ case 2:\n+ txHash = _a.sent();\n+ utils_1.logUtils.log(\"transactionHash: \" + txHash);\n+ return [4 /*yield*/, web3Wrapper.awaitTransactionSuccessAsync(txHash)];\n+ case 3:\n+ txReceipt = _a.sent();\n+ utils_1.logUtils.log(\"ZRXToken successfully deployed at \" + txReceipt.contractAddress);\n+ contractInstance = new ZRXTokenContract(abi, txReceipt.contractAddress, provider, txDefaults);\n+ contractInstance.constructorArgs = [];\n+ return [2 /*return*/, contractInstance];\n+ }\n+ });\n+ });\n+ };\n+ return ZRXTokenContract;\n+}(base_contract_1.BaseContract)); // tslint:disable:max-file-line-count\n+exports.ZRXTokenContract = ZRXTokenContract;\n+// tslint:enable:no-unbound-method\n+//# sourceMappingURL=zrx_token.js.map\n\\ No newline at end of file" + }, + { + "sha": "f659acb28f52bf725aa3d9968e01203b72ce2298", + "filename": "packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/generated-wrappers/zrx_token.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"zrx_token.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/generated-wrappers/zrx_token.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "9d24af4fe739f4ba39fc6d3a1a1832a8a937700e", + "filename": "packages/abi-gen-wrappers/lib/src/index.d.ts", + "status": "added", + "additions": 17, + "deletions": 0, + "changes": 17, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/index.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/index.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/index.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,17 @@\n+export * from './generated-wrappers/asset_proxy_owner';\n+export * from './generated-wrappers/dummy_erc20_token';\n+export * from './generated-wrappers/dummy_erc721_token';\n+export * from './generated-wrappers/dutch_auction';\n+export * from './generated-wrappers/erc20_proxy';\n+export * from './generated-wrappers/erc20_token';\n+export * from './generated-wrappers/erc721_proxy';\n+export * from './generated-wrappers/erc721_token';\n+export * from './generated-wrappers/exchange';\n+export * from './generated-wrappers/forwarder';\n+export * from './generated-wrappers/i_validator';\n+export * from './generated-wrappers/i_wallet';\n+export * from './generated-wrappers/multi_asset_proxy';\n+export * from './generated-wrappers/order_validator';\n+export * from './generated-wrappers/weth9';\n+export * from './generated-wrappers/zrx_token';\n+//# sourceMappingURL=index.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "9d3866457f84ba691c9e6f2a693a58e55d429c04", + "filename": "packages/abi-gen-wrappers/lib/src/index.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/index.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/index.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/index.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"index.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC\"}\n\\ No newline at end of file" + }, + { + "sha": "75d38839c9772efa56c66da7d719b22cbdc51f1c", + "filename": "packages/abi-gen-wrappers/lib/src/index.js", + "status": "added", + "additions": 22, + "deletions": 0, + "changes": 22, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/index.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/index.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/index.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,22 @@\n+\"use strict\";\n+function __export(m) {\n+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n+}\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+__export(require(\"./generated-wrappers/asset_proxy_owner\"));\n+__export(require(\"./generated-wrappers/dummy_erc20_token\"));\n+__export(require(\"./generated-wrappers/dummy_erc721_token\"));\n+__export(require(\"./generated-wrappers/dutch_auction\"));\n+__export(require(\"./generated-wrappers/erc20_proxy\"));\n+__export(require(\"./generated-wrappers/erc20_token\"));\n+__export(require(\"./generated-wrappers/erc721_proxy\"));\n+__export(require(\"./generated-wrappers/erc721_token\"));\n+__export(require(\"./generated-wrappers/exchange\"));\n+__export(require(\"./generated-wrappers/forwarder\"));\n+__export(require(\"./generated-wrappers/i_validator\"));\n+__export(require(\"./generated-wrappers/i_wallet\"));\n+__export(require(\"./generated-wrappers/multi_asset_proxy\"));\n+__export(require(\"./generated-wrappers/order_validator\"));\n+__export(require(\"./generated-wrappers/weth9\"));\n+__export(require(\"./generated-wrappers/zrx_token\"));\n+//# sourceMappingURL=index.js.map\n\\ No newline at end of file" + }, + { + "sha": "fd2261e4ef385cbdd4fec7f03c4a4dd24d17e895", + "filename": "packages/abi-gen-wrappers/lib/src/index.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/index.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/lib/src/index.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/lib/src/index.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\";;;;;AAAA,4DAAuD;AACvD,4DAAuD;AACvD,6DAAwD;AACxD,wDAAmD;AACnD,sDAAiD;AACjD,sDAAiD;AACjD,uDAAkD;AAClD,uDAAkD;AAClD,mDAA8C;AAC9C,oDAA+C;AAC/C,sDAAiD;AACjD,mDAA8C;AAC9C,4DAAuD;AACvD,0DAAqD;AACrD,gDAA2C;AAC3C,oDAA+C\"}\n\\ No newline at end of file" + }, + { + "sha": "f820c27860973d071098ec41cd38b994a41e8a7b", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -1489,7 +1489,7 @@ _secondsTimeLocked\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('AssetProxyOwner', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('AssetProxyOwner', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "88e2a4bb6d0181b268f67eb8bd243e528d164a9f", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc20_token.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc20_token.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc20_token.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc20_token.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -823,7 +823,7 @@ _totalSupply\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('DummyERC20Token', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('DummyERC20Token', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "fc01d4c8a0a3a3a2fcee606bd84310d27d635412", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc721_token.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc721_token.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc721_token.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/dummy_erc721_token.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -1001,7 +1001,7 @@ _symbol\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('DummyERC721Token', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('DummyERC721Token', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "36c9816ada0af8225e54c6f108e3c41c97169643", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -245,7 +245,7 @@ export class DutchAuctionContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('DutchAuction', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('DutchAuction', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "4bf1cc8240ce9fa9699e792150340f9a6edd4657", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/erc20_proxy.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/erc20_proxy.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/erc20_proxy.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/erc20_proxy.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -525,7 +525,7 @@ export class ERC20ProxyContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('ERC20Proxy', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('ERC20Proxy', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "737f204b7b6833b5168dadb6e5144bdd2aac1f74", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/erc20_token.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/erc20_token.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/erc20_token.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/erc20_token.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -428,7 +428,7 @@ export class ERC20TokenContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('ERC20Token', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('ERC20Token', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "a8ce0eebc947c8eba0a419dd81fd19b974fbf9da", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/erc721_proxy.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/erc721_proxy.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/erc721_proxy.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/erc721_proxy.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -525,7 +525,7 @@ export class ERC721ProxyContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('ERC721Proxy', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('ERC721Proxy', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "666479e1f1fa0d0227233b4a1ecce249b2a4db1a", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/erc721_token.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/erc721_token.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/erc721_token.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/erc721_token.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -663,7 +663,7 @@ export class ERC721TokenContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('ERC721Token', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('ERC721Token', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "986f02617395b05748fe8905620714cdb3dd5501", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -2274,7 +2274,7 @@ export class ExchangeContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('Exchange', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('Exchange', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "2e3ba60ffedb1a44fb762e6623dacbdaaa41ff0f", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts", + "status": "modified", + "additions": 4, + "deletions": 3, + "changes": 7, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -291,8 +291,9 @@ export class ForwarderContract extends BaseContract {\n feeRecipient\n ),\n );\n- const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);\n- return txHash;\n+ console.log(txDataWithDefaults)\n+ // const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);\n+ return '123';\n },\n async estimateGasAsync(\n orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,\n@@ -518,7 +519,7 @@ _wethAssetData\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('Forwarder', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('Forwarder', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "4cadd8ed25aab04ebc500cea4bd66b7aa63d7924", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/i_validator.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/i_validator.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/i_validator.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/i_validator.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -91,7 +91,7 @@ export class IValidatorContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('IValidator', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('IValidator', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "491028c2320619ecba35479fe3d0c3f2cbd7388e", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/i_wallet.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/i_wallet.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/i_wallet.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/i_wallet.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -89,7 +89,7 @@ export class IWalletContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('IWallet', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('IWallet', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "76d66120b8aa4c846ccf16fcac22040389e58ad0", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/multi_asset_proxy.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/multi_asset_proxy.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/multi_asset_proxy.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/multi_asset_proxy.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -664,7 +664,7 @@ export class MultiAssetProxyContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('MultiAssetProxy', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('MultiAssetProxy', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "5829909e3b1037c8382e6c96c9f8ba81aa09ff65", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/order_validator.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/order_validator.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/order_validator.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/order_validator.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -283,7 +283,7 @@ _zrxAssetData\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('OrderValidator', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('OrderValidator', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "0f528919f09bc6e947e298f6c8724da7adb628e3", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/weth9.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/weth9.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/weth9.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/weth9.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -663,7 +663,7 @@ export class WETH9Contract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('WETH9', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('WETH9', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "f89c246d656fd98fea4b9c074adcefb22fad012d", + "filename": "packages/abi-gen-wrappers/src/generated-wrappers/zrx_token.ts", + "status": "modified", + "additions": 1, + "deletions": 1, + "changes": 2, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/zrx_token.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/abi-gen-wrappers/src/generated-wrappers/zrx_token.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/abi-gen-wrappers/src/generated-wrappers/zrx_token.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -506,7 +506,7 @@ export class ZRXTokenContract extends BaseContract {\n return contractInstance;\n }\n constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) {\n- super('ZRXToken', abi, address, providerUtils.standardizeOrThrow(supportedProvider), txDefaults);\n+ super('ZRXToken', abi, address, supportedProvider, txDefaults);\n classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']);\n }\n } // tslint:disable:max-file-line-count" + }, + { + "sha": "f10e9ca4639e6957f58f06a33f9ebad881405b15", + "filename": "packages/asset-buyer/lib/src/asset_buyer.d.ts", + "status": "added", + "additions": 109, + "deletions": 0, + "changes": 109, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/asset_buyer.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/asset_buyer.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/asset_buyer.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,109 @@\n+import { SignedOrder } from '@0x/order-utils';\n+import { BigNumber } from '@0x/utils';\n+import { SupportedProvider, ZeroExProvider } from 'ethereum-types';\n+import { AssetBuyerOpts, BuyQuote, BuyQuoteExecutionOpts, BuyQuoteRequestOpts, LiquidityForAssetData, LiquidityRequestOpts, OrderProvider, OrdersAndFillableAmounts } from './types';\n+export declare class AssetBuyer {\n+ readonly provider: ZeroExProvider;\n+ readonly orderProvider: OrderProvider;\n+ readonly networkId: number;\n+ readonly orderRefreshIntervalMs: number;\n+ readonly expiryBufferSeconds: number;\n+ private readonly _contractWrappers;\n+ private readonly _ordersEntryMap;\n+ /**\n+ * Instantiates a new AssetBuyer instance given existing liquidity in the form of orders and feeOrders.\n+ * @param supportedProvider The Provider instance you would like to use for interacting with the Ethereum network.\n+ * @param orders A non-empty array of objects that conform to SignedOrder. All orders must have the same makerAssetData and takerAssetData (WETH).\n+ * @param feeOrders A array of objects that conform to SignedOrder. All orders must have the same makerAssetData (ZRX) and takerAssetData (WETH). Defaults to an empty array.\n+ * @param options Initialization options for the AssetBuyer. See type definition for details.\n+ *\n+ * @return An instance of AssetBuyer\n+ */\n+ static getAssetBuyerForProvidedOrders(supportedProvider: SupportedProvider, orders: SignedOrder[], options?: Partial): AssetBuyer;\n+ /**\n+ * Instantiates a new AssetBuyer instance given a [Standard Relayer API](https://github.com/0xProject/standard-relayer-api) endpoint\n+ * @param supportedProvider The Provider instance you would like to use for interacting with the Ethereum network.\n+ * @param sraApiUrl The standard relayer API base HTTP url you would like to source orders from.\n+ * @param options Initialization options for the AssetBuyer. See type definition for details.\n+ *\n+ * @return An instance of AssetBuyer\n+ */\n+ static getAssetBuyerForStandardRelayerAPIUrl(supportedProvider: SupportedProvider, sraApiUrl: string, options?: Partial): AssetBuyer;\n+ /**\n+ * Instantiates a new AssetBuyer instance\n+ * @param supportedProvider The Provider instance you would like to use for interacting with the Ethereum network.\n+ * @param orderProvider An object that conforms to OrderProvider, see type for definition.\n+ * @param options Initialization options for the AssetBuyer. See type definition for details.\n+ *\n+ * @return An instance of AssetBuyer\n+ */\n+ constructor(supportedProvider: SupportedProvider, orderProvider: OrderProvider, options?: Partial);\n+ /**\n+ * Get a `BuyQuote` containing all information relevant to fulfilling a buy given a desired assetData.\n+ * You can then pass the `BuyQuote` to `executeBuyQuoteAsync` to execute the buy.\n+ * @param assetData The assetData of the desired asset to buy (for more info: https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).\n+ * @param assetBuyAmount The amount of asset to buy.\n+ * @param options Options for the request. See type definition for more information.\n+ *\n+ * @return An object that conforms to BuyQuote that satisfies the request. See type definition for more information.\n+ */\n+ getBuyQuoteAsync(assetData: string, assetBuyAmount: BigNumber, options?: Partial): Promise;\n+ /**\n+ * Get a `BuyQuote` containing all information relevant to fulfilling a buy given a desired ERC20 token address.\n+ * You can then pass the `BuyQuote` to `executeBuyQuoteAsync` to execute the buy.\n+ * @param tokenAddress The ERC20 token address.\n+ * @param assetBuyAmount The amount of asset to buy.\n+ * @param options Options for the request. See type definition for more information.\n+ *\n+ * @return An object that conforms to BuyQuote that satisfies the request. See type definition for more information.\n+ */\n+ getBuyQuoteForERC20TokenAddressAsync(tokenAddress: string, assetBuyAmount: BigNumber, options?: Partial): Promise;\n+ /**\n+ * Returns information about available liquidity for an asset\n+ * Does not factor in slippage or fees\n+ * @param assetData The assetData of the desired asset to buy (for more info: https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).\n+ * @param options Options for the request. See type definition for more information.\n+ *\n+ * @return An object that conforms to LiquidityForAssetData that satisfies the request. See type definition for more information.\n+ */\n+ getLiquidityForAssetDataAsync(assetData: string, options?: Partial): Promise;\n+ /**\n+ * Given a BuyQuote and desired rate, attempt to execute the buy.\n+ * @param buyQuote An object that conforms to BuyQuote. See type definition for more information.\n+ * @param options Options for the execution of the BuyQuote. See type definition for more information.\n+ *\n+ * @return A promise of the txHash.\n+ */\n+ executeBuyQuoteAsync(buyQuote: BuyQuote, options?: Partial): Promise;\n+ /**\n+ * Given a BuyQuote and desired rate, attempt to execute the buy.\n+ * @param buyQuote An object that conforms to BuyQuote. See type definition for more information.\n+ * @param options Options for the execution of the BuyQuote. See type definition for more information.\n+ *\n+ * @return A promise of the txHash.\n+ */\n+ mockExecuteBuyQuoteAsync(buyQuote: BuyQuote, options?: Partial): Promise;\n+ /**\n+ * Get the asset data of all assets that are purchaseable with ether token (wETH) in the order provider passed in at init.\n+ *\n+ * @return An array of asset data strings that can be purchased using wETH.\n+ */\n+ getAvailableAssetDatasAsync(): Promise;\n+ /**\n+ * Grab orders from the map, if there is a miss or it is time to refresh, fetch and process the orders\n+ * @param assetData The assetData of the desired asset to buy (for more info: https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).\n+ * @param shouldForceOrderRefresh If set to true, new orders and state will be fetched instead of waiting for the next orderRefreshIntervalMs.\n+ */\n+ getOrdersAndFillableAmountsAsync(assetData: string, shouldForceOrderRefresh: boolean): Promise;\n+ /**\n+ * Get the assetData that represents the WETH token.\n+ * Will throw if WETH does not exist for the current network.\n+ */\n+ private _getEtherTokenAssetDataOrThrow;\n+ /**\n+ * Get the assetData that represents the ZRX token.\n+ * Will throw if ZRX does not exist for the current network.\n+ */\n+ private _getZrxTokenAssetDataOrThrow;\n+}\n+//# sourceMappingURL=asset_buyer.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "8f86a825a3c8892d4a94a67a2c8fd2b8b94ae0be", + "filename": "packages/asset-buyer/lib/src/asset_buyer.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/asset_buyer.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/asset_buyer.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/asset_buyer.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"asset_buyer.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../src/asset_buyer.ts\"],\"names\":[],\"mappings\":\"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAiB,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMnE,OAAO,EAEH,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAajB,qBAAa,UAAU;IACnB,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,sBAAsB,EAAE,MAAM,CAAC;IAC/C,SAAgB,mBAAmB,EAAE,MAAM,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAC9D;;;;;;;;OAQG;WACW,8BAA8B,CACxC,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,UAAU;IAOb;;;;;;;OAOG;WACW,qCAAqC,CAC/C,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,UAAU;IAQb;;;;;;;OAOG;gBAEC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM;IAqBzC;;;;;;;;OAQG;IACU,gBAAgB,CACzB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,SAAS,EACzB,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC3C,OAAO,CAAC,QAAQ,CAAC;IAmCpB;;;;;;;;OAQG;IACU,oCAAoC,CAC7C,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,SAAS,EACzB,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC3C,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;;OAOG;IACU,6BAA6B,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAC5C,OAAO,CAAC,qBAAqB,CAAC;IAwBjC;;;;;;OAMG;IACU,oBAAoB,CAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAC7C,OAAO,CAAC,MAAM,CAAC;IA+Dd;;;;;;GAMD;IACU,wBAAwB,CACjC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAC7C,OAAO,CAAC,MAAM,CAAC;IA+DlB;;;;OAIG;IACU,2BAA2B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7D;;;;OAIG;IACU,gCAAgC,CACzC,SAAS,EAAE,MAAM,EACjB,uBAAuB,EAAE,OAAO,GACjC,OAAO,CAAC,wBAAwB,CAAC;IA8CpC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAGtC;;;OAGG;IACH,OAAO,CAAC,4BAA4B;CAGvC\"}\n\\ No newline at end of file" + }, + { + "sha": "893ed51519527120840a98c0536996958c392d1c", + "filename": "packages/asset-buyer/lib/src/asset_buyer.js", + "status": "added", + "additions": 457, + "deletions": 0, + "changes": 457, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/asset_buyer.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/asset_buyer.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/asset_buyer.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,457 @@\n+\"use strict\";\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+var __read = (this && this.__read) || function (o, n) {\n+ var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n+ if (!m) return o;\n+ var i = m.call(o), r, ar = [], e;\n+ try {\n+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n+ }\n+ catch (error) { e = { error: error }; }\n+ finally {\n+ try {\n+ if (r && !r.done && (m = i[\"return\"])) m.call(i);\n+ }\n+ finally { if (e) throw e.error; }\n+ }\n+ return ar;\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+var contract_wrappers_1 = require(\"@0x/contract-wrappers\");\n+var json_schemas_1 = require(\"@0x/json-schemas\");\n+var utils_1 = require(\"@0x/utils\");\n+var web3_wrapper_1 = require(\"@0x/web3-wrapper\");\n+var _ = require(\"lodash\");\n+var constants_1 = require(\"./constants\");\n+var basic_order_provider_1 = require(\"./order_providers/basic_order_provider\");\n+var standard_relayer_api_order_provider_1 = require(\"./order_providers/standard_relayer_api_order_provider\");\n+var types_1 = require(\"./types\");\n+var assert_1 = require(\"./utils/assert\");\n+var asset_data_utils_1 = require(\"./utils/asset_data_utils\");\n+var buy_quote_calculator_1 = require(\"./utils/buy_quote_calculator\");\n+var calculate_liquidity_1 = require(\"./utils/calculate_liquidity\");\n+var order_provider_response_processor_1 = require(\"./utils/order_provider_response_processor\");\n+var AssetBuyer = /** @class */ (function () {\n+ /**\n+ * Instantiates a new AssetBuyer instance\n+ * @param supportedProvider The Provider instance you would like to use for interacting with the Ethereum network.\n+ * @param orderProvider An object that conforms to OrderProvider, see type for definition.\n+ * @param options Initialization options for the AssetBuyer. See type definition for details.\n+ *\n+ * @return An instance of AssetBuyer\n+ */\n+ function AssetBuyer(supportedProvider, orderProvider, options) {\n+ if (options === void 0) { options = {}; }\n+ // cache of orders along with the time last updated keyed by assetData\n+ this._ordersEntryMap = {};\n+ var _a = _.merge({}, constants_1.constants.DEFAULT_ASSET_BUYER_OPTS, options), networkId = _a.networkId, orderRefreshIntervalMs = _a.orderRefreshIntervalMs, expiryBufferSeconds = _a.expiryBufferSeconds;\n+ var provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ assert_1.assert.isValidOrderProvider('orderProvider', orderProvider);\n+ assert_1.assert.isNumber('networkId', networkId);\n+ assert_1.assert.isNumber('orderRefreshIntervalMs', orderRefreshIntervalMs);\n+ assert_1.assert.isNumber('expiryBufferSeconds', expiryBufferSeconds);\n+ this.provider = provider;\n+ this.orderProvider = orderProvider;\n+ this.networkId = networkId;\n+ this.orderRefreshIntervalMs = orderRefreshIntervalMs;\n+ this.expiryBufferSeconds = expiryBufferSeconds;\n+ this._contractWrappers = new contract_wrappers_1.ContractWrappers(this.provider, {\n+ networkId: networkId,\n+ });\n+ }\n+ /**\n+ * Instantiates a new AssetBuyer instance given existing liquidity in the form of orders and feeOrders.\n+ * @param supportedProvider The Provider instance you would like to use for interacting with the Ethereum network.\n+ * @param orders A non-empty array of objects that conform to SignedOrder. All orders must have the same makerAssetData and takerAssetData (WETH).\n+ * @param feeOrders A array of objects that conform to SignedOrder. All orders must have the same makerAssetData (ZRX) and takerAssetData (WETH). Defaults to an empty array.\n+ * @param options Initialization options for the AssetBuyer. See type definition for details.\n+ *\n+ * @return An instance of AssetBuyer\n+ */\n+ AssetBuyer.getAssetBuyerForProvidedOrders = function (supportedProvider, orders, options) {\n+ if (options === void 0) { options = {}; }\n+ assert_1.assert.doesConformToSchema('orders', orders, json_schemas_1.schemas.signedOrdersSchema);\n+ assert_1.assert.assert(orders.length !== 0, \"Expected orders to contain at least one order\");\n+ var orderProvider = new basic_order_provider_1.BasicOrderProvider(orders);\n+ var assetBuyer = new AssetBuyer(supportedProvider, orderProvider, options);\n+ return assetBuyer;\n+ };\n+ /**\n+ * Instantiates a new AssetBuyer instance given a [Standard Relayer API](https://github.com/0xProject/standard-relayer-api) endpoint\n+ * @param supportedProvider The Provider instance you would like to use for interacting with the Ethereum network.\n+ * @param sraApiUrl The standard relayer API base HTTP url you would like to source orders from.\n+ * @param options Initialization options for the AssetBuyer. See type definition for details.\n+ *\n+ * @return An instance of AssetBuyer\n+ */\n+ AssetBuyer.getAssetBuyerForStandardRelayerAPIUrl = function (supportedProvider, sraApiUrl, options) {\n+ if (options === void 0) { options = {}; }\n+ var provider = utils_1.providerUtils.standardizeOrThrow(supportedProvider);\n+ assert_1.assert.isWebUri('sraApiUrl', sraApiUrl);\n+ var networkId = options.networkId || constants_1.constants.DEFAULT_ASSET_BUYER_OPTS.networkId;\n+ var orderProvider = new standard_relayer_api_order_provider_1.StandardRelayerAPIOrderProvider(sraApiUrl, networkId);\n+ var assetBuyer = new AssetBuyer(provider, orderProvider, options);\n+ return assetBuyer;\n+ };\n+ /**\n+ * Get a `BuyQuote` containing all information relevant to fulfilling a buy given a desired assetData.\n+ * You can then pass the `BuyQuote` to `executeBuyQuoteAsync` to execute the buy.\n+ * @param assetData The assetData of the desired asset to buy (for more info: https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).\n+ * @param assetBuyAmount The amount of asset to buy.\n+ * @param options Options for the request. See type definition for more information.\n+ *\n+ * @return An object that conforms to BuyQuote that satisfies the request. See type definition for more information.\n+ */\n+ AssetBuyer.prototype.getBuyQuoteAsync = function (assetData, assetBuyAmount, options) {\n+ if (options === void 0) { options = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, feePercentage, shouldForceOrderRefresh, slippagePercentage, zrxTokenAssetData, isMakerAssetZrxToken, _b, ordersAndFillableAmounts, feeOrdersAndFillableAmounts, buyQuote;\n+ return __generator(this, function (_c) {\n+ switch (_c.label) {\n+ case 0:\n+ _a = _.merge({}, constants_1.constants.DEFAULT_BUY_QUOTE_REQUEST_OPTS, options), feePercentage = _a.feePercentage, shouldForceOrderRefresh = _a.shouldForceOrderRefresh, slippagePercentage = _a.slippagePercentage;\n+ assert_1.assert.isString('assetData', assetData);\n+ assert_1.assert.isBigNumber('assetBuyAmount', assetBuyAmount);\n+ assert_1.assert.isValidPercentage('feePercentage', feePercentage);\n+ assert_1.assert.isBoolean('shouldForceOrderRefresh', shouldForceOrderRefresh);\n+ assert_1.assert.isNumber('slippagePercentage', slippagePercentage);\n+ zrxTokenAssetData = this._getZrxTokenAssetDataOrThrow();\n+ isMakerAssetZrxToken = assetData === zrxTokenAssetData;\n+ return [4 /*yield*/, Promise.all([\n+ this.getOrdersAndFillableAmountsAsync(assetData, shouldForceOrderRefresh),\n+ isMakerAssetZrxToken\n+ ? Promise.resolve(constants_1.constants.EMPTY_ORDERS_AND_FILLABLE_AMOUNTS)\n+ : this.getOrdersAndFillableAmountsAsync(zrxTokenAssetData, shouldForceOrderRefresh),\n+ shouldForceOrderRefresh,\n+ ])];\n+ case 1:\n+ _b = __read.apply(void 0, [_c.sent(), 2]), ordersAndFillableAmounts = _b[0], feeOrdersAndFillableAmounts = _b[1];\n+ if (ordersAndFillableAmounts.orders.length === 0) {\n+ throw new Error(types_1.AssetBuyerError.AssetUnavailable + \": For assetData \" + assetData);\n+ }\n+ buyQuote = buy_quote_calculator_1.buyQuoteCalculator.calculate(ordersAndFillableAmounts, feeOrdersAndFillableAmounts, assetBuyAmount, feePercentage, slippagePercentage, isMakerAssetZrxToken);\n+ return [2 /*return*/, buyQuote];\n+ }\n+ });\n+ });\n+ };\n+ /**\n+ * Get a `BuyQuote` containing all information relevant to fulfilling a buy given a desired ERC20 token address.\n+ * You can then pass the `BuyQuote` to `executeBuyQuoteAsync` to execute the buy.\n+ * @param tokenAddress The ERC20 token address.\n+ * @param assetBuyAmount The amount of asset to buy.\n+ * @param options Options for the request. See type definition for more information.\n+ *\n+ * @return An object that conforms to BuyQuote that satisfies the request. See type definition for more information.\n+ */\n+ AssetBuyer.prototype.getBuyQuoteForERC20TokenAddressAsync = function (tokenAddress, assetBuyAmount, options) {\n+ if (options === void 0) { options = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var assetData, buyQuote;\n+ return __generator(this, function (_a) {\n+ assert_1.assert.isETHAddressHex('tokenAddress', tokenAddress);\n+ assert_1.assert.isBigNumber('assetBuyAmount', assetBuyAmount);\n+ assetData = asset_data_utils_1.assetDataUtils.encodeERC20AssetData(tokenAddress);\n+ buyQuote = this.getBuyQuoteAsync(assetData, assetBuyAmount, options);\n+ return [2 /*return*/, buyQuote];\n+ });\n+ });\n+ };\n+ /**\n+ * Returns information about available liquidity for an asset\n+ * Does not factor in slippage or fees\n+ * @param assetData The assetData of the desired asset to buy (for more info: https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).\n+ * @param options Options for the request. See type definition for more information.\n+ *\n+ * @return An object that conforms to LiquidityForAssetData that satisfies the request. See type definition for more information.\n+ */\n+ AssetBuyer.prototype.getLiquidityForAssetDataAsync = function (assetData, options) {\n+ if (options === void 0) { options = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var shouldForceOrderRefresh, assetPairs, etherTokenAssetData, ordersAndFillableAmounts;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ shouldForceOrderRefresh = options.shouldForceOrderRefresh !== undefined ? options.shouldForceOrderRefresh : false;\n+ assert_1.assert.isString('assetData', assetData);\n+ asset_data_utils_1.assetDataUtils.decodeAssetDataOrThrow(assetData);\n+ assert_1.assert.isBoolean('options.shouldForceOrderRefresh', shouldForceOrderRefresh);\n+ return [4 /*yield*/, this.orderProvider.getAvailableMakerAssetDatasAsync(assetData)];\n+ case 1:\n+ assetPairs = _a.sent();\n+ etherTokenAssetData = this._getEtherTokenAssetDataOrThrow();\n+ if (!assetPairs.includes(etherTokenAssetData)) {\n+ return [2 /*return*/, {\n+ tokensAvailableInBaseUnits: new utils_1.BigNumber(0),\n+ ethValueAvailableInWei: new utils_1.BigNumber(0),\n+ }];\n+ }\n+ return [4 /*yield*/, this.getOrdersAndFillableAmountsAsync(assetData, shouldForceOrderRefresh)];\n+ case 2:\n+ ordersAndFillableAmounts = _a.sent();\n+ return [2 /*return*/, calculate_liquidity_1.calculateLiquidity(ordersAndFillableAmounts)];\n+ }\n+ });\n+ });\n+ };\n+ /**\n+ * Given a BuyQuote and desired rate, attempt to execute the buy.\n+ * @param buyQuote An object that conforms to BuyQuote. See type definition for more information.\n+ * @param options Options for the execution of the BuyQuote. See type definition for more information.\n+ *\n+ * @return A promise of the txHash.\n+ */\n+ AssetBuyer.prototype.executeBuyQuoteAsync = function (buyQuote, options) {\n+ if (options === void 0) { options = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, ethAmount, takerAddress, feeRecipient, gasLimit, gasPrice, orders, feeOrders, feePercentage, assetBuyAmount, worstCaseQuoteInfo, finalTakerAddress, web3Wrapper, availableAddresses, firstAvailableAddress, txHash, err_1;\n+ return __generator(this, function (_b) {\n+ switch (_b.label) {\n+ case 0:\n+ _a = _.merge({}, constants_1.constants.DEFAULT_BUY_QUOTE_EXECUTION_OPTS, options), ethAmount = _a.ethAmount, takerAddress = _a.takerAddress, feeRecipient = _a.feeRecipient, gasLimit = _a.gasLimit, gasPrice = _a.gasPrice;\n+ assert_1.assert.isValidBuyQuote('buyQuote', buyQuote);\n+ if (!_.isUndefined(ethAmount)) {\n+ assert_1.assert.isBigNumber('ethAmount', ethAmount);\n+ }\n+ if (!_.isUndefined(takerAddress)) {\n+ assert_1.assert.isETHAddressHex('takerAddress', takerAddress);\n+ }\n+ assert_1.assert.isETHAddressHex('feeRecipient', feeRecipient);\n+ if (!_.isUndefined(gasLimit)) {\n+ assert_1.assert.isNumber('gasLimit', gasLimit);\n+ }\n+ if (!_.isUndefined(gasPrice)) {\n+ assert_1.assert.isBigNumber('gasPrice', gasPrice);\n+ }\n+ orders = buyQuote.orders, feeOrders = buyQuote.feeOrders, feePercentage = buyQuote.feePercentage, assetBuyAmount = buyQuote.assetBuyAmount, worstCaseQuoteInfo = buyQuote.worstCaseQuoteInfo;\n+ if (!!_.isUndefined(takerAddress)) return [3 /*break*/, 1];\n+ finalTakerAddress = takerAddress;\n+ return [3 /*break*/, 3];\n+ case 1:\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(this.provider);\n+ return [4 /*yield*/, web3Wrapper.getAvailableAddressesAsync()];\n+ case 2:\n+ availableAddresses = _b.sent();\n+ firstAvailableAddress = _.head(availableAddresses);\n+ if (!_.isUndefined(firstAvailableAddress)) {\n+ finalTakerAddress = firstAvailableAddress;\n+ }\n+ else {\n+ throw new Error(types_1.AssetBuyerError.NoAddressAvailable);\n+ }\n+ _b.label = 3;\n+ case 3:\n+ _b.trys.push([3, 5, , 6]);\n+ return [4 /*yield*/, this._contractWrappers.forwarder.marketBuyOrdersWithEthAsync(orders, assetBuyAmount, finalTakerAddress, ethAmount || worstCaseQuoteInfo.totalEthAmount, feeOrders, feePercentage, feeRecipient, {\n+ gasLimit: gasLimit,\n+ gasPrice: gasPrice,\n+ shouldValidate: true,\n+ })];\n+ case 4:\n+ txHash = _b.sent();\n+ return [2 /*return*/, txHash];\n+ case 5:\n+ err_1 = _b.sent();\n+ if (_.includes(err_1.message, contract_wrappers_1.ContractWrappersError.SignatureRequestDenied)) {\n+ throw new Error(types_1.AssetBuyerError.SignatureRequestDenied);\n+ }\n+ else if (_.includes(err_1.message, contract_wrappers_1.ForwarderWrapperError.CompleteFillFailed)) {\n+ throw new Error(types_1.AssetBuyerError.TransactionValueTooLow);\n+ }\n+ else {\n+ throw err_1;\n+ }\n+ return [3 /*break*/, 6];\n+ case 6: return [2 /*return*/];\n+ }\n+ });\n+ });\n+ };\n+ /**\n+ * Given a BuyQuote and desired rate, attempt to execute the buy.\n+ * @param buyQuote An object that conforms to BuyQuote. See type definition for more information.\n+ * @param options Options for the execution of the BuyQuote. See type definition for more information.\n+ *\n+ * @return A promise of the txHash.\n+ */\n+ AssetBuyer.prototype.mockExecuteBuyQuoteAsync = function (buyQuote, options) {\n+ if (options === void 0) { options = {}; }\n+ return __awaiter(this, void 0, void 0, function () {\n+ var _a, ethAmount, takerAddress, feeRecipient, gasLimit, gasPrice, orders, feeOrders, feePercentage, assetBuyAmount, worstCaseQuoteInfo, finalTakerAddress, web3Wrapper, availableAddresses, firstAvailableAddress, txHash, err_2;\n+ return __generator(this, function (_b) {\n+ switch (_b.label) {\n+ case 0:\n+ _a = _.merge({}, constants_1.constants.DEFAULT_BUY_QUOTE_EXECUTION_OPTS, options), ethAmount = _a.ethAmount, takerAddress = _a.takerAddress, feeRecipient = _a.feeRecipient, gasLimit = _a.gasLimit, gasPrice = _a.gasPrice;\n+ assert_1.assert.isValidBuyQuote('buyQuote', buyQuote);\n+ if (!_.isUndefined(ethAmount)) {\n+ assert_1.assert.isBigNumber('ethAmount', ethAmount);\n+ }\n+ if (!_.isUndefined(takerAddress)) {\n+ assert_1.assert.isETHAddressHex('takerAddress', takerAddress);\n+ }\n+ assert_1.assert.isETHAddressHex('feeRecipient', feeRecipient);\n+ if (!_.isUndefined(gasLimit)) {\n+ assert_1.assert.isNumber('gasLimit', gasLimit);\n+ }\n+ if (!_.isUndefined(gasPrice)) {\n+ assert_1.assert.isBigNumber('gasPrice', gasPrice);\n+ }\n+ orders = buyQuote.orders, feeOrders = buyQuote.feeOrders, feePercentage = buyQuote.feePercentage, assetBuyAmount = buyQuote.assetBuyAmount, worstCaseQuoteInfo = buyQuote.worstCaseQuoteInfo;\n+ if (!!_.isUndefined(takerAddress)) return [3 /*break*/, 1];\n+ finalTakerAddress = takerAddress;\n+ return [3 /*break*/, 3];\n+ case 1:\n+ web3Wrapper = new web3_wrapper_1.Web3Wrapper(this.provider);\n+ return [4 /*yield*/, web3Wrapper.getAvailableAddressesAsync()];\n+ case 2:\n+ availableAddresses = _b.sent();\n+ firstAvailableAddress = _.head(availableAddresses);\n+ if (!_.isUndefined(firstAvailableAddress)) {\n+ finalTakerAddress = firstAvailableAddress;\n+ }\n+ else {\n+ throw new Error(types_1.AssetBuyerError.NoAddressAvailable);\n+ }\n+ _b.label = 3;\n+ case 3:\n+ _b.trys.push([3, 5, , 6]);\n+ return [4 /*yield*/, this._contractWrappers.forwarder.marketBuyOrdersWithEthAsync(orders, assetBuyAmount, finalTakerAddress, ethAmount || worstCaseQuoteInfo.totalEthAmount, feeOrders, feePercentage, feeRecipient, {\n+ gasLimit: gasLimit,\n+ gasPrice: gasPrice,\n+ shouldValidate: true,\n+ })];\n+ case 4:\n+ txHash = _b.sent();\n+ return [2 /*return*/, txHash];\n+ case 5:\n+ err_2 = _b.sent();\n+ if (_.includes(err_2.message, contract_wrappers_1.ContractWrappersError.SignatureRequestDenied)) {\n+ throw new Error(types_1.AssetBuyerError.SignatureRequestDenied);\n+ }\n+ else if (_.includes(err_2.message, contract_wrappers_1.ForwarderWrapperError.CompleteFillFailed)) {\n+ throw new Error(types_1.AssetBuyerError.TransactionValueTooLow);\n+ }\n+ else {\n+ throw err_2;\n+ }\n+ return [3 /*break*/, 6];\n+ case 6: return [2 /*return*/];\n+ }\n+ });\n+ });\n+ };\n+ /**\n+ * Get the asset data of all assets that are purchaseable with ether token (wETH) in the order provider passed in at init.\n+ *\n+ * @return An array of asset data strings that can be purchased using wETH.\n+ */\n+ AssetBuyer.prototype.getAvailableAssetDatasAsync = function () {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var etherTokenAssetData;\n+ return __generator(this, function (_a) {\n+ etherTokenAssetData = this._getEtherTokenAssetDataOrThrow();\n+ return [2 /*return*/, this.orderProvider.getAvailableMakerAssetDatasAsync(etherTokenAssetData)];\n+ });\n+ });\n+ };\n+ /**\n+ * Grab orders from the map, if there is a miss or it is time to refresh, fetch and process the orders\n+ * @param assetData The assetData of the desired asset to buy (for more info: https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).\n+ * @param shouldForceOrderRefresh If set to true, new orders and state will be fetched instead of waiting for the next orderRefreshIntervalMs.\n+ */\n+ AssetBuyer.prototype.getOrdersAndFillableAmountsAsync = function (assetData, shouldForceOrderRefresh) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var ordersEntryIfExists, shouldRefresh, result, etherTokenAssetData, zrxTokenAssetData, orderProviderRequest, request, response, isMakerAssetZrxToken, ordersAndFillableAmounts, lastRefreshTime, updatedOrdersEntry;\n+ return __generator(this, function (_a) {\n+ switch (_a.label) {\n+ case 0:\n+ ordersEntryIfExists = this._ordersEntryMap[assetData];\n+ shouldRefresh = _.isUndefined(ordersEntryIfExists) ||\n+ shouldForceOrderRefresh ||\n+ // tslint:disable:restrict-plus-operands\n+ ordersEntryIfExists.lastRefreshTime + this.orderRefreshIntervalMs < Date.now();\n+ if (!shouldRefresh) {\n+ result = ordersEntryIfExists.ordersAndFillableAmounts;\n+ return [2 /*return*/, result];\n+ }\n+ etherTokenAssetData = this._getEtherTokenAssetDataOrThrow();\n+ zrxTokenAssetData = this._getZrxTokenAssetDataOrThrow();\n+ orderProviderRequest = {\n+ makerAssetData: assetData,\n+ takerAssetData: etherTokenAssetData,\n+ networkId: this.networkId,\n+ };\n+ request = orderProviderRequest;\n+ return [4 /*yield*/, this.orderProvider.getOrdersAsync(request)];\n+ case 1:\n+ response = _a.sent();\n+ // since the order provider is an injected dependency, validate that it respects the API\n+ // ie. it should only return maker/taker assetDatas that are specified\n+ order_provider_response_processor_1.orderProviderResponseProcessor.throwIfInvalidResponse(response, request);\n+ isMakerAssetZrxToken = assetData === zrxTokenAssetData;\n+ return [4 /*yield*/, order_provider_response_processor_1.orderProviderResponseProcessor.processAsync(response, isMakerAssetZrxToken, this.expiryBufferSeconds, this._contractWrappers.orderValidator)];\n+ case 2:\n+ ordersAndFillableAmounts = _a.sent();\n+ lastRefreshTime = Date.now();\n+ updatedOrdersEntry = {\n+ ordersAndFillableAmounts: ordersAndFillableAmounts,\n+ lastRefreshTime: lastRefreshTime,\n+ };\n+ this._ordersEntryMap[assetData] = updatedOrdersEntry;\n+ return [2 /*return*/, ordersAndFillableAmounts];\n+ }\n+ });\n+ });\n+ };\n+ /**\n+ * Get the assetData that represents the WETH token.\n+ * Will throw if WETH does not exist for the current network.\n+ */\n+ AssetBuyer.prototype._getEtherTokenAssetDataOrThrow = function () {\n+ return asset_data_utils_1.assetDataUtils.getEtherTokenAssetData(this._contractWrappers);\n+ };\n+ /**\n+ * Get the assetData that represents the ZRX token.\n+ * Will throw if ZRX does not exist for the current network.\n+ */\n+ AssetBuyer.prototype._getZrxTokenAssetDataOrThrow = function () {\n+ return this._contractWrappers.exchange.getZRXAssetData();\n+ };\n+ return AssetBuyer;\n+}());\n+exports.AssetBuyer = AssetBuyer;\n+//# sourceMappingURL=asset_buyer.js.map\n\\ No newline at end of file" + }, + { + "sha": "742913b367caaccaee92fc7d80ad65da18e73ac1", + "filename": "packages/asset-buyer/lib/src/asset_buyer.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/asset_buyer.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/asset_buyer.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/asset_buyer.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"asset_buyer.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/asset_buyer.ts\"],\"names\":[],\"mappings\":\"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\"}\n\\ No newline at end of file" + }, + { + "sha": "e4588ea81af49ceeb931f70b899ba4c94c6d20c8", + "filename": "packages/asset-buyer/lib/src/constants.d.ts", + "status": "added", + "additions": 13, + "deletions": 0, + "changes": 13, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/constants.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/constants.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/constants.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,13 @@\n+import { BigNumber } from '@0x/utils';\n+import { AssetBuyerOpts, BuyQuoteExecutionOpts, BuyQuoteRequestOpts, OrdersAndFillableAmounts } from './types';\n+export declare const constants: {\n+ ZERO_AMOUNT: BigNumber;\n+ NULL_ADDRESS: string;\n+ MAINNET_NETWORK_ID: number;\n+ ETHER_TOKEN_DECIMALS: number;\n+ DEFAULT_ASSET_BUYER_OPTS: AssetBuyerOpts;\n+ DEFAULT_BUY_QUOTE_EXECUTION_OPTS: BuyQuoteExecutionOpts;\n+ DEFAULT_BUY_QUOTE_REQUEST_OPTS: BuyQuoteRequestOpts;\n+ EMPTY_ORDERS_AND_FILLABLE_AMOUNTS: OrdersAndFillableAmounts;\n+};\n+//# sourceMappingURL=constants.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "6a4029108344addb830bed04bb5d18e1fa61b65a", + "filename": "packages/asset-buyer/lib/src/constants.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/constants.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/constants.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/constants.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"constants.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../src/constants.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AA2B/G,eAAO,MAAM,SAAS;;;;;;;;;CASrB,CAAC\"}\n\\ No newline at end of file" + }, + { + "sha": "dce1dfec8ecd239e2d819a0a63d811bc4069e917", + "filename": "packages/asset-buyer/lib/src/constants.js", + "status": "added", + "additions": 34, + "deletions": 0, + "changes": 34, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/constants.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/constants.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/constants.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,34 @@\n+\"use strict\";\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+var utils_1 = require(\"@0x/utils\");\n+var NULL_ADDRESS = '0x0000000000000000000000000000000000000000';\n+var MAINNET_NETWORK_ID = 1;\n+var DEFAULT_ASSET_BUYER_OPTS = {\n+ networkId: MAINNET_NETWORK_ID,\n+ orderRefreshIntervalMs: 10000,\n+ expiryBufferSeconds: 120,\n+};\n+var DEFAULT_BUY_QUOTE_REQUEST_OPTS = {\n+ feePercentage: 0,\n+ shouldForceOrderRefresh: false,\n+ slippagePercentage: 0.2,\n+};\n+// Other default values are dynamically determined\n+var DEFAULT_BUY_QUOTE_EXECUTION_OPTS = {\n+ feeRecipient: NULL_ADDRESS,\n+};\n+var EMPTY_ORDERS_AND_FILLABLE_AMOUNTS = {\n+ orders: [],\n+ remainingFillableMakerAssetAmounts: [],\n+};\n+exports.constants = {\n+ ZERO_AMOUNT: new utils_1.BigNumber(0),\n+ NULL_ADDRESS: NULL_ADDRESS,\n+ MAINNET_NETWORK_ID: MAINNET_NETWORK_ID,\n+ ETHER_TOKEN_DECIMALS: 18,\n+ DEFAULT_ASSET_BUYER_OPTS: DEFAULT_ASSET_BUYER_OPTS,\n+ DEFAULT_BUY_QUOTE_EXECUTION_OPTS: DEFAULT_BUY_QUOTE_EXECUTION_OPTS,\n+ DEFAULT_BUY_QUOTE_REQUEST_OPTS: DEFAULT_BUY_QUOTE_REQUEST_OPTS,\n+ EMPTY_ORDERS_AND_FILLABLE_AMOUNTS: EMPTY_ORDERS_AND_FILLABLE_AMOUNTS,\n+};\n+//# sourceMappingURL=constants.js.map\n\\ No newline at end of file" + }, + { + "sha": "ffb95571f7f7b6fe7e86b3bccb5fa0c52ed50d4a", + "filename": "packages/asset-buyer/lib/src/constants.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/constants.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/constants.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/constants.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"constants.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/constants.ts\"],\"names\":[],\"mappings\":\";;AACA,mCAAsC;AAItC,IAAM,YAAY,GAAG,4CAA4C,CAAC;AAClE,IAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,IAAM,wBAAwB,GAAmB;IAC7C,SAAS,EAAE,kBAAkB;IAC7B,sBAAsB,EAAE,KAAK;IAC7B,mBAAmB,EAAE,GAAG;CAC3B,CAAC;AAEF,IAAM,8BAA8B,GAAwB;IACxD,aAAa,EAAE,CAAC;IAChB,uBAAuB,EAAE,KAAK;IAC9B,kBAAkB,EAAE,GAAG;CAC1B,CAAC;AAEF,kDAAkD;AAClD,IAAM,gCAAgC,GAA0B;IAC5D,YAAY,EAAE,YAAY;CAC7B,CAAC;AAEF,IAAM,iCAAiC,GAA6B;IAChE,MAAM,EAAE,EAAmB;IAC3B,kCAAkC,EAAE,EAAiB;CACxD,CAAC;AAEW,QAAA,SAAS,GAAG;IACrB,WAAW,EAAE,IAAI,iBAAS,CAAC,CAAC,CAAC;IAC7B,YAAY,cAAA;IACZ,kBAAkB,oBAAA;IAClB,oBAAoB,EAAE,EAAE;IACxB,wBAAwB,0BAAA;IACxB,gCAAgC,kCAAA;IAChC,8BAA8B,gCAAA;IAC9B,iCAAiC,mCAAA;CACpC,CAAC\"}\n\\ No newline at end of file" + }, + { + "sha": "702e2feedefa4fc878244f025e622785db280f53", + "filename": "packages/asset-buyer/lib/src/errors.d.ts", + "status": "added", + "additions": 15, + "deletions": 0, + "changes": 15, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/errors.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/errors.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/errors.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,15 @@\n+import { BigNumber } from '@0x/utils';\n+/**\n+ * Error class representing insufficient asset liquidity\n+ */\n+export declare class InsufficientAssetLiquidityError extends Error {\n+ /**\n+ * The amount availabe to fill (in base units) factoring in slippage.\n+ */\n+ amountAvailableToFill: BigNumber;\n+ /**\n+ * @param amountAvailableToFill The amount availabe to fill (in base units) factoring in slippage\n+ */\n+ constructor(amountAvailableToFill: BigNumber);\n+}\n+//# sourceMappingURL=errors.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "989a45d69dcf808034909d7efbaccfd34ac6147a", + "filename": "packages/asset-buyer/lib/src/errors.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/errors.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/errors.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/errors.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"errors.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../src/errors.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC;;GAEG;AACH,qBAAa,+BAAgC,SAAQ,KAAK;IACtD;;OAEG;IACI,qBAAqB,EAAE,SAAS,CAAC;IACxC;;OAEG;gBACS,qBAAqB,EAAE,SAAS;CAM/C\"}\n\\ No newline at end of file" + }, + { + "sha": "d8770eed54098cdf167289ac8ec52686b84745e4", + "filename": "packages/asset-buyer/lib/src/errors.js", + "status": "added", + "additions": 35, + "deletions": 0, + "changes": 35, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/errors.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/errors.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/errors.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,35 @@\n+\"use strict\";\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = function (d, b) {\n+ extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return extendStatics(d, b);\n+ }\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+var types_1 = require(\"./types\");\n+/**\n+ * Error class representing insufficient asset liquidity\n+ */\n+var InsufficientAssetLiquidityError = /** @class */ (function (_super) {\n+ __extends(InsufficientAssetLiquidityError, _super);\n+ /**\n+ * @param amountAvailableToFill The amount availabe to fill (in base units) factoring in slippage\n+ */\n+ function InsufficientAssetLiquidityError(amountAvailableToFill) {\n+ var _this = _super.call(this, types_1.AssetBuyerError.InsufficientAssetLiquidity) || this;\n+ _this.amountAvailableToFill = amountAvailableToFill;\n+ // Setting prototype so instanceof works. See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n+ Object.setPrototypeOf(_this, InsufficientAssetLiquidityError.prototype);\n+ return _this;\n+ }\n+ return InsufficientAssetLiquidityError;\n+}(Error));\n+exports.InsufficientAssetLiquidityError = InsufficientAssetLiquidityError;\n+//# sourceMappingURL=errors.js.map\n\\ No newline at end of file" + }, + { + "sha": "3f7f95062b678a1fe860bb6f029f32693ca22a9c", + "filename": "packages/asset-buyer/lib/src/errors.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/errors.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/errors.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/errors.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"errors.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/errors.ts\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;AAEA,iCAA0C;AAE1C;;GAEG;AACH;IAAqD,mDAAK;IAKtD;;OAEG;IACH,yCAAY,qBAAgC;QAA5C,YACI,kBAAM,uBAAe,CAAC,0BAA0B,CAAC,SAIpD;QAHG,KAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,4KAA4K;QAC5K,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,+BAA+B,CAAC,SAAS,CAAC,CAAC;;IAC3E,CAAC;IACL,sCAAC;AAAD,CAAC,AAdD,CAAqD,KAAK,GAczD;AAdY,0EAA+B\"}\n\\ No newline at end of file" + }, + { + "sha": "fd537b9d74670f933de0c22f588573630f3d7842", + "filename": "packages/asset-buyer/lib/src/index.d.ts", + "status": "added", + "additions": 9, + "deletions": 0, + "changes": 9, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/index.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/index.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/index.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,9 @@\n+export { JSONRPCRequestPayload, JSONRPCResponsePayload, JSONRPCResponseError, JSONRPCErrorCallback, SupportedProvider, Web3JsProvider, GanacheProvider, EIP1193Provider, ZeroExProvider, EIP1193Event, Web3JsV1Provider, Web3JsV2Provider, Web3JsV3Provider, } from 'ethereum-types';\n+export { SignedOrder } from '@0x/types';\n+export { BigNumber } from '@0x/utils';\n+export { AssetBuyer } from './asset_buyer';\n+export { InsufficientAssetLiquidityError } from './errors';\n+export { BasicOrderProvider } from './order_providers/basic_order_provider';\n+export { StandardRelayerAPIOrderProvider } from './order_providers/standard_relayer_api_order_provider';\n+export { AssetBuyerError, AssetBuyerOpts, BuyQuote, BuyQuoteExecutionOpts, BuyQuoteInfo, BuyQuoteRequestOpts, LiquidityForAssetData, LiquidityRequestOpts, OrdersAndFillableAmounts, OrderProvider, OrderProviderRequest, OrderProviderResponse, SignedOrderWithRemainingFillableMakerAssetAmount, } from './types';\n+//# sourceMappingURL=index.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "eda1c7bf4e12509209f4091ae21cf769a74cb26f", + "filename": "packages/asset-buyer/lib/src/index.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/index.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/index.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/index.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"index.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,uDAAuD,CAAC;AACxG,OAAO,EACH,eAAe,EACf,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,gDAAgD,GACnD,MAAM,SAAS,CAAC\"}\n\\ No newline at end of file" + }, + { + "sha": "bb309f351bac037f15c8e124c492c102d4b8597e", + "filename": "packages/asset-buyer/lib/src/index.js", + "status": "added", + "additions": 15, + "deletions": 0, + "changes": 15, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/index.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/index.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/index.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,15 @@\n+\"use strict\";\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+var utils_1 = require(\"@0x/utils\");\n+exports.BigNumber = utils_1.BigNumber;\n+var asset_buyer_1 = require(\"./asset_buyer\");\n+exports.AssetBuyer = asset_buyer_1.AssetBuyer;\n+var errors_1 = require(\"./errors\");\n+exports.InsufficientAssetLiquidityError = errors_1.InsufficientAssetLiquidityError;\n+var basic_order_provider_1 = require(\"./order_providers/basic_order_provider\");\n+exports.BasicOrderProvider = basic_order_provider_1.BasicOrderProvider;\n+var standard_relayer_api_order_provider_1 = require(\"./order_providers/standard_relayer_api_order_provider\");\n+exports.StandardRelayerAPIOrderProvider = standard_relayer_api_order_provider_1.StandardRelayerAPIOrderProvider;\n+var types_1 = require(\"./types\");\n+exports.AssetBuyerError = types_1.AssetBuyerError;\n+//# sourceMappingURL=index.js.map\n\\ No newline at end of file" + }, + { + "sha": "f5f125c88f2b3741c3b3bed1f4c2e575cf1bbcac", + "filename": "packages/asset-buyer/lib/src/index.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/index.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/index.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/index.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\";;AAgBA,mCAAsC;AAA7B,4BAAA,SAAS,CAAA;AAElB,6CAA2C;AAAlC,mCAAA,UAAU,CAAA;AACnB,mCAA2D;AAAlD,mDAAA,+BAA+B,CAAA;AACxC,+EAA4E;AAAnE,oDAAA,kBAAkB,CAAA;AAC3B,6GAAwG;AAA/F,gFAAA,+BAA+B,CAAA;AACxC,iCAciB;AAbb,kCAAA,eAAe,CAAA\"}\n\\ No newline at end of file" + }, + { + "sha": "b3abcb718bf180c0daa2902b9d849750e76caf98", + "filename": "packages/asset-buyer/lib/src/order_providers/basic_order_provider.d.ts", + "status": "added", + "additions": 24, + "deletions": 0, + "changes": 24, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/basic_order_provider.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/basic_order_provider.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/order_providers/basic_order_provider.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,24 @@\n+import { SignedOrder } from '@0x/types';\n+import { OrderProvider, OrderProviderRequest, OrderProviderResponse } from '../types';\n+export declare class BasicOrderProvider implements OrderProvider {\n+ readonly orders: SignedOrder[];\n+ /**\n+ * Instantiates a new BasicOrderProvider instance\n+ * @param orders An array of objects that conform to SignedOrder to fetch from.\n+ * @return An instance of BasicOrderProvider\n+ */\n+ constructor(orders: SignedOrder[]);\n+ /**\n+ * Given an object that conforms to OrderFetcherRequest, return the corresponding OrderProviderResponse that satisfies the request.\n+ * @param orderProviderRequest An instance of OrderFetcherRequest. See type for more information.\n+ * @return An instance of OrderProviderResponse. See type for more information.\n+ */\n+ getOrdersAsync(orderProviderRequest: OrderProviderRequest): Promise;\n+ /**\n+ * Given a taker asset data string, return all availabled paired maker asset data strings.\n+ * @param takerAssetData A string representing the taker asset data.\n+ * @return An array of asset data strings that can be purchased using takerAssetData.\n+ */\n+ getAvailableMakerAssetDatasAsync(takerAssetData: string): Promise;\n+}\n+//# sourceMappingURL=basic_order_provider.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "f182aedec9bd10a31e4adfd630c4af380744ffa4", + "filename": "packages/asset-buyer/lib/src/order_providers/basic_order_provider.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/basic_order_provider.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/basic_order_provider.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/order_providers/basic_order_provider.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"basic_order_provider.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/order_providers/basic_order_provider.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGtF,qBAAa,kBAAmB,YAAW,aAAa;IACpD,SAAgB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtC;;;;OAIG;gBACS,MAAM,EAAE,WAAW,EAAE;IAIjC;;;;OAIG;IACU,cAAc,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQvG;;;;OAIG;IACU,gCAAgC,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAI3F\"}\n\\ No newline at end of file" + }, + { + "sha": "47d81d1cbd0dbb037e555e709df5004993b6fec2", + "filename": "packages/asset-buyer/lib/src/order_providers/basic_order_provider.js", + "status": "added", + "additions": 86, + "deletions": 0, + "changes": 86, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/basic_order_provider.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/basic_order_provider.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/order_providers/basic_order_provider.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,86 @@\n+\"use strict\";\n+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n+ return new (P || (P = Promise))(function (resolve, reject) {\n+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n+ function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n+ step((generator = generator.apply(thisArg, _arguments || [])).next());\n+ });\n+};\n+var __generator = (this && this.__generator) || function (thisArg, body) {\n+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n+ return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n+ function verb(n) { return function (v) { return step([n, v]); }; }\n+ function step(op) {\n+ if (f) throw new TypeError(\"Generator is already executing.\");\n+ while (_) try {\n+ if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n+ if (y = 0, t) op = [op[0] & 2, t.value];\n+ switch (op[0]) {\n+ case 0: case 1: t = op; break;\n+ case 4: _.label++; return { value: op[1], done: false };\n+ case 5: _.label++; y = op[1]; op = [0]; continue;\n+ case 7: op = _.ops.pop(); _.trys.pop(); continue;\n+ default:\n+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n+ if (t[2]) _.ops.pop();\n+ _.trys.pop(); continue;\n+ }\n+ op = body.call(thisArg, _);\n+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n+ }\n+};\n+Object.defineProperty(exports, \"__esModule\", { value: true });\n+var json_schemas_1 = require(\"@0x/json-schemas\");\n+var _ = require(\"lodash\");\n+var assert_1 = require(\"../utils/assert\");\n+var BasicOrderProvider = /** @class */ (function () {\n+ /**\n+ * Instantiates a new BasicOrderProvider instance\n+ * @param orders An array of objects that conform to SignedOrder to fetch from.\n+ * @return An instance of BasicOrderProvider\n+ */\n+ function BasicOrderProvider(orders) {\n+ assert_1.assert.doesConformToSchema('orders', orders, json_schemas_1.schemas.signedOrdersSchema);\n+ this.orders = orders;\n+ }\n+ /**\n+ * Given an object that conforms to OrderFetcherRequest, return the corresponding OrderProviderResponse that satisfies the request.\n+ * @param orderProviderRequest An instance of OrderFetcherRequest. See type for more information.\n+ * @return An instance of OrderProviderResponse. See type for more information.\n+ */\n+ BasicOrderProvider.prototype.getOrdersAsync = function (orderProviderRequest) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var makerAssetData, takerAssetData, orders;\n+ return __generator(this, function (_a) {\n+ assert_1.assert.isValidOrderProviderRequest('orderProviderRequest', orderProviderRequest);\n+ makerAssetData = orderProviderRequest.makerAssetData, takerAssetData = orderProviderRequest.takerAssetData;\n+ orders = _.filter(this.orders, function (order) {\n+ return order.makerAssetData === makerAssetData && order.takerAssetData === takerAssetData;\n+ });\n+ return [2 /*return*/, { orders: orders }];\n+ });\n+ });\n+ };\n+ /**\n+ * Given a taker asset data string, return all availabled paired maker asset data strings.\n+ * @param takerAssetData A string representing the taker asset data.\n+ * @return An array of asset data strings that can be purchased using takerAssetData.\n+ */\n+ BasicOrderProvider.prototype.getAvailableMakerAssetDatasAsync = function (takerAssetData) {\n+ return __awaiter(this, void 0, void 0, function () {\n+ var ordersWithTakerAssetData;\n+ return __generator(this, function (_a) {\n+ ordersWithTakerAssetData = _.filter(this.orders, { takerAssetData: takerAssetData });\n+ return [2 /*return*/, _.map(ordersWithTakerAssetData, function (order) { return order.makerAssetData; })];\n+ });\n+ });\n+ };\n+ return BasicOrderProvider;\n+}());\n+exports.BasicOrderProvider = BasicOrderProvider;\n+//# sourceMappingURL=basic_order_provider.js.map\n\\ No newline at end of file" + }, + { + "sha": "aadfcffebd2db4d56d386bffb88022d2d34f97d1", + "filename": "packages/asset-buyer/lib/src/order_providers/basic_order_provider.js.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/basic_order_provider.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/basic_order_provider.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/order_providers/basic_order_provider.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"basic_order_provider.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/order_providers/basic_order_provider.ts\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA2C;AAE3C,0BAA4B;AAG5B,0CAAyC;AAEzC;IAEI;;;;OAIG;IACH,4BAAY,MAAqB;QAC7B,eAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,sBAAO,CAAC,kBAAkB,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IACD;;;;OAIG;IACU,2CAAc,GAA3B,UAA4B,oBAA0C;;;;gBAClE,eAAM,CAAC,2BAA2B,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;gBACzE,cAAc,GAAqB,oBAAoB,eAAzC,EAAE,cAAc,GAAK,oBAAoB,eAAzB,CAA0B;gBAC1D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAA,KAAK;oBACtC,OAAO,KAAK,CAAC,cAAc,KAAK,cAAc,IAAI,KAAK,CAAC,cAAc,KAAK,cAAc,CAAC;gBAC9F,CAAC,CAAC,CAAC;gBACH,sBAAO,EAAE,MAAM,QAAA,EAAE,EAAC;;;KACrB;IACD;;;;OAIG;IACU,6DAAgC,GAA7C,UAA8C,cAAsB;;;;gBAC1D,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;gBAC3E,sBAAO,CAAC,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,cAAc,EAApB,CAAoB,CAAC,EAAC;;;KACzE;IACL,yBAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,gDAAkB\"}\n\\ No newline at end of file" + }, + { + "sha": "17f123933a2e2cf34bb0df0cfd273b5f8351345a", + "filename": "packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.d.ts", + "status": "added", + "additions": 31, + "deletions": 0, + "changes": 31, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1,31 @@\n+import { OrderProvider, OrderProviderRequest, OrderProviderResponse } from '../types';\n+export declare class StandardRelayerAPIOrderProvider implements OrderProvider {\n+ readonly apiUrl: string;\n+ readonly networkId: number;\n+ private readonly _sraClient;\n+ /**\n+ * Given an array of APIOrder objects from a standard relayer api, return an array\n+ * of SignedOrderWithRemainingFillableMakerAssetAmounts\n+ */\n+ private static _getSignedOrderWithRemainingFillableMakerAssetAmountFromApi;\n+ /**\n+ * Instantiates a new StandardRelayerAPIOrderProvider instance\n+ * @param apiUrl The standard relayer API base HTTP url you would like to source orders from.\n+ * @param networkId The ethereum network id.\n+ * @return An instance of StandardRelayerAPIOrderProvider\n+ */\n+ constructor(apiUrl: string, networkId: number);\n+ /**\n+ * Given an object that conforms to OrderProviderRequest, return the corresponding OrderProviderResponse that satisfies the request.\n+ * @param orderProviderRequest An instance of OrderProviderRequest. See type for more information.\n+ * @return An instance of OrderProviderResponse. See type for more information.\n+ */\n+ getOrdersAsync(orderProviderRequest: OrderProviderRequest): Promise;\n+ /**\n+ * Given a taker asset data string, return all availabled paired maker asset data strings.\n+ * @param takerAssetData A string representing the taker asset data.\n+ * @return An array of asset data strings that can be purchased using takerAssetData.\n+ */\n+ getAvailableMakerAssetDatasAsync(takerAssetData: string): Promise;\n+}\n+//# sourceMappingURL=standard_relayer_api_order_provider.d.ts.map\n\\ No newline at end of file" + }, + { + "sha": "9089c009254da953d697fd1dc57182c9b5df5438", + "filename": "packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.d.ts.map", + "status": "added", + "additions": 1, + "deletions": 0, + "changes": 1, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020", + "patch": "@@ -0,0 +1 @@\n+{\"version\":3,\"file\":\"standard_relayer_api_order_provider.d.ts\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/order_providers/standard_relayer_api_order_provider.ts\"],\"names\":[],\"mappings\":\"AAIA,OAAO,EAEH,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EAExB,MAAM,UAAU,CAAC;AAIlB,qBAAa,+BAAgC,YAAW,aAAa;IACjE,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,2DAA2D;IAuB1E;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAO7C;;;;OAIG;IACU,cAAc,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmBvG;;;;OAIG;IACU,gCAAgC,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAuB3F\"}\n\\ No newline at end of file" + }, + { + "sha": "0b51f468b717b5bbae06bd23b1edbc4b41bad625", + "filename": "packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "5adbf2a7978898a74305d522b39177ecd7602747", + "filename": "packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/order_providers/standard_relayer_api_order_provider.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "a384bd1320acccb2744ba8b9c70f1a579e4c9f29", + "filename": "packages/asset-buyer/lib/src/types.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/types.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/types.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/types.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "06406774a66f791df4ffd712fe6fa8bfd9cadf30", + "filename": "packages/asset-buyer/lib/src/types.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/types.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/types.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/types.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "4f623eae3754ca4cdfd20b22467de1142f46aec4", + "filename": "packages/asset-buyer/lib/src/types.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/types.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/types.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/types.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "1c03ee8d422a1051f96cc9f329f96d0a70750dea", + "filename": "packages/asset-buyer/lib/src/types.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/types.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/types.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/types.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "9ca38476db8acdb04f39bab124a6a9ba17eadfc8", + "filename": "packages/asset-buyer/lib/src/utils/assert.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/assert.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/assert.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/assert.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "2bb5a9296123ede3535bf9b3b146b92ce7702248", + "filename": "packages/asset-buyer/lib/src/utils/assert.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/assert.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/assert.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/assert.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7e0c9b0485cf8254fb19a14c4b2c57d370e6701f", + "filename": "packages/asset-buyer/lib/src/utils/assert.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/assert.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/assert.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/assert.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7cd6d316ae564bf6fa8baed85745b3203b36d954", + "filename": "packages/asset-buyer/lib/src/utils/assert.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/assert.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/assert.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/assert.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "983ed3d62e24772d48ea1f5e8ddcde5baf3f97ec", + "filename": "packages/asset-buyer/lib/src/utils/asset_data_utils.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/asset_data_utils.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/asset_data_utils.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/asset_data_utils.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "738466134f0d49451f27560107a94dcbb1c45c42", + "filename": "packages/asset-buyer/lib/src/utils/asset_data_utils.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/asset_data_utils.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/asset_data_utils.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/asset_data_utils.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "96852f7866f00e7102a1b9cc4c17b55cdda56fc9", + "filename": "packages/asset-buyer/lib/src/utils/asset_data_utils.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/asset_data_utils.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/asset_data_utils.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/asset_data_utils.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "123b0b5029aa6b3cb6bc1b1cd1b77cf309cfe4e4", + "filename": "packages/asset-buyer/lib/src/utils/asset_data_utils.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/asset_data_utils.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/asset_data_utils.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/asset_data_utils.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "3cbf57581364e05e956114912eb465d447fbad3a", + "filename": "packages/asset-buyer/lib/src/utils/buy_quote_calculator.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/buy_quote_calculator.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/buy_quote_calculator.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/buy_quote_calculator.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "bf9ca187f990f368f47b1e3a9e6e6e4d9b0b5b83", + "filename": "packages/asset-buyer/lib/src/utils/buy_quote_calculator.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/buy_quote_calculator.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/buy_quote_calculator.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/buy_quote_calculator.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "cd3f4de8f0b338549df6ea303f61efa0665c6c10", + "filename": "packages/asset-buyer/lib/src/utils/buy_quote_calculator.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/buy_quote_calculator.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/buy_quote_calculator.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/buy_quote_calculator.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "e03f46c0018dbb6f6da556cdfd7068746819bf7e", + "filename": "packages/asset-buyer/lib/src/utils/buy_quote_calculator.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/buy_quote_calculator.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/buy_quote_calculator.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/buy_quote_calculator.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "37d1c7cbf9da1164b91e17af907039ba9c921b7e", + "filename": "packages/asset-buyer/lib/src/utils/calculate_liquidity.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/calculate_liquidity.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/calculate_liquidity.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/calculate_liquidity.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "2bf648b15433f7ac38476fe53942562c653ee5fd", + "filename": "packages/asset-buyer/lib/src/utils/calculate_liquidity.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/calculate_liquidity.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/calculate_liquidity.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/calculate_liquidity.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "137688662154b3f583be93b3b27773d1d3ef6ad4", + "filename": "packages/asset-buyer/lib/src/utils/calculate_liquidity.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/calculate_liquidity.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/calculate_liquidity.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/calculate_liquidity.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "c35dcec6d8ed22a7ef3e0b4db307e7beb67e03dd", + "filename": "packages/asset-buyer/lib/src/utils/calculate_liquidity.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/calculate_liquidity.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/calculate_liquidity.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/calculate_liquidity.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "319a109693cae8150ae14e6eb46daf735443059a", + "filename": "packages/asset-buyer/lib/src/utils/order_provider_response_processor.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_provider_response_processor.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_provider_response_processor.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/order_provider_response_processor.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "174b93d95d3cda7673265689732454abc6c9bce7", + "filename": "packages/asset-buyer/lib/src/utils/order_provider_response_processor.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_provider_response_processor.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_provider_response_processor.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/order_provider_response_processor.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "d2e764339e3b797b905bbb91dd94e4d43d97100d", + "filename": "packages/asset-buyer/lib/src/utils/order_provider_response_processor.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_provider_response_processor.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_provider_response_processor.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/order_provider_response_processor.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "97bff31dbe611f7696f6d1962710f7e1028d30f0", + "filename": "packages/asset-buyer/lib/src/utils/order_provider_response_processor.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_provider_response_processor.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_provider_response_processor.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/order_provider_response_processor.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "4bba214e91427d3033da59a261cb89d5f6956055", + "filename": "packages/asset-buyer/lib/src/utils/order_utils.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_utils.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_utils.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/order_utils.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "21c7d0841772139c142b4e59b02dc36c24bbe8af", + "filename": "packages/asset-buyer/lib/src/utils/order_utils.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_utils.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_utils.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/order_utils.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "16e4d0de9ec658062c57fa6f3744d547be51c320", + "filename": "packages/asset-buyer/lib/src/utils/order_utils.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_utils.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_utils.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/order_utils.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "a5eb412067a523fffc141978fbcb29a169e4e5a0", + "filename": "packages/asset-buyer/lib/src/utils/order_utils.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_utils.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/src/utils/order_utils.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/src/utils/order_utils.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "10e4768dfe8b9f2e66ae828716856c4a660b7bfb", + "filename": "packages/asset-buyer/lib/test/asset_buyer_test.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/asset_buyer_test.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/asset_buyer_test.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/asset_buyer_test.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "c654dcc532f3664ebfe9cd1bd9b4d5f9bbdc8eda", + "filename": "packages/asset-buyer/lib/test/asset_buyer_test.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/asset_buyer_test.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/asset_buyer_test.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/asset_buyer_test.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b4d68fdf173fc8f1cce9cbd1f12d8aa7357a4a5f", + "filename": "packages/asset-buyer/lib/test/asset_buyer_test.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/asset_buyer_test.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/asset_buyer_test.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/asset_buyer_test.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "13f51afb950350c546e4fa1f8b3c3ecc761f79be", + "filename": "packages/asset-buyer/lib/test/asset_buyer_test.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/asset_buyer_test.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/asset_buyer_test.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/asset_buyer_test.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "6b665a7c1bd0e6730d82e9248999c78fceba310b", + "filename": "packages/asset-buyer/lib/test/buy_quote_calculator_test.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/buy_quote_calculator_test.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/buy_quote_calculator_test.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/buy_quote_calculator_test.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7a0ad191c69d9b3e53b7cc94eed3a024ea66094c", + "filename": "packages/asset-buyer/lib/test/buy_quote_calculator_test.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/buy_quote_calculator_test.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/buy_quote_calculator_test.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/buy_quote_calculator_test.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "fbaa256bedd8113de63bc88c0b7205c029918c63", + "filename": "packages/asset-buyer/lib/test/buy_quote_calculator_test.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/buy_quote_calculator_test.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/buy_quote_calculator_test.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/buy_quote_calculator_test.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "5267e1c4c35da9e0751e4a7591fa1abf8ed1dbe0", + "filename": "packages/asset-buyer/lib/test/buy_quote_calculator_test.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/buy_quote_calculator_test.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/buy_quote_calculator_test.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/buy_quote_calculator_test.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "9c7f6cc66fccbbef54b42b4ed88d6a8c75acc60e", + "filename": "packages/asset-buyer/lib/test/utils/chai_setup.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/chai_setup.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/chai_setup.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/chai_setup.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "148cdfb1abee7a61a48f324c74e6640dd1c3e0ed", + "filename": "packages/asset-buyer/lib/test/utils/chai_setup.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/chai_setup.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/chai_setup.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/chai_setup.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7f7634965e1cd4e1f2334024127784e1832168d9", + "filename": "packages/asset-buyer/lib/test/utils/chai_setup.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/chai_setup.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/chai_setup.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/chai_setup.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "038f5ab7284f432e8f031ca6a41e77b4d0bf34d5", + "filename": "packages/asset-buyer/lib/test/utils/chai_setup.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/chai_setup.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/chai_setup.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/chai_setup.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "032679970025c8278866067ed3b22bd2ea1985bf", + "filename": "packages/asset-buyer/lib/test/utils/mocks.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/mocks.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/mocks.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/mocks.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "35202fc8746e51fb1bae3720518ccaddeb88c600", + "filename": "packages/asset-buyer/lib/test/utils/mocks.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/mocks.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/mocks.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/mocks.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "edb96f66027dff4124fcf44a79a142bb3cfadbd0", + "filename": "packages/asset-buyer/lib/test/utils/mocks.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/mocks.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/mocks.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/mocks.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "994f643b3692b5ee00118ccf1be45aa42ad4253c", + "filename": "packages/asset-buyer/lib/test/utils/mocks.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/mocks.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/mocks.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/mocks.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "8f358eaffc6ada8b10fdb42e350c4d131bdbe7ba", + "filename": "packages/asset-buyer/lib/test/utils/test_helpers.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/test_helpers.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/test_helpers.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/test_helpers.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "5c073200364fcbb0894063d9bb56722261997ed1", + "filename": "packages/asset-buyer/lib/test/utils/test_helpers.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/test_helpers.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/test_helpers.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/test_helpers.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7130e8adc77219575d8b48463ed3974990f1d254", + "filename": "packages/asset-buyer/lib/test/utils/test_helpers.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/test_helpers.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/test_helpers.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/test_helpers.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "d9d068d6d36950766e83ebbb610e48b85b0e6e8d", + "filename": "packages/asset-buyer/lib/test/utils/test_helpers.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/test_helpers.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/lib/test/utils/test_helpers.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/lib/test/utils/test_helpers.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7b7011e0b6437d2d3187424389d87827362eb1d5", + "filename": "packages/asset-buyer/src/asset_buyer.ts", + "status": "modified", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/src/asset_buyer.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/asset-buyer/src/asset_buyer.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/asset-buyer/src/asset_buyer.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "2e8c18170375901afd75bd0f7870d154462cb72f", + "filename": "packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "01d215359868458ca2243e3b579129fcd731f497", + "filename": "packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "39c0589b41f9f973546bad0ae6b43a0d882cc1e3", + "filename": "packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "eb8a8b7ae920f5bfcd6bd8818e61faaac4d6cab3", + "filename": "packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/abstract/abstract_balance_and_proxy_allowance_lazy_store.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "22efaf1dcaab0178c3dca5deae964ababa1a2a9b", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "a9d66354ae856bfc069faf5538d8a689944e286e", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "6f5d60f1eb926401163ff67e57d6d4fb7d1a8433", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "07950fca48992164eda05b70f2037bd2a7e15bb9", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "fc21a8a563771a17a6c083d93650c931f61f763b", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "73ffb2435120362345484215306e0a5cefe67c29", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "f00bc81768bea883505032c76e73713b6586228e", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "e8c9d6b323c47715279c6654a3cc22499927e426", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/contract_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "cd09d1f79b63359bad6ee342128dcb5a8930d9a1", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "2e2be944397a2e4dd3e241bd849ba1410d13a5b8", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "83576a77478eaf09d8c7e8fb7622053dc48de4ea", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "50c167ab6bbe33e14d75337c6d22e9f5799526f6", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/dutch_auction_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "ddbfa2603112011875909bdab559d3dbcbf6712d", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "803550bad4ac0ed6024e760eeecd5bb6bcec6c1e", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "82fe11867729bc2c664303f0d89d41fa8a427735", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "962c3a8cb8c1e38769a321970bf3534374abaab3", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc20_proxy_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "ef33d095310e17d727706d511689d778c3eed1d8", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b9a5cfd90e689ee682b61cd4789337fc5611f7a3", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "21230117fd335038ea5e3bec0443dca1a5ae8f97", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "a399fdaff2c9afd23bb07a83dc5034dc49542bf1", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc20_token_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "2d80271b10c805fe2bf98ba41b7bac7718b675e2", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "4966809f91d6fcd408a209b423d71a1b2db627dc", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "19805d1008ec289e7a9c6f6248154fe103f7487f", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "8e153f0c74326bb2f1011b1eb11a732365dc7ea4", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc721_proxy_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "0f10ace5784f4904a03c216b3ad628a899a12d1f", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "fd16f4c1ead1aae6e8bef1b54462457b8f8d4d82", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "bd3bb3c669df074b4bf6aa2ac3d149fd491e3ef1", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b8110cbe5c9e4f6d852198437f051d7b1ed0b7d8", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/erc721_token_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "59929175a1546e898c178eaf8e8742cff4aaf9d9", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "ae7dfffc19b9540b6b3da291848e7a4617d731ae", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "e0ccd5714833147dd1cf615e703a3997cc86001d", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "ea66d9338c9504c23793599b0f97354c1c60b5dc", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/ether_token_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "6c82f6ae3268ab89076b498b0a1c85e2f6379f41", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b2da17bbf1ba5c5077b5b89d29e01512bc1a922f", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "4604181f15faa07df36c66dc9174eea8765c7e64", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "66f6ab5da84c555ff2d5b662b12067042d3b8a28", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/exchange_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "d681258323cfd0c371d3436f944f7114046c62a4", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b90e8e8865f9dda53f9a4c25670699b0dc79e534", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b0c92e115aae9c2b0cdfd03a052e848e6493f016", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b72cad605ea4ec338bd0741198dc779c11c5fe56", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/forwarder_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "8360ab153554888d0d5a0ea620b65d3ca963c283", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "18392ba13fb5bed2592d09570fd67e99053f89e4", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "6364c4f6aecb44c9924b2df4c4052b638012fbd7", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "f3384d89be80f5e0c62a56a0f77efa0457d6faa4", + "filename": "packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/contract_wrappers/order_validator_wrapper.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "d09af8e2a801c1893dd2381acd2a8734dacaf5b3", + "filename": "packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "9f7187d7a25ee1546531115e6b9aef8f859e4f56", + "filename": "packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "0fd846ff7309a0e5fd840776cc20d01ba3e0384e", + "filename": "packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "90f17300ea7c3ee3a79c9f4044100817703cf361", + "filename": "packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/fetchers/asset_balance_and_proxy_allowance_fetcher.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "eb293375e6109cd4c6971eed61ffb2858fbd078e", + "filename": "packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "83e17213c4c5fe31dbdaa29c5235cbf25742703b", + "filename": "packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "51be8ed185d103488997f33aba4ac2ffae60761c", + "filename": "packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "94970bf93f392b314f712d0bf2779a4adb518435", + "filename": "packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/fetchers/order_filled_cancelled_fetcher.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "f5f75fe6f08ef36ef0f9f9b025316284c0f74b64", + "filename": "packages/contract-wrappers/lib/src/index.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/index.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/index.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/index.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "ef631ecee407294901ea17d6ea5532e70240ee85", + "filename": "packages/contract-wrappers/lib/src/index.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/index.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/index.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/index.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "852fbb0b1ea63b65712ee70afc50adc43a3e6fe2", + "filename": "packages/contract-wrappers/lib/src/index.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/index.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/index.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/index.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "8a845bdffaaa2b9e3a410d706694161cb8c0ff47", + "filename": "packages/contract-wrappers/lib/src/index.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/index.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/index.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/index.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "cafc5a6934033b3fd1495685aadc58de508d2c84", + "filename": "packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "4457312573d4eba1f248cdd6e467a1fe14b57887", + "filename": "packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "cd4a9ca16e03894bd825f4cc40fa2ad9bd02372d", + "filename": "packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "919fa1c15466e7538eeadaa8b867b4e82e202afe", + "filename": "packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/contract_wrappers_config_schema.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "187df85bd213cee6e4d4b327bb941e3da020a9ea", + "filename": "packages/contract-wrappers/lib/src/schemas/method_opts_schema.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/method_opts_schema.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/method_opts_schema.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/method_opts_schema.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "29321fdf8dc9ced63984ca5ba750e35f9f4bbfae", + "filename": "packages/contract-wrappers/lib/src/schemas/method_opts_schema.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/method_opts_schema.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/method_opts_schema.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/method_opts_schema.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7c05b93ee34826961a6b998d6f67beae3afda8c7", + "filename": "packages/contract-wrappers/lib/src/schemas/method_opts_schema.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/method_opts_schema.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/method_opts_schema.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/method_opts_schema.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "352db89a441cf71d24e8592e8a20f07c48ad1ba9", + "filename": "packages/contract-wrappers/lib/src/schemas/method_opts_schema.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/method_opts_schema.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/method_opts_schema.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/method_opts_schema.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "d1c5bfa3e7186629be1bf7c377537d120dce4a88", + "filename": "packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "0d21d505e75127d4f127cda9bd9d318d49e709a7", + "filename": "packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "38a1b62a984e82d12ff1d8a76c4b82ed8e5599a4", + "filename": "packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "848b5ff9b8fcf9d03f157630937295242eb974b4", + "filename": "packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/order_tx_opts_schema.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "457af1c4e04034cb28679db03fbd7deabd673229", + "filename": "packages/contract-wrappers/lib/src/schemas/tx_opts_schema.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "978c8c948543dc31d7cc6e3ae5e7b91615de4a38", + "filename": "packages/contract-wrappers/lib/src/schemas/tx_opts_schema.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "aa3f126c5acabda73bf6a9704c7a23ef3bec5262", + "filename": "packages/contract-wrappers/lib/src/schemas/tx_opts_schema.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "13426da3d8abb0a846c7db545aa26568a4368384", + "filename": "packages/contract-wrappers/lib/src/schemas/tx_opts_schema.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/tx_opts_schema.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "fa4415ec80545120dfa0efe57dd62f641f6c7724", + "filename": "packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "e7dda4bf2d82f8f6078cc2241d76ae3b4267c426", + "filename": "packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "f2463650c7b0114a1ab1b18f37574d7a2e2ca6a8", + "filename": "packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "6e93e21a59a09c36fc5e55164482f8ab41d3cdd0", + "filename": "packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/schemas/validate_order_fillable_opts_schema.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "f7edf6d8527e972123a920103cfd0087285d93e9", + "filename": "packages/contract-wrappers/lib/src/types.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/types.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/types.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/types.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "c6eb78e44bfb9c45863bf317340d00f19dabd60f", + "filename": "packages/contract-wrappers/lib/src/types.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/types.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/types.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/types.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "19bed91da0be1157a948064ae6850a6372c58fc5", + "filename": "packages/contract-wrappers/lib/src/types.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/types.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/types.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/types.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "93b07f6271b180cd35c9661d6d906d6c06c21597", + "filename": "packages/contract-wrappers/lib/src/types.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/types.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/types.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/types.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b61375a7a341e978bf1650c835dc03a60fd10937", + "filename": "packages/contract-wrappers/lib/src/utils/assert.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/assert.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/assert.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/assert.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "bf2af6d0b643b3d7f69deb60c8f8e5aba2e92ff0", + "filename": "packages/contract-wrappers/lib/src/utils/assert.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/assert.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/assert.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/assert.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b072ddd8eba0b764e9776a5b171f46c5f1802f66", + "filename": "packages/contract-wrappers/lib/src/utils/assert.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/assert.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/assert.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/assert.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "f0306f2d148d8de7f30be9ccfa3ac48b17de1f67", + "filename": "packages/contract-wrappers/lib/src/utils/assert.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/assert.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/assert.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/assert.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "cdb0ef43676e35d4f45eaa1ef04d79f5d7ad2ed0", + "filename": "packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "1820a5201d0056c583cdca7da0e20b551840fdbb", + "filename": "packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "c7b7cc8b1d360bea858c0837064e4966186b89b3", + "filename": "packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "4dbe7aaf66a07e0bbf083da05b3c44952dbef68d", + "filename": "packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/calldata_optimization_utils.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "5de7104088d64d5b2f57f719ab5c19b6f9f0a601", + "filename": "packages/contract-wrappers/lib/src/utils/constants.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/constants.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/constants.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/constants.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "c8bbd4312bf32e962b0a634fff60e6b6bc71c266", + "filename": "packages/contract-wrappers/lib/src/utils/constants.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/constants.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/constants.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/constants.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "5be2fd6b1173e64e62dcae363bb4183b62b1f41c", + "filename": "packages/contract-wrappers/lib/src/utils/constants.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/constants.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/constants.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/constants.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7a54c61750ede98f887bc8762e1e3ce87b2ef25c", + "filename": "packages/contract-wrappers/lib/src/utils/constants.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/constants.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/constants.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/constants.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "bf2efb1f260e603fbb48256a16309f5480a0d566", + "filename": "packages/contract-wrappers/lib/src/utils/contract_addresses.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/contract_addresses.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/contract_addresses.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/contract_addresses.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "dc207b623bc358b49fef017963716deafaf1b34f", + "filename": "packages/contract-wrappers/lib/src/utils/contract_addresses.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/contract_addresses.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/contract_addresses.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/contract_addresses.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7486da408486269a719fd6bd331d0ae0b900a262", + "filename": "packages/contract-wrappers/lib/src/utils/contract_addresses.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/contract_addresses.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/contract_addresses.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/contract_addresses.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "bc1181bd9edb76e1e329e8e2b8e12fdf47a77a4b", + "filename": "packages/contract-wrappers/lib/src/utils/contract_addresses.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/contract_addresses.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/contract_addresses.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/contract_addresses.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "cf9a7f694c2f849feeaba5e5babe2c3c006f667f", + "filename": "packages/contract-wrappers/lib/src/utils/decorators.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/decorators.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/decorators.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/decorators.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "5d830bd5752e56829756705241c8fc53b7491249", + "filename": "packages/contract-wrappers/lib/src/utils/decorators.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/decorators.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/decorators.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/decorators.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "87ce646774eea85e9670ee765b126cff9e00fb20", + "filename": "packages/contract-wrappers/lib/src/utils/decorators.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/decorators.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/decorators.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/decorators.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "cd78559049f0b1fc4893142281f4e70ada37ae8d", + "filename": "packages/contract-wrappers/lib/src/utils/decorators.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/decorators.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/decorators.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/decorators.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "bd8559861473c62f30c282afb502fbd862d3bbf6", + "filename": "packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "8618170b3b7dc35596b9860dcbb5a0c14f87b3ee", + "filename": "packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b56035203e946f6afa14724546d80796f297746f", + "filename": "packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "74da507febac6e0cd1f6295916d9980dff24ee0b", + "filename": "packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/exchange_transfer_simulator.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "e54230719ba50ba8af35ceb5ee1b27c36f058620", + "filename": "packages/contract-wrappers/lib/src/utils/filter_utils.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/filter_utils.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/filter_utils.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/filter_utils.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "03c53aa1e46c74f52d597de326aaecda0b32c11d", + "filename": "packages/contract-wrappers/lib/src/utils/filter_utils.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/filter_utils.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/filter_utils.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/filter_utils.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "ea0176059c722ce2ba16573e1537587653ef27f8", + "filename": "packages/contract-wrappers/lib/src/utils/filter_utils.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/filter_utils.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/filter_utils.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/filter_utils.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "145609e52ea60c728c72c15687c7c834ee4f7c8a", + "filename": "packages/contract-wrappers/lib/src/utils/filter_utils.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/filter_utils.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/filter_utils.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/filter_utils.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7c655d40b44054e7ebc0f264591c9a75027f3aa1", + "filename": "packages/contract-wrappers/lib/src/utils/transaction_encoder.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/transaction_encoder.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/transaction_encoder.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/transaction_encoder.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "d76d76ace3cdcb9e78337aecbae768e8d07ad652", + "filename": "packages/contract-wrappers/lib/src/utils/transaction_encoder.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/transaction_encoder.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/transaction_encoder.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/transaction_encoder.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "e1c5d671fc3a40ffa520c88670f2653624612078", + "filename": "packages/contract-wrappers/lib/src/utils/transaction_encoder.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/transaction_encoder.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/transaction_encoder.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/transaction_encoder.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "e59424f06cb9bb22e026bdae87c033f2761baa4e", + "filename": "packages/contract-wrappers/lib/src/utils/transaction_encoder.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/transaction_encoder.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/transaction_encoder.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/transaction_encoder.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "9d636cab1cba3e23a6cca2f4fc48c7c0984abae8", + "filename": "packages/contract-wrappers/lib/src/utils/utils.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/utils.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/utils.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/utils.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "62631a96dc5cbdf31399b54d1757428b292154b8", + "filename": "packages/contract-wrappers/lib/src/utils/utils.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/utils.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/utils.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/utils.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "8aa8364744936ca4fc5ba931089162948edf520f", + "filename": "packages/contract-wrappers/lib/src/utils/utils.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/utils.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/utils.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/utils.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "a3c18a94eeb95b07cd8aba1fb5fae1983758fa3b", + "filename": "packages/contract-wrappers/lib/src/utils/utils.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/utils.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/src/utils/utils.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/src/utils/utils.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "d6cbe40c2924c3c20bd364779f3ab0cb35b23e2d", + "filename": "packages/contract-wrappers/lib/test/calldata_decoder_test.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_decoder_test.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_decoder_test.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/calldata_decoder_test.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "c81f1925ea457c36d5e508caf76ad2158e2de107", + "filename": "packages/contract-wrappers/lib/test/calldata_decoder_test.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_decoder_test.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_decoder_test.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/calldata_decoder_test.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "5723fdf6d5ff11f593876c3712e68b5f70e85d92", + "filename": "packages/contract-wrappers/lib/test/calldata_decoder_test.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_decoder_test.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_decoder_test.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/calldata_decoder_test.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "2cfe7606f9c469e55a6867649618755ad767e381", + "filename": "packages/contract-wrappers/lib/test/calldata_decoder_test.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_decoder_test.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_decoder_test.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/calldata_decoder_test.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "e8b93e9d824274264f3fa6c850faf73d8bd0dde7", + "filename": "packages/contract-wrappers/lib/test/calldata_optimization_utils_test.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "211be3201693bec7b30bc6c2c666a5d505ca88a8", + "filename": "packages/contract-wrappers/lib/test/calldata_optimization_utils_test.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "a2139d607e3e7aa8d9c01e0310fd780b11577b66", + "filename": "packages/contract-wrappers/lib/test/calldata_optimization_utils_test.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "684fe94e3cdcd00e285d1f2252c770a0d7ce4d33", + "filename": "packages/contract-wrappers/lib/test/calldata_optimization_utils_test.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/calldata_optimization_utils_test.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "2a5c67822d0000f2fbea74f7395b6fc41333074f", + "filename": "packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7e098d49cb3ce789ee314742589680438d6a7a38", + "filename": "packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "9d7755a5520115eb4307e453fe4962d9b3d7f3e4", + "filename": "packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7855079ed73d31971ed253ce4b9bd033b5998da4", + "filename": "packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/dutch_auction_wrapper_test.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "031d30b12b6d18030a18161df33af9fda3a0c61f", + "filename": "packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "582deb76edddcaaa297c48aababe895a4a7e5552", + "filename": "packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "389e385dfd09024b78bff9f24d34f719ab9fb48c", + "filename": "packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "73f5be3e4f164eaefee590da54111b91351128d4", + "filename": "packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc20_proxy_wrapper_test.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "7cd093498c87df797d7e9f3e90ce15ed9c2aca9d", + "filename": "packages/contract-wrappers/lib/test/erc20_wrapper_test.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_wrapper_test.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_wrapper_test.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc20_wrapper_test.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "35d2716838cd00dd4bbfcc479101f131e4e85acc", + "filename": "packages/contract-wrappers/lib/test/erc20_wrapper_test.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_wrapper_test.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_wrapper_test.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc20_wrapper_test.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "adb4c3aa4cb3848ca62a67f597297b7cd421df08", + "filename": "packages/contract-wrappers/lib/test/erc20_wrapper_test.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_wrapper_test.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_wrapper_test.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc20_wrapper_test.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "3986928a5a8a122a9cf62b85f665068cc6067419", + "filename": "packages/contract-wrappers/lib/test/erc20_wrapper_test.js.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_wrapper_test.js.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc20_wrapper_test.js.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc20_wrapper_test.js.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "575a5889fb0f656ddba2a75d42ee3add2bce491a", + "filename": "packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.d.ts", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.d.ts", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.d.ts", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.d.ts?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "c3e4ebabdfd6be8f9a021316f0a8793371825ba0", + "filename": "packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.d.ts.map", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.d.ts.map", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.d.ts.map", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.d.ts.map?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + }, + { + "sha": "b37ac6795019e1d9b725da2862e7c08fb20002b9", + "filename": "packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.js", + "status": "added", + "additions": 0, + "deletions": 0, + "changes": 0, + "blob_url": "https://github.com/0xProject/0x-monorepo/blob/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.js", + "raw_url": "https://github.com/0xProject/0x-monorepo/raw/e23547d5dac2626e326dec0d1d27aa11b290d020/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.js", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/packages/contract-wrappers/lib/test/erc721_proxy_wrapper_test.js?ref=e23547d5dac2626e326dec0d1d27aa11b290d020" + } + ] +} diff --git a/packages/pipeline/test/fixtures/github/api_v3_forks.json b/packages/pipeline/test/fixtures/github/api_v3_forks.json new file mode 100644 index 0000000000..3f6e9ae7fb --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_forks.json @@ -0,0 +1,101 @@ +[ + { + "id": 174764562, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzQ3NjQ1NjI=", + "name": "0x-monorepo", + "full_name": "NoahZinsmeister/0x-monorepo", + "private": false, + "owner": { + "login": "NoahZinsmeister", + "id": 3760414, + "node_id": "MDQ6VXNlcjM3NjA0MTQ=", + "avatar_url": "https://avatars3.githubusercontent.com/u/3760414?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/NoahZinsmeister", + "html_url": "https://github.com/NoahZinsmeister", + "followers_url": "https://api.github.com/users/NoahZinsmeister/followers", + "following_url": "https://api.github.com/users/NoahZinsmeister/following{/other_user}", + "gists_url": "https://api.github.com/users/NoahZinsmeister/gists{/gist_id}", + "starred_url": "https://api.github.com/users/NoahZinsmeister/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/NoahZinsmeister/subscriptions", + "organizations_url": "https://api.github.com/users/NoahZinsmeister/orgs", + "repos_url": "https://api.github.com/users/NoahZinsmeister/repos", + "events_url": "https://api.github.com/users/NoahZinsmeister/events{/privacy}", + "received_events_url": "https://api.github.com/users/NoahZinsmeister/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/NoahZinsmeister/0x-monorepo", + "description": "0x protocol monorepo - includes our smart contracts and many developer tools", + "fork": true, + "url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo", + "forks_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/forks", + "keys_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/teams", + "hooks_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/hooks", + "issue_events_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/issues/events{/number}", + "events_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/events", + "assignees_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/assignees{/user}", + "branches_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/branches{/branch}", + "tags_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/tags", + "blobs_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/languages", + "stargazers_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/stargazers", + "contributors_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/contributors", + "subscribers_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/subscribers", + "subscription_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/subscription", + "commits_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/contents/{+path}", + "compare_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/merges", + "archive_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/downloads", + "issues_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/issues{/number}", + "pulls_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/labels{/name}", + "releases_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/releases{/id}", + "deployments_url": "https://api.github.com/repos/NoahZinsmeister/0x-monorepo/deployments", + "created_at": "2019-03-10T01:23:30Z", + "updated_at": "2019-03-10T04:12:03Z", + "pushed_at": "2019-03-10T04:12:00Z", + "git_url": "git://github.com/NoahZinsmeister/0x-monorepo.git", + "ssh_url": "git@github.com:NoahZinsmeister/0x-monorepo.git", + "clone_url": "https://github.com/NoahZinsmeister/0x-monorepo.git", + "svn_url": "https://github.com/NoahZinsmeister/0x-monorepo", + "homepage": "", + "size": 86271, + "stargazers_count": 0, + "watchers_count": 0, + "language": "TypeScript", + "has_issues": false, + "has_projects": true, + "has_downloads": true, + "has_wiki": false, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "open_issues_count": 0, + "license": { + "key": "other", + "name": "Other", + "spdx_id": "NOASSERTION", + "url": null, + "node_id": "MDc6TGljZW5zZTA=" + }, + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "development" + } +] diff --git a/packages/pipeline/test/fixtures/github/api_v3_forks.ts b/packages/pipeline/test/fixtures/github/api_v3_forks.ts new file mode 100644 index 0000000000..3af9129c69 --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_forks.ts @@ -0,0 +1,36 @@ +import { GithubFork } from '../../../src/entities'; + +// To re-create the JSON files from the API (e.g. if the API output schema changes), run the below commands: + +// (1) Forks: +// curl https://api.github.com/repos/0xProject/0x-monorepo/forks?per_page=1&page=1 +// docs here: https://developer.github.com/v3/repos/forks/#list-forks + +// (2) Comparisons: +// curl https://api.github.com/repos/0xProject/0x-monorepo/compare/development...NoahZinsmeister:development +// --> (replace the last part with the fork owner + branch that you get from the Fork API response) +// docs here: https://developer.github.com/v3/repos/commits/#compare-two-commits + +const ParsedGithubFork = new GithubFork(); +ParsedGithubFork.observedTimestamp = Date.now(); +ParsedGithubFork.fullName = 'NoahZinsmeister/0x-monorepo'; +ParsedGithubFork.ownerLogin = 'NoahZinsmeister'; +ParsedGithubFork.createdAt = 1552181010000; // tslint:disable-line:custom-no-magic-numbers +ParsedGithubFork.updatedAt = 1552191123000; // tslint:disable-line:custom-no-magic-numbers +ParsedGithubFork.pushedAt = 1552191120000; // tslint:disable-line:custom-no-magic-numbers +ParsedGithubFork.size = 86271; // tslint:disable-line:custom-no-magic-numbers +ParsedGithubFork.stargazers = 0; +ParsedGithubFork.watchers = 0; +ParsedGithubFork.forks = 0; +ParsedGithubFork.openIssues = 0; +ParsedGithubFork.network = undefined; +ParsedGithubFork.subscribers = undefined; +ParsedGithubFork.defaultBranch = 'development'; + +const EnrichedGithubFork = { ...ParsedGithubFork }; // clone the above +EnrichedGithubFork.status = 'ahead'; +EnrichedGithubFork.aheadBy = 1; +EnrichedGithubFork.behindBy = 0; +EnrichedGithubFork.totalCommits = 1; + +export { ParsedGithubFork, EnrichedGithubFork }; diff --git a/packages/pipeline/test/fixtures/github/api_v3_issues.json b/packages/pipeline/test/fixtures/github/api_v3_issues.json new file mode 100644 index 0000000000..b554efe9d6 --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_issues.json @@ -0,0 +1,55 @@ +[ + { + "url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/1691", + "repository_url": "https://api.github.com/repos/0xProject/0x-monorepo", + "labels_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/1691/labels{/name}", + "comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/1691/comments", + "events_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/1691/events", + "html_url": "https://github.com/0xProject/0x-monorepo/issues/1691", + "id": 420115585, + "node_id": "MDU6SXNzdWU0MjAxMTU1ODU=", + "number": 1691, + "title": "An in-range update of source-map-support is breaking the build 🚨", + "user": { + "login": "greenkeeper[bot]", + "id": 23040076, + "node_id": "MDM6Qm90MjMwNDAwNzY=", + "avatar_url": "https://avatars3.githubusercontent.com/in/505?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/greenkeeper%5Bbot%5D", + "html_url": "https://github.com/apps/greenkeeper", + "followers_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/greenkeeper%5Bbot%5D/received_events", + "type": "Bot", + "site_admin": false + }, + "labels": [ + { + "id": 618533621, + "node_id": "MDU6TGFiZWw2MTg1MzM2MjE=", + "url": "https://api.github.com/repos/0xProject/0x-monorepo/labels/greenkeeper", + "name": "greenkeeper", + "color": "00c775", + "default": false + } + ], + "state": "open", + "locked": false, + "assignee": null, + "assignees": [], + "milestone": null, + "comments": 1, + "created_at": "2019-03-12T17:30:58Z", + "updated_at": "2019-03-12T17:32:26Z", + "closed_at": null, + "author_association": "CONTRIBUTOR", + "body": "\n## The devDependency [source-map-support](https://github.com/evanw/node-source-map-support) was updated from `0.5.10` to `0.5.11`.\n\n🚨 [View failing branch](https://github.com/0xProject/0x-monorepo/compare/development...0xProject:greenkeeper%2Fsource-map-support-0.5.11).\n\nThis version is **covered** by your **current version range** and after updating it in your project **the build failed**.\n\n\n\n\nsource-map-support is a devDependency of this project. It **might not break your production code or affect downstream projects**, but probably breaks your build or test tools, which may **prevent deploying or publishing**.\n\n\n\n
\nStatus Details\n\n- ❌ **ci/circleci: build:** Your tests failed on CircleCI ([Details](https://circleci.com/gh/0xProject/0x-monorepo/65642?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link)).\n- ✅ **ci/circleci: test-python:** Your tests passed on CircleCI! ([Details](https://circleci.com/gh/0xProject/0x-monorepo/65641?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link)).\n- ✅ **ci/circleci: static-tests-python:** Your tests passed on CircleCI! ([Details](https://circleci.com/gh/0xProject/0x-monorepo/65643?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link)).\n
\n\n\n---\n\n
\nCommits\n

The new version differs by 6 commits.

\n
    \n
  • 6035ef5 0.5.11
  • \n
  • f70e1ca Update built files
  • \n
  • bd2c3f5 Merge pull request #236 from LinusU/update-deps
  • \n
  • 2e04483 Update some dev-dependencies
  • \n
  • 538e1c5 Merge pull request #235 from ArtemGovorov/patch-1
  • \n
  • 16f1a6d Fix resetRetrieveHandlers to reset retrieveSourceMap and retrieveFile functions
  • \n
\n

See the full diff

\n
\n\n\n
\nFAQ and help\n\nThere is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new).\n
\n\n---\n\n\nYour [Greenkeeper](https://greenkeeper.io) Bot :palm_tree:\n" + } +] diff --git a/packages/pipeline/test/fixtures/github/api_v3_issues.ts b/packages/pipeline/test/fixtures/github/api_v3_issues.ts new file mode 100644 index 0000000000..e91095606d --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_issues.ts @@ -0,0 +1,24 @@ +import { GithubIssue } from '../../../src/entities'; + +// To re-create the JSON files from the API (e.g. if the API output schema changes), run the below command: +// curl "https://api.github.com/repos/0xProject/0x-monorepo/issues?state=all&per_page=1" +// docs here: https://developer.github.com/v3/issues/#list-issues-for-a-repository + +const ParsedGithubIssue: GithubIssue = { + observedTimestamp: Date.now(), + repoFullName: '0xProject/0x-monorepo', + issueNumber: 1691, + title: 'An in-range update of source-map-support is breaking the build 🚨', + state: 'open', + locked: false, + assigneeLogin: undefined, + userLogin: 'greenkeeper[bot]', + userType: 'Bot', + userSiteAdmin: false, + comments: 1, + createdAt: Date.parse('2019-03-12T17:30:58Z'), + updatedAt: Date.parse('2019-03-12T17:32:26Z'), + closedAt: undefined, +}; + +export { ParsedGithubIssue }; diff --git a/packages/pipeline/test/fixtures/github/api_v3_pulls.json b/packages/pipeline/test/fixtures/github/api_v3_pulls.json new file mode 100644 index 0000000000..8dc61b9e6b --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_pulls.json @@ -0,0 +1,327 @@ +[ + { + "url": "https://api.github.com/repos/0xProject/0x-monorepo/pulls/1684", + "id": 259358832, + "node_id": "MDExOlB1bGxSZXF1ZXN0MjU5MzU4ODMy", + "html_url": "https://github.com/0xProject/0x-monorepo/pull/1684", + "diff_url": "https://github.com/0xProject/0x-monorepo/pull/1684.diff", + "patch_url": "https://github.com/0xProject/0x-monorepo/pull/1684.patch", + "issue_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/1684", + "number": 1684, + "state": "open", + "locked": false, + "title": "[WIP] Pull Github data", + "user": { + "login": "askeluv", + "id": 2386262, + "node_id": "MDQ6VXNlcjIzODYyNjI=", + "avatar_url": "https://avatars2.githubusercontent.com/u/2386262?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/askeluv", + "html_url": "https://github.com/askeluv", + "followers_url": "https://api.github.com/users/askeluv/followers", + "following_url": "https://api.github.com/users/askeluv/following{/other_user}", + "gists_url": "https://api.github.com/users/askeluv/gists{/gist_id}", + "starred_url": "https://api.github.com/users/askeluv/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/askeluv/subscriptions", + "organizations_url": "https://api.github.com/users/askeluv/orgs", + "repos_url": "https://api.github.com/users/askeluv/repos", + "events_url": "https://api.github.com/users/askeluv/events{/privacy}", + "received_events_url": "https://api.github.com/users/askeluv/received_events", + "type": "User", + "site_admin": false + }, + "body": "## Description\r\n\r\nPulling Github data so we can start monitoring metrics related to the monorepo.\r\n\r\n## Testing instructions\r\n\r\n```\r\nyarn build\r\nyarn migrate:run\r\nyarn test\r\nyarn test:db\r\nnode lib/src/scripts/pull_github.js\r\n```\r\n\r\n## Types of changes\r\n\r\nNew feature (non-breaking change which adds functionality)\r\n\r\n## Checklist:\r\n\r\n- [x] Github repo entity\r\n- [ ] Github pull request entity\r\n- [ ] Github fork entity\r\n", + "created_at": "2019-03-08T04:36:28Z", + "updated_at": "2019-03-08T04:36:28Z", + "closed_at": null, + "merged_at": null, + "merge_commit_sha": "85d164aedbf17d96f11d20b2f08eeaca0defb6e2", + "assignee": null, + "assignees": [], + "requested_reviewers": [], + "requested_teams": [], + "labels": [], + "milestone": null, + "commits_url": "https://api.github.com/repos/0xProject/0x-monorepo/pulls/1684/commits", + "review_comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/pulls/1684/comments", + "review_comment_url": "https://api.github.com/repos/0xProject/0x-monorepo/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/1684/comments", + "statuses_url": "https://api.github.com/repos/0xProject/0x-monorepo/statuses/1991bd437f798e52d6210cf4fac173a10e30f0bd", + "head": { + "label": "0xProject:pull-github-data", + "ref": "pull-github-data", + "sha": "1991bd437f798e52d6210cf4fac173a10e30f0bd", + "user": { + "login": "0xProject", + "id": 24832717, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjI0ODMyNzE3", + "avatar_url": "https://avatars2.githubusercontent.com/u/24832717?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/0xProject", + "html_url": "https://github.com/0xProject", + "followers_url": "https://api.github.com/users/0xProject/followers", + "following_url": "https://api.github.com/users/0xProject/following{/other_user}", + "gists_url": "https://api.github.com/users/0xProject/gists{/gist_id}", + "starred_url": "https://api.github.com/users/0xProject/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/0xProject/subscriptions", + "organizations_url": "https://api.github.com/users/0xProject/orgs", + "repos_url": "https://api.github.com/users/0xProject/repos", + "events_url": "https://api.github.com/users/0xProject/events{/privacy}", + "received_events_url": "https://api.github.com/users/0xProject/received_events", + "type": "Organization", + "site_admin": false + }, + "repo": { + "id": 92181371, + "node_id": "MDEwOlJlcG9zaXRvcnk5MjE4MTM3MQ==", + "name": "0x-monorepo", + "full_name": "0xProject/0x-monorepo", + "private": false, + "owner": { + "login": "0xProject", + "id": 24832717, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjI0ODMyNzE3", + "avatar_url": "https://avatars2.githubusercontent.com/u/24832717?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/0xProject", + "html_url": "https://github.com/0xProject", + "followers_url": "https://api.github.com/users/0xProject/followers", + "following_url": "https://api.github.com/users/0xProject/following{/other_user}", + "gists_url": "https://api.github.com/users/0xProject/gists{/gist_id}", + "starred_url": "https://api.github.com/users/0xProject/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/0xProject/subscriptions", + "organizations_url": "https://api.github.com/users/0xProject/orgs", + "repos_url": "https://api.github.com/users/0xProject/repos", + "events_url": "https://api.github.com/users/0xProject/events{/privacy}", + "received_events_url": "https://api.github.com/users/0xProject/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/0xProject/0x-monorepo", + "description": "0x protocol monorepo - includes our smart contracts and many developer tools", + "fork": false, + "url": "https://api.github.com/repos/0xProject/0x-monorepo", + "forks_url": "https://api.github.com/repos/0xProject/0x-monorepo/forks", + "keys_url": "https://api.github.com/repos/0xProject/0x-monorepo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/0xProject/0x-monorepo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/0xProject/0x-monorepo/teams", + "hooks_url": "https://api.github.com/repos/0xProject/0x-monorepo/hooks", + "issue_events_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/events{/number}", + "events_url": "https://api.github.com/repos/0xProject/0x-monorepo/events", + "assignees_url": "https://api.github.com/repos/0xProject/0x-monorepo/assignees{/user}", + "branches_url": "https://api.github.com/repos/0xProject/0x-monorepo/branches{/branch}", + "tags_url": "https://api.github.com/repos/0xProject/0x-monorepo/tags", + "blobs_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/0xProject/0x-monorepo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/0xProject/0x-monorepo/languages", + "stargazers_url": "https://api.github.com/repos/0xProject/0x-monorepo/stargazers", + "contributors_url": "https://api.github.com/repos/0xProject/0x-monorepo/contributors", + "subscribers_url": "https://api.github.com/repos/0xProject/0x-monorepo/subscribers", + "subscription_url": "https://api.github.com/repos/0xProject/0x-monorepo/subscription", + "commits_url": "https://api.github.com/repos/0xProject/0x-monorepo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/{+path}", + "compare_url": "https://api.github.com/repos/0xProject/0x-monorepo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/0xProject/0x-monorepo/merges", + "archive_url": "https://api.github.com/repos/0xProject/0x-monorepo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/0xProject/0x-monorepo/downloads", + "issues_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues{/number}", + "pulls_url": "https://api.github.com/repos/0xProject/0x-monorepo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/0xProject/0x-monorepo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/0xProject/0x-monorepo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/0xProject/0x-monorepo/labels{/name}", + "releases_url": "https://api.github.com/repos/0xProject/0x-monorepo/releases{/id}", + "deployments_url": "https://api.github.com/repos/0xProject/0x-monorepo/deployments", + "created_at": "2017-05-23T14:17:33Z", + "updated_at": "2019-03-08T00:48:18Z", + "pushed_at": "2019-03-08T04:36:28Z", + "git_url": "git://github.com/0xProject/0x-monorepo.git", + "ssh_url": "git@github.com:0xProject/0x-monorepo.git", + "clone_url": "https://github.com/0xProject/0x-monorepo.git", + "svn_url": "https://github.com/0xProject/0x-monorepo", + "homepage": "", + "size": 86647, + "stargazers_count": 989, + "watchers_count": 989, + "language": "TypeScript", + "has_issues": true, + "has_projects": false, + "has_downloads": true, + "has_wiki": false, + "has_pages": false, + "forks_count": 295, + "mirror_url": null, + "archived": false, + "open_issues_count": 46, + "license": { + "key": "other", + "name": "Other", + "spdx_id": "NOASSERTION", + "url": null, + "node_id": "MDc6TGljZW5zZTA=" + }, + "forks": 295, + "open_issues": 46, + "watchers": 989, + "default_branch": "development" + } + }, + "base": { + "label": "0xProject:development", + "ref": "development", + "sha": "9e03e1c742d73c6f0b2d61b1a069120e4aa71d3e", + "user": { + "login": "0xProject", + "id": 24832717, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjI0ODMyNzE3", + "avatar_url": "https://avatars2.githubusercontent.com/u/24832717?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/0xProject", + "html_url": "https://github.com/0xProject", + "followers_url": "https://api.github.com/users/0xProject/followers", + "following_url": "https://api.github.com/users/0xProject/following{/other_user}", + "gists_url": "https://api.github.com/users/0xProject/gists{/gist_id}", + "starred_url": "https://api.github.com/users/0xProject/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/0xProject/subscriptions", + "organizations_url": "https://api.github.com/users/0xProject/orgs", + "repos_url": "https://api.github.com/users/0xProject/repos", + "events_url": "https://api.github.com/users/0xProject/events{/privacy}", + "received_events_url": "https://api.github.com/users/0xProject/received_events", + "type": "Organization", + "site_admin": false + }, + "repo": { + "id": 92181371, + "node_id": "MDEwOlJlcG9zaXRvcnk5MjE4MTM3MQ==", + "name": "0x-monorepo", + "full_name": "0xProject/0x-monorepo", + "private": false, + "owner": { + "login": "0xProject", + "id": 24832717, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjI0ODMyNzE3", + "avatar_url": "https://avatars2.githubusercontent.com/u/24832717?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/0xProject", + "html_url": "https://github.com/0xProject", + "followers_url": "https://api.github.com/users/0xProject/followers", + "following_url": "https://api.github.com/users/0xProject/following{/other_user}", + "gists_url": "https://api.github.com/users/0xProject/gists{/gist_id}", + "starred_url": "https://api.github.com/users/0xProject/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/0xProject/subscriptions", + "organizations_url": "https://api.github.com/users/0xProject/orgs", + "repos_url": "https://api.github.com/users/0xProject/repos", + "events_url": "https://api.github.com/users/0xProject/events{/privacy}", + "received_events_url": "https://api.github.com/users/0xProject/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/0xProject/0x-monorepo", + "description": "0x protocol monorepo - includes our smart contracts and many developer tools", + "fork": false, + "url": "https://api.github.com/repos/0xProject/0x-monorepo", + "forks_url": "https://api.github.com/repos/0xProject/0x-monorepo/forks", + "keys_url": "https://api.github.com/repos/0xProject/0x-monorepo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/0xProject/0x-monorepo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/0xProject/0x-monorepo/teams", + "hooks_url": "https://api.github.com/repos/0xProject/0x-monorepo/hooks", + "issue_events_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/events{/number}", + "events_url": "https://api.github.com/repos/0xProject/0x-monorepo/events", + "assignees_url": "https://api.github.com/repos/0xProject/0x-monorepo/assignees{/user}", + "branches_url": "https://api.github.com/repos/0xProject/0x-monorepo/branches{/branch}", + "tags_url": "https://api.github.com/repos/0xProject/0x-monorepo/tags", + "blobs_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/0xProject/0x-monorepo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/0xProject/0x-monorepo/languages", + "stargazers_url": "https://api.github.com/repos/0xProject/0x-monorepo/stargazers", + "contributors_url": "https://api.github.com/repos/0xProject/0x-monorepo/contributors", + "subscribers_url": "https://api.github.com/repos/0xProject/0x-monorepo/subscribers", + "subscription_url": "https://api.github.com/repos/0xProject/0x-monorepo/subscription", + "commits_url": "https://api.github.com/repos/0xProject/0x-monorepo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/{+path}", + "compare_url": "https://api.github.com/repos/0xProject/0x-monorepo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/0xProject/0x-monorepo/merges", + "archive_url": "https://api.github.com/repos/0xProject/0x-monorepo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/0xProject/0x-monorepo/downloads", + "issues_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues{/number}", + "pulls_url": "https://api.github.com/repos/0xProject/0x-monorepo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/0xProject/0x-monorepo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/0xProject/0x-monorepo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/0xProject/0x-monorepo/labels{/name}", + "releases_url": "https://api.github.com/repos/0xProject/0x-monorepo/releases{/id}", + "deployments_url": "https://api.github.com/repos/0xProject/0x-monorepo/deployments", + "created_at": "2017-05-23T14:17:33Z", + "updated_at": "2019-03-08T00:48:18Z", + "pushed_at": "2019-03-08T04:36:28Z", + "git_url": "git://github.com/0xProject/0x-monorepo.git", + "ssh_url": "git@github.com:0xProject/0x-monorepo.git", + "clone_url": "https://github.com/0xProject/0x-monorepo.git", + "svn_url": "https://github.com/0xProject/0x-monorepo", + "homepage": "", + "size": 86647, + "stargazers_count": 989, + "watchers_count": 989, + "language": "TypeScript", + "has_issues": true, + "has_projects": false, + "has_downloads": true, + "has_wiki": false, + "has_pages": false, + "forks_count": 295, + "mirror_url": null, + "archived": false, + "open_issues_count": 46, + "license": { + "key": "other", + "name": "Other", + "spdx_id": "NOASSERTION", + "url": null, + "node_id": "MDc6TGljZW5zZTA=" + }, + "forks": 295, + "open_issues": 46, + "watchers": 989, + "default_branch": "development" + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/0xProject/0x-monorepo/pulls/1684" + }, + "html": { + "href": "https://github.com/0xProject/0x-monorepo/pull/1684" + }, + "issue": { + "href": "https://api.github.com/repos/0xProject/0x-monorepo/issues/1684" + }, + "comments": { + "href": "https://api.github.com/repos/0xProject/0x-monorepo/issues/1684/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/0xProject/0x-monorepo/pulls/1684/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/0xProject/0x-monorepo/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/0xProject/0x-monorepo/pulls/1684/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/0xProject/0x-monorepo/statuses/1991bd437f798e52d6210cf4fac173a10e30f0bd" + } + }, + "author_association": "CONTRIBUTOR" + } +] diff --git a/packages/pipeline/test/fixtures/github/api_v3_pulls.ts b/packages/pipeline/test/fixtures/github/api_v3_pulls.ts new file mode 100644 index 0000000000..f8935f9664 --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_pulls.ts @@ -0,0 +1,19 @@ +import { GithubPullRequest } from '../../../src/entities'; + +// To re-create the JSON file from the API (e.g. if the API output schema changes), run the below command: +// curl https://api.github.com/repos/0xProject/0x-monorepo/pulls?per_page=1&page=1 +// docs here: https://developer.github.com/v3/pulls/#list-pull-requests + +const ParsedGithubPullRequest: GithubPullRequest = { + observedTimestamp: Date.now(), + repoFullName: '0xProject/0x-monorepo', + pullRequestNumber: 1684, + state: 'open', + title: '[WIP] Pull Github data', + userLogin: 'askeluv', + createdAt: 1552019788000, + updatedAt: 1552019788000, + closedAt: null, + mergedAt: null, +}; +export { ParsedGithubPullRequest }; diff --git a/packages/pipeline/test/fixtures/github/api_v3_repo.json b/packages/pipeline/test/fixtures/github/api_v3_repo.json new file mode 100644 index 0000000000..66c6ba551a --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_repo.json @@ -0,0 +1,121 @@ +{ + "id": 92181371, + "node_id": "MDEwOlJlcG9zaXRvcnk5MjE4MTM3MQ==", + "name": "0x-monorepo", + "full_name": "0xProject/0x-monorepo", + "private": false, + "owner": { + "login": "0xProject", + "id": 24832717, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjI0ODMyNzE3", + "avatar_url": "https://avatars2.githubusercontent.com/u/24832717?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/0xProject", + "html_url": "https://github.com/0xProject", + "followers_url": "https://api.github.com/users/0xProject/followers", + "following_url": "https://api.github.com/users/0xProject/following{/other_user}", + "gists_url": "https://api.github.com/users/0xProject/gists{/gist_id}", + "starred_url": "https://api.github.com/users/0xProject/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/0xProject/subscriptions", + "organizations_url": "https://api.github.com/users/0xProject/orgs", + "repos_url": "https://api.github.com/users/0xProject/repos", + "events_url": "https://api.github.com/users/0xProject/events{/privacy}", + "received_events_url": "https://api.github.com/users/0xProject/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/0xProject/0x-monorepo", + "description": "0x protocol monorepo - includes our smart contracts and many developer tools", + "fork": false, + "url": "https://api.github.com/repos/0xProject/0x-monorepo", + "forks_url": "https://api.github.com/repos/0xProject/0x-monorepo/forks", + "keys_url": "https://api.github.com/repos/0xProject/0x-monorepo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/0xProject/0x-monorepo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/0xProject/0x-monorepo/teams", + "hooks_url": "https://api.github.com/repos/0xProject/0x-monorepo/hooks", + "issue_events_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/events{/number}", + "events_url": "https://api.github.com/repos/0xProject/0x-monorepo/events", + "assignees_url": "https://api.github.com/repos/0xProject/0x-monorepo/assignees{/user}", + "branches_url": "https://api.github.com/repos/0xProject/0x-monorepo/branches{/branch}", + "tags_url": "https://api.github.com/repos/0xProject/0x-monorepo/tags", + "blobs_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/0xProject/0x-monorepo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/0xProject/0x-monorepo/languages", + "stargazers_url": "https://api.github.com/repos/0xProject/0x-monorepo/stargazers", + "contributors_url": "https://api.github.com/repos/0xProject/0x-monorepo/contributors", + "subscribers_url": "https://api.github.com/repos/0xProject/0x-monorepo/subscribers", + "subscription_url": "https://api.github.com/repos/0xProject/0x-monorepo/subscription", + "commits_url": "https://api.github.com/repos/0xProject/0x-monorepo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/0xProject/0x-monorepo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/0xProject/0x-monorepo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/0xProject/0x-monorepo/contents/{+path}", + "compare_url": "https://api.github.com/repos/0xProject/0x-monorepo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/0xProject/0x-monorepo/merges", + "archive_url": "https://api.github.com/repos/0xProject/0x-monorepo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/0xProject/0x-monorepo/downloads", + "issues_url": "https://api.github.com/repos/0xProject/0x-monorepo/issues{/number}", + "pulls_url": "https://api.github.com/repos/0xProject/0x-monorepo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/0xProject/0x-monorepo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/0xProject/0x-monorepo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/0xProject/0x-monorepo/labels{/name}", + "releases_url": "https://api.github.com/repos/0xProject/0x-monorepo/releases{/id}", + "deployments_url": "https://api.github.com/repos/0xProject/0x-monorepo/deployments", + "created_at": "2017-05-23T14:17:33Z", + "updated_at": "2019-03-06T21:48:49Z", + "pushed_at": "2019-03-06T23:59:05Z", + "git_url": "git://github.com/0xProject/0x-monorepo.git", + "ssh_url": "git@github.com:0xProject/0x-monorepo.git", + "clone_url": "https://github.com/0xProject/0x-monorepo.git", + "svn_url": "https://github.com/0xProject/0x-monorepo", + "homepage": "", + "size": 86538, + "stargazers_count": 989, + "watchers_count": 989, + "language": "TypeScript", + "has_issues": true, + "has_projects": false, + "has_downloads": true, + "has_wiki": false, + "has_pages": false, + "forks_count": 294, + "mirror_url": null, + "archived": false, + "open_issues_count": 46, + "license": { + "key": "other", + "name": "Other", + "spdx_id": "NOASSERTION", + "url": null, + "node_id": "MDc6TGljZW5zZTA=" + }, + "forks": 294, + "open_issues": 46, + "watchers": 989, + "default_branch": "development", + "organization": { + "login": "0xProject", + "id": 24832717, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjI0ODMyNzE3", + "avatar_url": "https://avatars2.githubusercontent.com/u/24832717?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/0xProject", + "html_url": "https://github.com/0xProject", + "followers_url": "https://api.github.com/users/0xProject/followers", + "following_url": "https://api.github.com/users/0xProject/following{/other_user}", + "gists_url": "https://api.github.com/users/0xProject/gists{/gist_id}", + "starred_url": "https://api.github.com/users/0xProject/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/0xProject/subscriptions", + "organizations_url": "https://api.github.com/users/0xProject/orgs", + "repos_url": "https://api.github.com/users/0xProject/repos", + "events_url": "https://api.github.com/users/0xProject/events{/privacy}", + "received_events_url": "https://api.github.com/users/0xProject/received_events", + "type": "Organization", + "site_admin": false + }, + "network_count": 294, + "subscribers_count": 89 +} diff --git a/packages/pipeline/test/fixtures/github/api_v3_repo.ts b/packages/pipeline/test/fixtures/github/api_v3_repo.ts new file mode 100644 index 0000000000..0c17098801 --- /dev/null +++ b/packages/pipeline/test/fixtures/github/api_v3_repo.ts @@ -0,0 +1,21 @@ +import { GithubRepo } from '../../../src/entities'; + +// To re-create the JSON file from the API (e.g. if the API output schema changes), run the below command: +// curl https://api.github.com/repos/0xProject/0x-monorepo +// docs here: https://developer.github.com/v3/repos/#get + +const ParsedGithubRepo: GithubRepo = { + observedTimestamp: Date.now(), + fullName: '0xProject/0x-monorepo', + createdAt: 1495549053000, + updatedAt: 1551908929000, + pushedAt: 1551916745000, + size: 86538, + stargazers: 989, + watchers: 989, + forks: 294, + openIssues: 46, + network: 294, + subscribers: 89, +}; +export { ParsedGithubRepo }; diff --git a/packages/pipeline/test/parsers/github/github_forks_test.ts b/packages/pipeline/test/parsers/github/github_forks_test.ts new file mode 100644 index 0000000000..3622ad86b3 --- /dev/null +++ b/packages/pipeline/test/parsers/github/github_forks_test.ts @@ -0,0 +1,37 @@ +import * as chai from 'chai'; +import 'mocha'; + +import { GithubComparisonResponse, GithubForkResponse } from '../../../src/data_sources/github'; +import { enrichGithubForkWithComparisonDetails, parseGithubForks } from '../../../src/parsers/github'; + +import * as githubComparisonResponse from '../../fixtures/github/api_v3_compare.json'; +import { EnrichedGithubFork, ParsedGithubFork } from '../../fixtures/github/api_v3_forks'; +import * as githubForksResponse from '../../fixtures/github/api_v3_forks.json'; + +import { chaiSetup } from '../../utils/chai_setup'; + +chaiSetup.configure(); +const expect = chai.expect; + +// tslint:disable:custom-no-magic-numbers +describe('github_forks', () => { + describe('parseGithubForks', () => { + it('converts GithubForksResponse to GithubFork entities', () => { + const forksResponse: GithubForkResponse[] = githubForksResponse; + const expected = ParsedGithubFork; + const observedTimestamp = expected.observedTimestamp; + const actualList = parseGithubForks(forksResponse, observedTimestamp); + const actual = actualList[0]; + expect(actual).deep.equal(expected); + }); + }); + + describe('enrichGithubFork', () => { + it('enriches GithubFork with comparison details', () => { + const comparisonResponse: GithubComparisonResponse = githubComparisonResponse; + const expected = EnrichedGithubFork; + const actual = enrichGithubForkWithComparisonDetails(ParsedGithubFork, comparisonResponse); + expect(actual).deep.equal(expected); + }); + }); +}); diff --git a/packages/pipeline/test/parsers/github/github_issues_test.ts b/packages/pipeline/test/parsers/github/github_issues_test.ts new file mode 100644 index 0000000000..758c91411f --- /dev/null +++ b/packages/pipeline/test/parsers/github/github_issues_test.ts @@ -0,0 +1,27 @@ +import * as chai from 'chai'; +import 'mocha'; + +import { GithubIssueResponse } from '../../../src/data_sources/github'; +import { parseGithubIssues } from '../../../src/parsers/github'; +import { chaiSetup } from '../../utils/chai_setup'; + +import { ParsedGithubIssue } from '../../fixtures/github/api_v3_issues'; +import * as githubIssuesResponse from '../../fixtures/github/api_v3_issues.json'; + +chaiSetup.configure(); +const expect = chai.expect; + +// tslint:disable:custom-no-magic-numbers +describe('github_issues', () => { + describe('parseGithubIssues', () => { + it('converts GithubIssuesResponse to GithubIssue entities', () => { + const response: GithubIssueResponse[] = githubIssuesResponse; + const expected = ParsedGithubIssue; + const observedTimestamp = expected.observedTimestamp; + const repoFullName = '0xProject/0x-monorepo'; + const actualList = parseGithubIssues(response, observedTimestamp, repoFullName); + const actual = actualList[0]; + expect(actual).deep.equal(expected); + }); + }); +}); diff --git a/packages/pipeline/test/parsers/github/github_pulls_test.ts b/packages/pipeline/test/parsers/github/github_pulls_test.ts new file mode 100644 index 0000000000..398ea97f7c --- /dev/null +++ b/packages/pipeline/test/parsers/github/github_pulls_test.ts @@ -0,0 +1,26 @@ +import * as chai from 'chai'; +import 'mocha'; + +import { GithubPullRequestResponse } from '../../../src/data_sources/github'; +import { parseGithubPulls } from '../../../src/parsers/github'; +import { chaiSetup } from '../../utils/chai_setup'; + +import { ParsedGithubPullRequest } from '../../fixtures/github/api_v3_pulls'; +import * as githubPullsResponse from '../../fixtures/github/api_v3_pulls.json'; + +chaiSetup.configure(); +const expect = chai.expect; + +// tslint:disable:custom-no-magic-numbers +describe('github_pulls', () => { + describe('parseGithubPulls', () => { + it('converts GithubPullsResponse to GithubPullRequest entities', () => { + const response: GithubPullRequestResponse[] = githubPullsResponse; + const expected = ParsedGithubPullRequest; + const observedTimestamp = expected.observedTimestamp; + const actualList = parseGithubPulls(response, observedTimestamp); + const actual = actualList[0]; + expect(actual).deep.equal(expected); + }); + }); +}); diff --git a/packages/pipeline/test/parsers/github/github_repo_test.ts b/packages/pipeline/test/parsers/github/github_repo_test.ts new file mode 100644 index 0000000000..e3daa07126 --- /dev/null +++ b/packages/pipeline/test/parsers/github/github_repo_test.ts @@ -0,0 +1,25 @@ +import * as chai from 'chai'; +import 'mocha'; + +import { ParsedGithubRepo } from '../../fixtures/github/api_v3_repo'; +import * as githubRepoResponse from '../../fixtures/github/api_v3_repo.json'; + +import { GithubRepoResponse } from '../../../src/data_sources/github'; +import { parseGithubRepo } from '../../../src/parsers/github'; +import { chaiSetup } from '../../utils/chai_setup'; + +chaiSetup.configure(); +const expect = chai.expect; + +// tslint:disable:custom-no-magic-numbers +describe('github_repo', () => { + describe('parseGithubRepo', () => { + it('converts GithubRepoResponse to GithubRepo entities', () => { + const response: GithubRepoResponse = githubRepoResponse; + const expected = ParsedGithubRepo; + const observedTimestamp = expected.observedTimestamp; + const actual = parseGithubRepo(response, observedTimestamp); + expect(actual).deep.equal(expected); + }); + }); +}); diff --git a/packages/pipeline/test/utils/chai_setup.ts b/packages/pipeline/test/utils/chai_setup.ts index 1a87330932..632c456de4 100644 --- a/packages/pipeline/test/utils/chai_setup.ts +++ b/packages/pipeline/test/utils/chai_setup.ts @@ -9,5 +9,6 @@ export const chaiSetup = { chai.use(ChaiBigNumber()); chai.use(dirtyChai); chai.use(chaiAsPromised); + chai.config.truncateThreshold = 0; }, }; diff --git a/packages/pipeline/tsconfig.json b/packages/pipeline/tsconfig.json index 338a5ed0a5..247395be9d 100644 --- a/packages/pipeline/tsconfig.json +++ b/packages/pipeline/tsconfig.json @@ -15,6 +15,11 @@ "./test/fixtures/copper/api_v1_list_leads.json", "./test/fixtures/copper/api_v1_list_opportunities.json", "./test/fixtures/etherscan/api_v1_accounts_transactions.json", + "./test/fixtures/github/api_v3_compare.json", + "./test/fixtures/github/api_v3_forks.json", + "./test/fixtures/github/api_v3_issues.json", + "./test/fixtures/github/api_v3_pulls.json", + "./test/fixtures/github/api_v3_repo.json", "./test/fixtures/greenhouse/api_v1_applications.json" ] } diff --git a/packages/react-docs/CHANGELOG.json b/packages/react-docs/CHANGELOG.json index 12045b47c6..96622338ec 100644 --- a/packages/react-docs/CHANGELOG.json +++ b/packages/react-docs/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "2.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "2.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "2.0.7", diff --git a/packages/react-docs/CHANGELOG.md b/packages/react-docs/CHANGELOG.md index f00431ff59..1bde9f1cca 100644 --- a/packages/react-docs/CHANGELOG.md +++ b/packages/react-docs/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.9 - _March 21, 2019_ + + * Dependencies updated + +## v2.0.8 - _March 20, 2019_ + + * Dependencies updated + ## v2.0.7 - _March 1, 2019_ * Dependencies updated diff --git a/packages/react-docs/package.json b/packages/react-docs/package.json index b021f55b87..b2f748326f 100644 --- a/packages/react-docs/package.json +++ b/packages/react-docs/package.json @@ -1,6 +1,6 @@ { "name": "@0x/react-docs", - "version": "2.0.7", + "version": "2.0.9", "engines": { "node": ">=6.12" }, @@ -24,7 +24,7 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0x/dev-utils": "^2.1.3", + "@0x/dev-utils": "^2.2.0", "@0x/tslint-config": "^3.0.0", "@types/compare-versions": "^3.0.0", "@types/styled-components": "4.0.0", @@ -34,9 +34,9 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/react-shared": "^2.0.7", - "@0x/types": "^2.1.1", - "@0x/utils": "^4.2.2", + "@0x/react-shared": "^2.0.9", + "@0x/types": "^2.2.1", + "@0x/utils": "^4.3.0", "@types/lodash": "4.14.104", "@types/material-ui": "^0.20.0", "@types/node": "*", diff --git a/packages/react-shared/CHANGELOG.json b/packages/react-shared/CHANGELOG.json index 0a040d8dce..f129fab3b1 100644 --- a/packages/react-shared/CHANGELOG.json +++ b/packages/react-shared/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "2.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "2.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "2.0.7", diff --git a/packages/react-shared/CHANGELOG.md b/packages/react-shared/CHANGELOG.md index d9353b9480..ab883be997 100644 --- a/packages/react-shared/CHANGELOG.md +++ b/packages/react-shared/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.9 - _March 21, 2019_ + + * Dependencies updated + +## v2.0.8 - _March 20, 2019_ + + * Dependencies updated + ## v2.0.7 - _March 1, 2019_ * Dependencies updated diff --git a/packages/react-shared/package.json b/packages/react-shared/package.json index 41a4025772..b0c510ab5a 100644 --- a/packages/react-shared/package.json +++ b/packages/react-shared/package.json @@ -1,6 +1,6 @@ { "name": "@0x/react-shared", - "version": "2.0.7", + "version": "2.0.9", "engines": { "node": ">=6.12" }, @@ -25,7 +25,7 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0x/dev-utils": "^2.1.3", + "@0x/dev-utils": "^2.2.0", "@0x/tslint-config": "^3.0.0", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", @@ -33,7 +33,7 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^2.1.1", + "@0x/types": "^2.2.1", "@material-ui/core": "^3.0.1", "@types/is-mobile": "0.3.0", "@types/lodash": "4.14.104", diff --git a/packages/sol-compiler/CHANGELOG.json b/packages/sol-compiler/CHANGELOG.json index c52071e09b..f04f7f254a 100644 --- a/packages/sol-compiler/CHANGELOG.json +++ b/packages/sol-compiler/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "3.1.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "3.1.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "3.1.3", diff --git a/packages/sol-compiler/CHANGELOG.md b/packages/sol-compiler/CHANGELOG.md index e5a76e2e01..928498cdae 100644 --- a/packages/sol-compiler/CHANGELOG.md +++ b/packages/sol-compiler/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.5 - _March 21, 2019_ + + * Dependencies updated + +## v3.1.4 - _March 20, 2019_ + + * Dependencies updated + ## v3.1.3 - _March 1, 2019_ * Dependencies updated diff --git a/packages/sol-compiler/package.json b/packages/sol-compiler/package.json index a0d8cbcd04..0a49c25e55 100644 --- a/packages/sol-compiler/package.json +++ b/packages/sol-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-compiler", - "version": "3.1.3", + "version": "3.1.5", "engines": { "node": ">=6.12" }, @@ -42,7 +42,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-compiler/README.md", "devDependencies": { - "@0x/dev-utils": "^2.1.3", + "@0x/dev-utils": "^2.2.0", "@0x/tslint-config": "^3.0.0", "@types/chokidar": "^1.7.5", "@types/mkdirp": "^0.5.2", @@ -69,17 +69,17 @@ "zeppelin-solidity": "1.8.0" }, "dependencies": { - "@0x/assert": "^2.0.6", - "@0x/json-schemas": "^3.0.6", - "@0x/sol-resolver": "^2.0.4", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/assert": "^2.0.8", + "@0x/json-schemas": "^3.0.8", + "@0x/sol-resolver": "^2.0.6", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@types/yargs": "^11.0.0", "chalk": "^2.3.0", "chokidar": "^2.0.4", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11", "mkdirp": "^0.5.1", diff --git a/packages/sol-compiler/src/utils/constants.ts b/packages/sol-compiler/src/utils/constants.ts index 1e0520ed00..9dd54f14dd 100644 --- a/packages/sol-compiler/src/utils/constants.ts +++ b/packages/sol-compiler/src/utils/constants.ts @@ -6,6 +6,7 @@ export const constants = { LATEST_ARTIFACT_VERSION: '2.0.0', SOLC_BIN_DIR: path.join(__dirname, '..', '..', 'solc_bin'), SOLC_BIN_PATHS: { + '0.5.6': 'soljson-v0.5.6+commit.b259423e.js', '0.5.5': 'soljson-v0.5.5+commit.47a71e8f.js', '0.5.4': 'soljson-v0.5.4+commit.9549d8ff.js', '0.5.3': 'soljson-v0.5.3+commit.10d17f24.js', diff --git a/packages/sol-coverage/CHANGELOG.json b/packages/sol-coverage/CHANGELOG.json index 7b32c7b798..680c6af1b5 100644 --- a/packages/sol-coverage/CHANGELOG.json +++ b/packages/sol-coverage/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "3.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "3.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "3.0.0", "changes": [ diff --git a/packages/sol-coverage/CHANGELOG.md b/packages/sol-coverage/CHANGELOG.md index 4b413562a0..7063bb297b 100644 --- a/packages/sol-coverage/CHANGELOG.md +++ b/packages/sol-coverage/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.2 - _March 21, 2019_ + + * Dependencies updated + +## v3.0.1 - _March 20, 2019_ + + * Dependencies updated + ## v3.0.0 - _March 1, 2019_ * Change the interface to accept a configuration object instead of `isVerbose` (#1656) diff --git a/packages/sol-coverage/package.json b/packages/sol-coverage/package.json index 327b340390..17b979dd8e 100644 --- a/packages/sol-coverage/package.json +++ b/packages/sol-coverage/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-coverage", - "version": "3.0.0", + "version": "3.0.2", "engines": { "node": ">=6.12" }, @@ -29,11 +29,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-coverage/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^6.0.7", - "@0x/subproviders": "^4.0.2", - "@0x/typescript-typings": "^4.1.0", + "@0x/sol-tracing-utils": "^6.0.9", + "@0x/subproviders": "^4.0.4", + "@0x/typescript-typings": "^4.2.1", "@types/minimatch": "^3.0.3", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "lodash": "^4.17.11", "minimatch": "^3.0.4", "web3-provider-engine": "14.0.6" diff --git a/packages/sol-doc/CHANGELOG.json b/packages/sol-doc/CHANGELOG.json index 35dff4b396..51b985d04e 100644 --- a/packages/sol-doc/CHANGELOG.json +++ b/packages/sol-doc/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "2.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "2.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "2.0.7", diff --git a/packages/sol-doc/CHANGELOG.md b/packages/sol-doc/CHANGELOG.md index c5134c2a2c..bf9b45d804 100644 --- a/packages/sol-doc/CHANGELOG.md +++ b/packages/sol-doc/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.9 - _March 21, 2019_ + + * Dependencies updated + +## v2.0.8 - _March 20, 2019_ + + * Dependencies updated + ## v2.0.7 - _March 1, 2019_ * Dependencies updated diff --git a/packages/sol-doc/package.json b/packages/sol-doc/package.json index 50daf4f4ac..607c1e3972 100644 --- a/packages/sol-doc/package.json +++ b/packages/sol-doc/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-doc", - "version": "2.0.7", + "version": "2.0.9", "description": "Solidity documentation generator", "main": "lib/src/index.js", "types": "lib/src/index.d.js", @@ -25,10 +25,10 @@ "author": "F. Eugene Aumson", "license": "Apache-2.0", "dependencies": { - "@0x/sol-compiler": "^3.1.3", - "@0x/types": "^2.1.1", - "@0x/utils": "^4.2.2", - "ethereum-types": "^2.1.0", + "@0x/sol-compiler": "^3.1.5", + "@0x/types": "^2.2.1", + "@0x/utils": "^4.3.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11", "yargs": "^10.0.3" diff --git a/packages/sol-profiler/CHANGELOG.json b/packages/sol-profiler/CHANGELOG.json index bca92bb205..9ddf717579 100644 --- a/packages/sol-profiler/CHANGELOG.json +++ b/packages/sol-profiler/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "3.1.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "3.1.3", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "3.1.2", "changes": [ diff --git a/packages/sol-profiler/CHANGELOG.md b/packages/sol-profiler/CHANGELOG.md index 2823333d0f..20ffb28a69 100644 --- a/packages/sol-profiler/CHANGELOG.md +++ b/packages/sol-profiler/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.4 - _March 21, 2019_ + + * Dependencies updated + +## v3.1.3 - _March 20, 2019_ + + * Dependencies updated + ## v3.1.2 - _March 1, 2019_ * Bug fixes related to stack parameters parsing (#1663) diff --git a/packages/sol-profiler/package.json b/packages/sol-profiler/package.json index 1e7e3787a1..556d42cacb 100644 --- a/packages/sol-profiler/package.json +++ b/packages/sol-profiler/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-profiler", - "version": "3.1.2", + "version": "3.1.4", "engines": { "node": ">=6.12" }, @@ -29,11 +29,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-profiler/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^6.0.7", - "@0x/subproviders": "^4.0.2", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "ethereum-types": "^2.1.0", + "@0x/sol-tracing-utils": "^6.0.9", + "@0x/subproviders": "^4.0.4", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11", "web3-provider-engine": "14.0.6" diff --git a/packages/sol-resolver/CHANGELOG.json b/packages/sol-resolver/CHANGELOG.json index afe307da9f..ffaac2c451 100644 --- a/packages/sol-resolver/CHANGELOG.json +++ b/packages/sol-resolver/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "2.0.6", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "2.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551220833, "version": "2.0.4", diff --git a/packages/sol-resolver/CHANGELOG.md b/packages/sol-resolver/CHANGELOG.md index e76beb1c4a..54534253ff 100644 --- a/packages/sol-resolver/CHANGELOG.md +++ b/packages/sol-resolver/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.6 - _March 21, 2019_ + + * Dependencies updated + +## v2.0.5 - _March 20, 2019_ + + * Dependencies updated + ## v2.0.4 - _February 26, 2019_ * Dependencies updated diff --git a/packages/sol-resolver/package.json b/packages/sol-resolver/package.json index c06e1762f6..2b0cad70fd 100644 --- a/packages/sol-resolver/package.json +++ b/packages/sol-resolver/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-resolver", - "version": "2.0.4", + "version": "2.0.6", "engines": { "node": ">=6.12" }, @@ -30,8 +30,8 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", "lodash": "^4.17.11" }, "publishConfig": { diff --git a/packages/sol-trace/CHANGELOG.json b/packages/sol-trace/CHANGELOG.json index 51c85a6bc9..9f381d3d36 100644 --- a/packages/sol-trace/CHANGELOG.json +++ b/packages/sol-trace/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "2.0.10", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "2.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "2.0.8", diff --git a/packages/sol-trace/CHANGELOG.md b/packages/sol-trace/CHANGELOG.md index 4646da66b9..b7e81c7e66 100644 --- a/packages/sol-trace/CHANGELOG.md +++ b/packages/sol-trace/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.10 - _March 21, 2019_ + + * Dependencies updated + +## v2.0.9 - _March 20, 2019_ + + * Dependencies updated + ## v2.0.8 - _March 1, 2019_ * Dependencies updated diff --git a/packages/sol-trace/package.json b/packages/sol-trace/package.json index 0a721de9e7..b5b2e104ea 100644 --- a/packages/sol-trace/package.json +++ b/packages/sol-trace/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-trace", - "version": "2.0.8", + "version": "2.0.10", "engines": { "node": ">=6.12" }, @@ -29,11 +29,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-trace/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^6.0.7", - "@0x/subproviders": "^4.0.2", - "@0x/typescript-typings": "^4.1.0", + "@0x/sol-tracing-utils": "^6.0.9", + "@0x/subproviders": "^4.0.4", + "@0x/typescript-typings": "^4.2.1", "chalk": "^2.3.0", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.11", "loglevel": "^1.6.1", diff --git a/packages/sol-tracing-utils/CHANGELOG.json b/packages/sol-tracing-utils/CHANGELOG.json index 80a3a287a3..2cf2b0bed5 100644 --- a/packages/sol-tracing-utils/CHANGELOG.json +++ b/packages/sol-tracing-utils/CHANGELOG.json @@ -1,4 +1,23 @@ [ + { + "timestamp": 1553183790, + "version": "6.0.9", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "version": "6.0.8", + "changes": [ + { + "note": "Update solidity-parser-antlr to 0.4.2", + "pr": 1719 + } + ], + "timestamp": 1553091633 + }, { "version": "6.0.7", "changes": [ diff --git a/packages/sol-tracing-utils/CHANGELOG.md b/packages/sol-tracing-utils/CHANGELOG.md index 5bb0a59a6b..e5823c4bf7 100644 --- a/packages/sol-tracing-utils/CHANGELOG.md +++ b/packages/sol-tracing-utils/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.9 - _March 21, 2019_ + + * Dependencies updated + +## v6.0.8 - _March 20, 2019_ + + * Update solidity-parser-antlr to 0.4.2 (#1719) + ## v6.0.7 - _March 1, 2019_ * Fix a bug when `TruffleArtifactAdapter` wasn't correctly parsing solc config in pre-5.0 versions of Truffle (#1663) diff --git a/packages/sol-tracing-utils/package.json b/packages/sol-tracing-utils/package.json index f1793d6116..87f25d8f7e 100644 --- a/packages/sol-tracing-utils/package.json +++ b/packages/sol-tracing-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-tracing-utils", - "version": "6.0.7", + "version": "6.0.9", "engines": { "node": ">=6.12" }, @@ -42,16 +42,16 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-tracing-utils/README.md", "dependencies": { - "@0x/dev-utils": "^2.1.3", - "@0x/sol-compiler": "^3.1.3", - "@0x/sol-resolver": "^2.0.4", - "@0x/subproviders": "^4.0.2", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", - "@types/solidity-parser-antlr": "^0.2.0", + "@0x/dev-utils": "^2.2.0", + "@0x/sol-compiler": "^3.1.5", + "@0x/sol-resolver": "^2.0.6", + "@0x/subproviders": "^4.0.4", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", + "@types/solidity-parser-antlr": "^0.2.3", "chalk": "^2.3.0", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "glob": "^7.1.2", @@ -62,7 +62,7 @@ "rimraf": "^2.6.2", "semaphore-async-await": "^1.5.1", "solc": "^0.5.5", - "solidity-parser-antlr": "^0.2.12" + "solidity-parser-antlr": "^0.4.2" }, "devDependencies": { "@0x/tslint-config": "^3.0.0", diff --git a/packages/sol-tracing-utils/src/ast_visitor.ts b/packages/sol-tracing-utils/src/ast_visitor.ts index 27f19378bc..4187eb589a 100644 --- a/packages/sol-tracing-utils/src/ast_visitor.ts +++ b/packages/sol-tracing-utils/src/ast_visitor.ts @@ -73,15 +73,9 @@ export class ASTVisitor { public VariableDeclarationStatement(ast: Parser.VariableDeclarationStatement): void { this._visitStatement(ast); } - public Statement(ast: Parser.Statement): void { - this._visitStatement(ast); - } public WhileStatement(ast: Parser.WhileStatement): void { this._visitStatement(ast); } - public SimpleStatement(ast: Parser.SimpleStatement): void { - this._visitStatement(ast); - } public ThrowStatement(ast: Parser.ThrowStatement): void { this._visitStatement(ast); } @@ -108,9 +102,6 @@ export class ASTVisitor { public AssemblyBlock(ast: Parser.AssemblyBlock): void { this._visitStatement(ast); } - public AssemblyExpression(ast: Parser.AssemblyExpression): void { - this._visitStatement(ast); - } public AssemblyAssignment(ast: Parser.AssemblyAssignment): void { this._visitStatement(ast); } diff --git a/packages/sra-spec/CHANGELOG.json b/packages/sra-spec/CHANGELOG.json index 0ec77d9c73..e6f49c3bc6 100644 --- a/packages/sra-spec/CHANGELOG.json +++ b/packages/sra-spec/CHANGELOG.json @@ -1,4 +1,22 @@ [ + { + "timestamp": 1553183790, + "version": "2.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1553091633, + "version": "2.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1551479279, "version": "2.0.6", diff --git a/packages/sra-spec/CHANGELOG.md b/packages/sra-spec/CHANGELOG.md index b5f15f377f..0c4ec80f7d 100644 --- a/packages/sra-spec/CHANGELOG.md +++ b/packages/sra-spec/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.8 - _March 21, 2019_ + + * Dependencies updated + +## v2.0.7 - _March 20, 2019_ + + * Dependencies updated + ## v2.0.6 - _March 1, 2019_ * Dependencies updated diff --git a/packages/sra-spec/package.json b/packages/sra-spec/package.json index 19b5f7044d..afd5f3373c 100644 --- a/packages/sra-spec/package.json +++ b/packages/sra-spec/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sra-spec", - "version": "2.0.6", + "version": "2.0.8", "engines": { "node": ">=6.12" }, @@ -35,7 +35,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sra-spec/README.md", "dependencies": { - "@0x/json-schemas": "^3.0.6", + "@0x/json-schemas": "^3.0.8", "@loopback/openapi-v3-types": "^0.8.2" }, "devDependencies": { diff --git a/packages/subproviders/CHANGELOG.json b/packages/subproviders/CHANGELOG.json index cda828df83..3d265d164a 100644 --- a/packages/subproviders/CHANGELOG.json +++ b/packages/subproviders/CHANGELOG.json @@ -1,4 +1,23 @@ [ + { + "timestamp": 1553183790, + "version": "4.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "version": "4.0.3", + "changes": [ + { + "note": "Update ganache-core to 2.5.3", + "pr": 1707 + } + ], + "timestamp": 1553091633 + }, { "timestamp": 1551479279, "version": "4.0.2", diff --git a/packages/subproviders/CHANGELOG.md b/packages/subproviders/CHANGELOG.md index 990a82ba70..b6087c7498 100644 --- a/packages/subproviders/CHANGELOG.md +++ b/packages/subproviders/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.4 - _March 21, 2019_ + + * Dependencies updated + +## v4.0.3 - _March 20, 2019_ + + * Update ganache-core to 2.5.3 (#1707) + ## v4.0.2 - _March 1, 2019_ * Dependencies updated diff --git a/packages/subproviders/package.json b/packages/subproviders/package.json index 925fa66b52..acc19a975a 100644 --- a/packages/subproviders/package.json +++ b/packages/subproviders/package.json @@ -1,6 +1,6 @@ { "name": "@0x/subproviders", - "version": "4.0.2", + "version": "4.0.4", "engines": { "node": ">=6.12" }, @@ -29,11 +29,11 @@ } }, "dependencies": { - "@0x/assert": "^2.0.6", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/assert": "^2.0.8", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@ledgerhq/hw-app-eth": "^4.3.0", "@ledgerhq/hw-transport-u2f": "4.24.0", "@types/eth-lightwallet": "^3.0.0", @@ -42,10 +42,10 @@ "bip39": "^2.5.0", "bn.js": "^4.11.8", "eth-lightwallet": "^3.0.1", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-tx": "^1.3.5", "ethereumjs-util": "^5.1.1", - "ganache-core": "^2.3.3", + "ganache-core": "^2.5.3", "hdkey": "^0.7.1", "json-rpc-error": "2.0.0", "lodash": "^4.17.11", diff --git a/packages/subproviders/test/integration/ledger_subprovider_test.ts b/packages/subproviders/test/integration/ledger_subprovider_test.ts index b072e611bd..347a97380a 100644 --- a/packages/subproviders/test/integration/ledger_subprovider_test.ts +++ b/packages/subproviders/test/integration/ledger_subprovider_test.ts @@ -1,5 +1,5 @@ import { DoneCallback } from '@0x/types'; -import { promisify } from '@0x/utils'; +import { promisify, providerUtils } from '@0x/utils'; import Eth from '@ledgerhq/hw-app-eth'; // HACK: This dependency is optional and tslint skips optional dependencies // tslint:disable-next-line:no-implicit-dependencies @@ -86,11 +86,11 @@ describe('LedgerSubprovider', () => { ledgerProvider.addProvider(ledgerSubprovider); const httpProvider = new RPCSubprovider('http://localhost:8545'); ledgerProvider.addProvider(httpProvider); - ledgerProvider.start(); + providerUtils.startProviderEngine(ledgerProvider); defaultProvider = new Web3ProviderEngine(); defaultProvider.addProvider(httpProvider); - defaultProvider.start(); + providerUtils.startProviderEngine(defaultProvider); }); it('returns a list of accounts', (done: DoneCallback) => { const payload = { diff --git a/packages/subproviders/test/unit/eth_lightwallet_subprovider_test.ts b/packages/subproviders/test/unit/eth_lightwallet_subprovider_test.ts index 49698ce9e0..468a9725f4 100644 --- a/packages/subproviders/test/unit/eth_lightwallet_subprovider_test.ts +++ b/packages/subproviders/test/unit/eth_lightwallet_subprovider_test.ts @@ -1,3 +1,4 @@ +import { providerUtils } from '@0x/utils'; import * as chai from 'chai'; import * as lightwallet from 'eth-lightwallet'; import { JSONRPCResponsePayload } from 'ethereum-types'; @@ -88,7 +89,7 @@ describe('EthLightwalletSubprovider', () => { provider = new Web3ProviderEngine(); provider.addProvider(ethLightwalletSubprovider); provider.addProvider(ganacheSubprovider); - provider.start(); + providerUtils.startProviderEngine(provider); }); describe('success cases', () => { it('returns a list of accounts', (done: DoneCallback) => { diff --git a/packages/subproviders/test/unit/ledger_subprovider_test.ts b/packages/subproviders/test/unit/ledger_subprovider_test.ts index a1d146dbc0..062df4ee06 100644 --- a/packages/subproviders/test/unit/ledger_subprovider_test.ts +++ b/packages/subproviders/test/unit/ledger_subprovider_test.ts @@ -1,3 +1,4 @@ +import { providerUtils } from '@0x/utils'; import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; @@ -105,7 +106,7 @@ describe('LedgerSubprovider', () => { provider = new Web3ProviderEngine(); provider.addProvider(ledgerSubprovider); provider.addProvider(ganacheSubprovider); - provider.start(); + providerUtils.startProviderEngine(provider); }); describe('success cases', () => { it('returns a list of accounts', (done: DoneCallback) => { diff --git a/packages/subproviders/test/unit/mnemonic_wallet_subprovider_test.ts b/packages/subproviders/test/unit/mnemonic_wallet_subprovider_test.ts index 61dcbf6da1..151addd23b 100644 --- a/packages/subproviders/test/unit/mnemonic_wallet_subprovider_test.ts +++ b/packages/subproviders/test/unit/mnemonic_wallet_subprovider_test.ts @@ -1,3 +1,4 @@ +import { providerUtils } from '@0x/utils'; import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; @@ -77,7 +78,7 @@ describe('MnemonicWalletSubprovider', () => { provider.addProvider(subprovider); const ganacheSubprovider = new GanacheSubprovider({}); provider.addProvider(ganacheSubprovider); - provider.start(); + providerUtils.startProviderEngine(provider); }); describe('success cases', () => { it('returns a list of accounts', (done: DoneCallback) => { diff --git a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts index a5cef30dc3..25566ebc06 100644 --- a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts +++ b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts @@ -1,7 +1,7 @@ import * as chai from 'chai'; import FixtureSubprovider = require('web3-provider-engine/subproviders/fixture'); -import { promisify } from '@0x/utils'; +import { promisify, providerUtils } from '@0x/utils'; import EthereumTx = require('ethereumjs-tx'); import { NonceTrackerSubprovider, Web3ProviderEngine } from '../../src'; @@ -56,7 +56,7 @@ describe('NonceTrackerSubprovider', () => { const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); provider.addProvider(createFixtureSubprovider()); - provider.start(); + providerUtils.startProviderEngine(provider); const payload = { ...getTransactionCountPayload, params: ['0x0', 'pending'] }; @@ -70,7 +70,7 @@ describe('NonceTrackerSubprovider', () => { const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); provider.addProvider(createFixtureSubprovider()); - provider.start(); + providerUtils.startProviderEngine(provider); const payload = { ...getTransactionCountPayload, params: ['0x0', 'latest'] }; @@ -91,7 +91,7 @@ describe('NonceTrackerSubprovider', () => { }, }), ); - provider.start(); + providerUtils.startProviderEngine(provider); const noncePayload = { ...getTransactionCountPayload, @@ -126,7 +126,7 @@ describe('NonceTrackerSubprovider', () => { }, }), ); - provider.start(); + providerUtils.startProviderEngine(provider); const noncePayload = { ...getTransactionCountPayload, diff --git a/packages/subproviders/test/unit/private_key_wallet_subprovider_test.ts b/packages/subproviders/test/unit/private_key_wallet_subprovider_test.ts index 4cd70e5edc..2bb45e48bc 100644 --- a/packages/subproviders/test/unit/private_key_wallet_subprovider_test.ts +++ b/packages/subproviders/test/unit/private_key_wallet_subprovider_test.ts @@ -1,3 +1,4 @@ +import { providerUtils } from '@0x/utils'; import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; @@ -48,7 +49,7 @@ describe('PrivateKeyWalletSubprovider', () => { provider.addProvider(subprovider); const ganacheSubprovider = new GanacheSubprovider({}); provider.addProvider(ganacheSubprovider); - provider.start(); + providerUtils.startProviderEngine(provider); }); describe('success cases', () => { it('returns a list of accounts', (done: DoneCallback) => { diff --git a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts index fb4e43f9e3..caeed14d6f 100644 --- a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts +++ b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts @@ -1,4 +1,5 @@ import { DoneCallback } from '@0x/types'; +import { providerUtils } from '@0x/utils'; import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as Sinon from 'sinon'; @@ -20,7 +21,7 @@ describe('RedundantSubprovider', () => { const subproviders = [ganacheSubprovider]; const redundantSubprovider = new RedundantSubprovider(subproviders); provider.addProvider(redundantSubprovider); - provider.start(); + providerUtils.startProviderEngine(provider); const payload = { jsonrpc: '2.0', @@ -44,7 +45,7 @@ describe('RedundantSubprovider', () => { const subproviders = [nonExistentSubprovider as Subprovider, ganacheSubprovider]; const redundantSubprovider = new RedundantSubprovider(subproviders); provider.addProvider(redundantSubprovider); - provider.start(); + providerUtils.startProviderEngine(provider); const payload = { jsonrpc: '2.0', diff --git a/packages/testnet-faucets/package.json b/packages/testnet-faucets/package.json index 2fa2b50574..c31ec834ea 100644 --- a/packages/testnet-faucets/package.json +++ b/packages/testnet-faucets/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@0x/testnet-faucets", - "version": "1.0.73", + "version": "1.0.75", "engines": { "node": ">=6.12" }, @@ -18,13 +18,13 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^6.0.3", - "@0x/subproviders": "^4.0.2", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "0x.js": "^6.0.5", + "@0x/subproviders": "^4.0.4", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "body-parser": "^1.17.1", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-tx": "^1.3.5", "ethereumjs-util": "^5.1.1", "express": "^4.15.2", diff --git a/packages/types/CHANGELOG.json b/packages/types/CHANGELOG.json index daa51e24ca..298c0bdcc5 100644 --- a/packages/types/CHANGELOG.json +++ b/packages/types/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1553183790, + "version": "2.2.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "2.2.0", "changes": [ @@ -17,8 +26,13 @@ { "note": "Add `RevertReason.SignatureInvalid` thrown by Coordinator", "pr": 1705 + }, + { + "note": "Add `RevertReason.InvalidFreeMemoryPtr` thrown by LibAddressArray", + "pr": 1712 } - ] + ], + "timestamp": 1553091633 }, { "timestamp": 1551220833, diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 519bc98a30..670684a746 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.2.1 - _March 21, 2019_ + + * Dependencies updated + +## v2.2.0 - _March 20, 2019_ + + * Added ERC1155 revert reasons (#1657) + * Added `ERC1155AssetData`, `ERC1155AssetDataNoProxyId`, and `ERC1155AssetDataAbi` (#1661) + * Add `InvalidOrigin` revert reason (#1668) + * Add `RevertReason.SignatureInvalid` thrown by Coordinator (#1705) + * Add `RevertReason.InvalidFreeMemoryPtr` thrown by LibAddressArray (#1712) + ## v2.1.1 - _February 26, 2019_ * Dependencies updated diff --git a/packages/types/package.json b/packages/types/package.json index 2db58d094c..8542ac208c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@0x/types", - "version": "2.1.1", + "version": "2.2.1", "engines": { "node": ">=6.12" }, @@ -32,7 +32,7 @@ "dependencies": { "@types/node": "*", "bignumber.js": "~8.0.2", - "ethereum-types": "^2.1.0" + "ethereum-types": "^2.1.1" }, "publishConfig": { "access": "public" diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index f694575f6c..b440490d20 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -163,7 +163,7 @@ export enum AssetProxyId { ERC20 = '0xf47261b0', ERC721 = '0x02571792', MultiAsset = '0x94cfcdd7', - ERC1155 = '0x9645780d', + ERC1155 = '0xa7cb5fb7', } export interface ERC20AssetData { @@ -283,6 +283,8 @@ export enum RevertReason { TxFullyConfirmed = 'TX_FULLY_CONFIRMED', TxNotFullyConfirmed = 'TX_NOT_FULLY_CONFIRMED', TimeLockIncomplete = 'TIME_LOCK_INCOMPLETE', + // LibAddressArray + InvalidFreeMemoryPtr = 'INVALID_FREE_MEMORY_PTR', // DutchAuction AuctionInvalidAmount = 'INVALID_AMOUNT', AuctionExpired = 'AUCTION_EXPIRED', diff --git a/packages/typescript-typings/CHANGELOG.json b/packages/typescript-typings/CHANGELOG.json index 1f6372aab5..657041d2b3 100644 --- a/packages/typescript-typings/CHANGELOG.json +++ b/packages/typescript-typings/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1553183790, + "version": "4.2.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "4.2.0", "changes": [ @@ -6,7 +15,8 @@ "note": "Add optional types to optimizer settings", "pr": 1682 } - ] + ], + "timestamp": 1553091633 }, { "version": "4.1.0", diff --git a/packages/typescript-typings/CHANGELOG.md b/packages/typescript-typings/CHANGELOG.md index 001fee2c12..3aeeffaad3 100644 --- a/packages/typescript-typings/CHANGELOG.md +++ b/packages/typescript-typings/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.2.1 - _March 21, 2019_ + + * Dependencies updated + +## v4.2.0 - _March 20, 2019_ + + * Add optional types to optimizer settings (#1682) + ## v4.1.0 - _February 25, 2019_ * Add back custom web3-provider-engine type definitions (#1627) diff --git a/packages/typescript-typings/package.json b/packages/typescript-typings/package.json index f5b9525339..bd8cee1cd0 100644 --- a/packages/typescript-typings/package.json +++ b/packages/typescript-typings/package.json @@ -1,6 +1,6 @@ { "name": "@0x/typescript-typings", - "version": "4.1.0", + "version": "4.2.1", "engines": { "node": ">=6.12" }, @@ -27,7 +27,7 @@ "@types/bn.js": "^4.11.0", "@types/react": "*", "bignumber.js": "~8.0.2", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "popper.js": "1.14.3" }, "devDependencies": { diff --git a/packages/typescript-typings/types/ganache-core/index.d.ts b/packages/typescript-typings/types/ganache-core/index.d.ts index 172f634117..8eeb05b607 100644 --- a/packages/typescript-typings/types/ganache-core/index.d.ts +++ b/packages/typescript-typings/types/ganache-core/index.d.ts @@ -1,5 +1,5 @@ declare module 'ganache-core' { - const GanacheProvider = require('ethereum-types').GanacheProvider; + import EthereumTypes = require('ethereum-types'); export interface GanacheOpts { verbose?: boolean; logger?: { @@ -13,5 +13,5 @@ declare module 'ganache-core' { vmErrorsOnRPCResponse?: boolean; db_path?: string; } - export function provider(opts: GanacheOpts): GanacheProvider; + export function provider(opts: GanacheOpts): EthereumTypes.Provider; } diff --git a/packages/utils/CHANGELOG.json b/packages/utils/CHANGELOG.json index b81728b822..003246910e 100644 --- a/packages/utils/CHANGELOG.json +++ b/packages/utils/CHANGELOG.json @@ -1,4 +1,23 @@ [ + { + "version": "4.3.0", + "changes": [ + { + "note": "Added `startProviderEngine` to `providerUtils`. Preventing excess block polling", + "pr": 1695 + } + ], + "timestamp": 1553183790 + }, + { + "timestamp": 1553091633, + "version": "4.2.3", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "4.2.2", "changes": [ diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 33aaa324a6..23d18de605 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.3.0 - _March 21, 2019_ + + * Added `startProviderEngine` to `providerUtils`. Preventing excess block polling (#1695) + +## v4.2.3 - _March 20, 2019_ + + * Dependencies updated + ## v4.2.2 - _March 1, 2019_ * Fix issue where process is not defined in browser context (#1660) diff --git a/packages/utils/package.json b/packages/utils/package.json index 8fbb2202d0..6540a50e8f 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/utils", - "version": "4.2.2", + "version": "4.3.0", "engines": { "node": ">=6.12" }, @@ -44,14 +44,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", "@types/node": "*", "abortcontroller-polyfill": "^1.1.9", "bignumber.js": "~8.0.2", "chalk": "^2.3.0", "detect-node": "2.0.3", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "isomorphic-fetch": "2.2.1", diff --git a/packages/utils/src/provider_utils.ts b/packages/utils/src/provider_utils.ts index 19ef0725e7..a7b82fbdf9 100644 --- a/packages/utils/src/provider_utils.ts +++ b/packages/utils/src/provider_utils.ts @@ -8,6 +8,21 @@ import { import * as _ from 'lodash'; export const providerUtils = { + /** + * Starts the Web3ProviderEngine without excess block polling + * @param providerEngine The Web3ProviderEngine + */ + startProviderEngine(providerEngine: any): void { + if (providerEngine.start === undefined) { + throw new Error(`Invalid Web3ProviderEngine`); + } + // HACK: When calling start() Web3ProviderEngine starts a block polling service + // this continuously pulls data from the network and can result in high data usage + // for long running services. If used in a front end application this can cause + // a high amount of load on a node (one request per user per block). + providerEngine._ready.go(); + providerEngine._running = true; + }, /** * Standardize the supported provider types into our internal provider interface * or throw if unsupported provider supplied. diff --git a/packages/web3-wrapper/CHANGELOG.json b/packages/web3-wrapper/CHANGELOG.json index 6f92903073..2e8251b823 100644 --- a/packages/web3-wrapper/CHANGELOG.json +++ b/packages/web3-wrapper/CHANGELOG.json @@ -1,4 +1,23 @@ [ + { + "timestamp": 1553183790, + "version": "6.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "version": "6.0.3", + "changes": [ + { + "note": "Update ganache-core to 2.5.3", + "pr": 1707 + } + ], + "timestamp": 1553091633 + }, { "timestamp": 1551479279, "version": "6.0.2", diff --git a/packages/web3-wrapper/CHANGELOG.md b/packages/web3-wrapper/CHANGELOG.md index 8f0478c35a..7d673f633f 100644 --- a/packages/web3-wrapper/CHANGELOG.md +++ b/packages/web3-wrapper/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.4 - _March 21, 2019_ + + * Dependencies updated + +## v6.0.3 - _March 20, 2019_ + + * Update ganache-core to 2.5.3 (#1707) + ## v6.0.2 - _March 1, 2019_ * Dependencies updated diff --git a/packages/web3-wrapper/package.json b/packages/web3-wrapper/package.json index 21ed0f28f2..c6c79a30ae 100644 --- a/packages/web3-wrapper/package.json +++ b/packages/web3-wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@0x/web3-wrapper", - "version": "6.0.2", + "version": "6.0.4", "engines": { "node": ">=6.12" }, @@ -42,7 +42,7 @@ "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", "dirty-chai": "^2.0.1", - "ganache-core": "^2.3.3", + "ganache-core": "^2.5.3", "make-promises-safe": "^1.1.0", "mocha": "^4.1.0", "npm-run-all": "^4.1.2", @@ -53,11 +53,11 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/assert": "^2.0.6", - "@0x/json-schemas": "^3.0.6", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "ethereum-types": "^2.1.0", + "@0x/assert": "^2.0.8", + "@0x/json-schemas": "^3.0.8", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "lodash": "^4.17.11" diff --git a/packages/web3-wrapper/test/web3_wrapper_test.ts b/packages/web3-wrapper/test/web3_wrapper_test.ts index c4ee91d3dc..54f77d75b6 100644 --- a/packages/web3-wrapper/test/web3_wrapper_test.ts +++ b/packages/web3-wrapper/test/web3_wrapper_test.ts @@ -35,7 +35,7 @@ describe('Web3Wrapper tests', () => { describe('#getNodeVersionAsync', () => { it('gets the node version', async () => { const nodeVersion = await web3Wrapper.getNodeVersionAsync(); - const NODE_VERSION = 'EthereumJS TestRPC/v2.3.3/ethereum-js'; + const NODE_VERSION = 'EthereumJS TestRPC/v2.5.3/ethereum-js'; expect(nodeVersion).to.be.equal(NODE_VERSION); }); }); diff --git a/packages/website/md/docs/sol_coverage/usage.md b/packages/website/md/docs/sol_coverage/usage.md index 89cee45122..202bb1aad8 100644 --- a/packages/website/md/docs/sol_coverage/usage.md +++ b/packages/website/md/docs/sol_coverage/usage.md @@ -8,10 +8,10 @@ In order to use `CoverageSubprovider` with your favorite framework you need to p ### Sol-compiler -If you are generating your artifacts with [@0x/sol-compiler](https://0x.org/docs/sol-compiler) you can use the `SolCompilerArtifactsAdapter` we've implemented for you. +If you are generating your artifacts with [@0x/sol-compiler](https://0x.org/docs/sol-compiler) you can use the `SolCompilerArtifactAdapter` we've implemented for you. ```typescript -import { SolCompilerArtifactsAdapter } from '@0x/sol-coverage'; +import { SolCompilerArtifactAdapter } from '@0x/sol-coverage'; // Both artifactsDir and contractsDir are optional and will be fetched from compiler.json if not passed in const artifactAdapter = new SolCompilerArtifactAdapter(artifactsDir, contractsDir); ``` diff --git a/packages/website/md/docs/sol_profiler/usage.md b/packages/website/md/docs/sol_profiler/usage.md index 0fbc31bc10..51e0b7bb73 100644 --- a/packages/website/md/docs/sol_profiler/usage.md +++ b/packages/website/md/docs/sol_profiler/usage.md @@ -8,10 +8,10 @@ In order to use `ProfilerSubprovider` with your favorite framework you need to p ### Sol-compiler -If you are generating your artifacts with [@0x/sol-compiler](https://0x.org/docs/sol-compiler) you can use the `SolCompilerArtifactsAdapter` we've implemented for you. +If you are generating your artifacts with [@0x/sol-compiler](https://0x.org/docs/sol-compiler) you can use the `SolCompilerArtifactAdapter` we've implemented for you. ```typescript -import { SolCompilerArtifactsAdapter } from '@0x/sol-profiler'; +import { SolCompilerArtifactAdapter } from '@0x/sol-profiler'; // Both artifactsDir and contractsDir are optional and will be fetched from compiler.json if not passed in const artifactAdapter = new SolCompilerArtifactAdapter(artifactsDir, contractsDir); ``` diff --git a/packages/website/md/docs/sol_trace/usage.md b/packages/website/md/docs/sol_trace/usage.md index d117a0faf1..0afe8c653d 100644 --- a/packages/website/md/docs/sol_trace/usage.md +++ b/packages/website/md/docs/sol_trace/usage.md @@ -8,10 +8,10 @@ In order to use `RevertTraceSubprovider` with your favorite framework you need t ### Sol-compiler -If you are generating your artifacts with [@0x/sol-compiler](https://0x.org/docs/sol-compiler) you can use the `SolCompilerArtifactsAdapter` we've implemented for you. +If you are generating your artifacts with [@0x/sol-compiler](https://0x.org/docs/sol-compiler) you can use the `SolCompilerArtifactAdapter` we've implemented for you. ```typescript -import { SolCompilerArtifactsAdapter } from '@0x/sol-trace'; +import { SolCompilerArtifactAdapter } from '@0x/sol-trace'; // Both artifactsDir and contractsDir are optional and will be fetched from compiler.json if not passed in const artifactAdapter = new SolCompilerArtifactAdapter(artifactsDir, contractsDir); ``` diff --git a/packages/website/package.json b/packages/website/package.json index 45b8428d8d..4cb38416dc 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "@0x/website", - "version": "0.0.76", + "version": "0.0.78", "engines": { "node": ">=6.12" }, @@ -20,18 +20,18 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "@0x/asset-buyer": "^6.0.3", - "@0x/contract-addresses": "^2.2.2", - "@0x/contract-wrappers": "^8.0.3", - "@0x/json-schemas": "^3.0.6", - "@0x/order-utils": "^7.0.2", - "@0x/react-docs": "^2.0.7", - "@0x/react-shared": "^2.0.7", - "@0x/subproviders": "^4.0.2", - "@0x/types": "^2.1.1", - "@0x/typescript-typings": "^4.1.0", - "@0x/utils": "^4.2.2", - "@0x/web3-wrapper": "^6.0.2", + "@0x/asset-buyer": "^6.0.5", + "@0x/contract-addresses": "^2.3.0", + "@0x/contract-wrappers": "^8.0.5", + "@0x/json-schemas": "^3.0.8", + "@0x/order-utils": "^7.1.1", + "@0x/react-docs": "^2.0.9", + "@0x/react-shared": "^2.0.9", + "@0x/subproviders": "^4.0.4", + "@0x/types": "^2.2.1", + "@0x/typescript-typings": "^4.2.1", + "@0x/utils": "^4.3.0", + "@0x/web3-wrapper": "^6.0.4", "@reach/dialog": "^0.1.2", "@types/react-lazyload": "^2.3.1", "@types/react-loadable": "^5.4.2", @@ -42,7 +42,7 @@ "blockies": "^0.0.2", "bowser": "^1.9.4", "deep-equal": "^1.0.1", - "ethereum-types": "^2.1.0", + "ethereum-types": "^2.1.1", "ethereumjs-util": "^5.1.1", "find-versions": "^2.0.0", "jsonschema": "^1.2.0", diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts index f20b11a51d..e5eba7d2d1 100644 --- a/packages/website/ts/blockchain.ts +++ b/packages/website/ts/blockchain.ts @@ -61,7 +61,6 @@ import { errorReporter } from 'ts/utils/error_reporter'; import { fakeTokenRegistry } from 'ts/utils/fake_token_registry'; import { tokenAddressOverrides } from 'ts/utils/token_address_overrides'; import { utils } from 'ts/utils/utils'; -import FilterSubprovider from 'web3-provider-engine/subproviders/filters'; import MintableArtifacts from '../contracts/Mintable.json'; @@ -120,12 +119,11 @@ export class Blockchain { }; const ledgerSubprovider = new LedgerSubprovider(ledgerWalletConfigs); provider.addProvider(ledgerSubprovider); - provider.addProvider(new FilterSubprovider()); const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkIdIfExists], publicNodeUrl => { return new RPCSubprovider(publicNodeUrl); }); provider.addProvider(new RedundantSubprovider(rpcSubproviders)); - provider.start(); + providerUtils.startProviderEngine(provider); return [provider, ledgerSubprovider]; } else if (doesInjectedProviderExist && isPublicNodeAvailableForNetworkId) { // We catch all requests involving a users account and send it to the injectedWeb3 @@ -138,12 +136,11 @@ export class Blockchain { ? new MetamaskSubprovider(injectedProviderIfExists) : new SignerSubprovider(injectedProviderIfExists); provider.addProvider(signerSubprovider); - provider.addProvider(new FilterSubprovider()); const rpcSubproviders = _.map(publicNodeUrlsIfExistsForNetworkId, publicNodeUrl => { return new RPCSubprovider(publicNodeUrl); }); provider.addProvider(new RedundantSubprovider(rpcSubproviders)); - provider.start(); + providerUtils.startProviderEngine(provider); return [provider, undefined]; } else if (doesInjectedProviderExist) { // Since no public node for this network, all requests go to injectedWeb3 instance @@ -153,13 +150,12 @@ export class Blockchain { // We do this so that users can still browse the 0x Portal DApp even if they do not have web3 // injected into their browser. const provider = new Web3ProviderEngine(); - provider.addProvider(new FilterSubprovider()); const networkId = constants.NETWORK_ID_MAINNET; const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkId], publicNodeUrl => { return new RPCSubprovider(publicNodeUrl); }); provider.addProvider(new RedundantSubprovider(rpcSubproviders)); - provider.start(); + providerUtils.startProviderEngine(provider); return [provider, undefined]; } } diff --git a/packages/website/ts/pages/about/team.tsx b/packages/website/ts/pages/about/team.tsx index c7995fc954..371e947371 100644 --- a/packages/website/ts/pages/about/team.tsx +++ b/packages/website/ts/pages/about/team.tsx @@ -168,7 +168,6 @@ const team: TeamMember[] = [ name: 'Lawrence Forman', title: 'engineer', }, - ]; const advisors: TeamMember[] = [ diff --git a/python-packages/cmd_pkgs_in_dep_order.py b/python-packages/cmd_pkgs_in_dep_order.py index ec739adc05..dbc0814846 100755 --- a/python-packages/cmd_pkgs_in_dep_order.py +++ b/python-packages/cmd_pkgs_in_dep_order.py @@ -12,10 +12,11 @@ PACKAGE_DEPENDENCY_LIST = [ # independent first) in order for them to resolve properly. "contract_addresses", "contract_artifacts", + "contract_wrappers", "json_schemas", "sra_client", "order_utils", - "contract_demo" + "middlewares", ] for package in PACKAGE_DEPENDENCY_LIST: diff --git a/python-packages/contract_addresses/src/zero_ex/contract_addresses/__init__.py b/python-packages/contract_addresses/src/zero_ex/contract_addresses/__init__.py index aa298b20ff..225a0d18a5 100644 --- a/python-packages/contract_addresses/src/zero_ex/contract_addresses/__init__.py +++ b/python-packages/contract_addresses/src/zero_ex/contract_addresses/__init__.py @@ -15,6 +15,8 @@ class ContractAddresses(NamedTuple): # noqa asset_proxy_owner: str forwarder: str order_validator: str + coordinator_registry: str + coordinator: str class NetworkId(Enum): @@ -41,6 +43,8 @@ NETWORK_TO_ADDRESSES: Dict[NetworkId, ContractAddresses] = { asset_proxy_owner="0x17992e4ffb22730138e4b62aaa6367fa9d3699a6", forwarder="0x5468a1dc173652ee28d249c271fa9933144746b1", order_validator="0x9463e518dea6810309563c81d5266c1b1d149138", + coordinator_registry="0x45797531b873fd5e519477a070a955764c1a5b07", + coordinator="0x24675738816c87ad37e712cc24f309a0c906187f", ), NetworkId.ROPSTEN: ContractAddresses( erc20_proxy="0xb1408f4c245a23c31b98d2c626777d4c0d766caa", @@ -51,6 +55,8 @@ NETWORK_TO_ADDRESSES: Dict[NetworkId, ContractAddresses] = { asset_proxy_owner="0xf5fa5b5fed2727a0e44ac67f6772e97977aa358b", forwarder="0x2240dab907db71e64d3e0dba4800c83b5c502d4e", order_validator="0x90431a90516ab49af23a0530e04e8c7836e7122f", + coordinator_registry="0x403cc23e88c17c4652fb904784d1af640a6722d9", + coordinator="0xc442300dcb4df1ff1db0173e77556dc559de6006", ), NetworkId.RINKEBY: ContractAddresses( exchange="0xbce0b5f6eb618c565c3e5f5cd69652bbc279f44e", @@ -61,6 +67,8 @@ NETWORK_TO_ADDRESSES: Dict[NetworkId, ContractAddresses] = { asset_proxy_owner="0xe1703da878afcebff5b7624a826902af475b9c03", forwarder="0x2d40589abbdee84961f3a7656b9af7adb0ee5ab4", order_validator="0x0c5173a51e26b29d6126c686756fb9fbef71f762", + coordinator_registry="0x1084b6a398e47907bae43fec3ff4b677db6e4fee", + coordinator="0xc05e6c01b83eeedecac2f7bab9367da4d4c108df", ), NetworkId.KOVAN: ContractAddresses( erc20_proxy="0xf1ec01d6236d3cd881a0bf0130ea25fe4234003e", @@ -71,6 +79,8 @@ NETWORK_TO_ADDRESSES: Dict[NetworkId, ContractAddresses] = { asset_proxy_owner="0x2c824d2882baa668e0d5202b1e7f2922278703f8", forwarder="0x17992e4ffb22730138e4b62aaa6367fa9d3699a6", order_validator="0xb389da3d204b412df2f75c6afb3d0a7ce0bc283d", + coordinator_registry="0x09fb99968c016a3ff537bf58fb3d9fe55a7975d5", + coordinator="0x04b2b090bad68b254881d7eb645a258ce66cc998", ), NetworkId.GANACHE: ContractAddresses( exchange="0x48bacb9266a570d521063ef5dd96e61686dbe788", @@ -81,6 +91,8 @@ NETWORK_TO_ADDRESSES: Dict[NetworkId, ContractAddresses] = { asset_proxy_owner="0x34d402f14d58e001d8efbe6585051bf9706aa064", forwarder="0x6000eca38b8b5bba64986182fe2a69c57f6b5414", order_validator="0x32eecaf51dfea9618e9bc94e9fbfddb1bbdcba15", + coordinator_registry="0xaa86dda78e9434aca114b6676fc742a18d15a1cc", + coordinator="0x4d3d5c850dd5bd9d6f4adda3dd039a3c8054ca29", ), } """A mapping from instances of NetworkId to instances of ContractAddresses. diff --git a/python-packages/contract_artifacts/Coordinator.json b/python-packages/contract_artifacts/Coordinator.json new file mode 100644 index 0000000000..d61c9db2f4 --- /dev/null +++ b/python-packages/contract_artifacts/Coordinator.json @@ -0,0 +1,364 @@ +{ + "schemaVersion": "2.0.0", + "contractName": "Coordinator", + "compilerOutput": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "hash", + "type": "bytes32" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "getSignerAddress", + "outputs": [ + { + "name": "signerAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "assertValidCoordinatorApprovals", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "EIP712_DOMAIN_HASH", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "components": [ + { + "name": "makerAddress", + "type": "address" + }, + { + "name": "takerAddress", + "type": "address" + }, + { + "name": "feeRecipientAddress", + "type": "address" + }, + { + "name": "senderAddress", + "type": "address" + }, + { + "name": "makerAssetAmount", + "type": "uint256" + }, + { + "name": "takerAssetAmount", + "type": "uint256" + }, + { + "name": "makerFee", + "type": "uint256" + }, + { + "name": "takerFee", + "type": "uint256" + }, + { + "name": "expirationTimeSeconds", + "type": "uint256" + }, + { + "name": "salt", + "type": "uint256" + }, + { + "name": "makerAssetData", + "type": "bytes" + }, + { + "name": "takerAssetData", + "type": "bytes" + } + ], + "name": "orders", + "type": "tuple[]" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "assertValidTransactionOrdersApproval", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_exchange", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "0x60806040523480156200001157600080fd5b506040516020806200238083398101806040526200003391908101906200022b565b604080517f454950373132446f6d61696e28000000000000000000000000000000000000006020808301919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8301527f737472696e672076657273696f6e2c000000000000000000000000000000000060398301527f6164647265737320766572696679696e67436f6e74726163740000000000000060488301527f29000000000000000000000000000000000000000000000000000000000000006061830152825180830360420181526062830180855281519183019190912060a28401855260179091527f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000060829093019290925282518084018452600581527f312e302e30000000000000000000000000000000000000000000000000000000908201528251808201929092527f626d101e477fd17dd52afb3f9ad9eb016bf60f6e377877f34e8f3ea84c930236828401527f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c6060830152306080808401919091528351808403909101815260a0909201909252805191012060005560018054600160a060020a031916600160a060020a039290921691909117905562000273565b600062000224825162000260565b9392505050565b6000602082840312156200023e57600080fd5b60006200024c848462000216565b949350505050565b600160a060020a031690565b60006200026d8262000254565b92915050565b6120fd80620002836000396000f3fe608060405234801561001057600080fd5b5060043610610084576000357c010000000000000000000000000000000000000000000000000000000090048063d2df07331161006d578063d2df0733146100c7578063e306f779146100da578063e3b1aa86146100ef57610084565b80630f7d8e391461008957806390c3bc3f146100b2575b600080fd5b61009c610097366004611888565b610102565b6040516100a99190611e6f565b60405180910390f35b6100c56100c036600461196e565b6104f7565b005b6100c56100d536600461196e565b6105a3565b6100e26105d4565b6040516100a99190611e7d565b6100c56100fd366004611a42565b6105da565b6000808251111515610149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f3b565b60405180910390fd5b600061015483610821565b7f010000000000000000000000000000000000000000000000000000000000000090049050600360ff8216106101b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b60008160ff1660038111156101c757fe5b905060008160038111156101d757fe5b141561020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f2b565b600181600381111561021d57fe5b141561035b57835160411461025e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b600084600081518110151561026f57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006102b186600163ffffffff6108e516565b905060006102c687602163ffffffff6108e516565b905060018884848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015196506104f195505050505050565b600281600381111561036957fe5b14156104bf5783516041146103aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b60008460008151811015156103bb57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006103fd86600163ffffffff6108e516565b9050600061041287602163ffffffff6108e516565b905060018860405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012084848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b92915050565b61050485858585856105a3565b6001548551602087015160408089015190517fbfc8bfce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9094169363bfc8bfce9361056a93909290918990600401611f5b565b600060405180830381600087803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b505050505050505050565b60606105b28660400151610930565b90506000815111156105cc576105cc8682878787876105da565b505050505050565b60005481565b3273ffffffffffffffffffffffffffffffffffffffff851614610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f0b565b600061063487610de8565b60408051600080825260208201909252845192935091905b80821461073c576000868281518110151561066357fe5b906020019060200201519050610677611220565b506040805160808101825273ffffffffffffffffffffffffffffffffffffffff8b16815260208101879052908101899052606081018290524282116106e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611edb565b60006106f382610dfb565b90506000610718828a8781518110151561070957fe5b90602001906020020151610102565b905061072a878263ffffffff610e0916565b9650506001909301925061064c915050565b5061074d823263ffffffff610e0916565b885190925060005b8082146108145789516000908b908390811061076d57fe5b906020019060200201516060015173ffffffffffffffffffffffffffffffffffffffff16141561079c5761080c565b60008a828151811015156107ac57fe5b6020908102909101015160400151905060006107ce868363ffffffff610ed316565b9050801515610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e9b565b50505b600101610755565b5050505050505050505050565b600080825111151561085f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f1b565b815182907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061088f57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507f0100000000000000000000000000000000000000000000000000000000000000908190040290565b600081602001835110151515610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eeb565b50016020015190565b60606000610944838263ffffffff610f1016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4be83d50000000000000000000000000000000000000000000000000000000014806109d757507fffffffff0000000000000000000000000000000000000000000000000000000081167f3e228bae00000000000000000000000000000000000000000000000000000000145b80610a2357507fffffffff0000000000000000000000000000000000000000000000000000000081167f64a3bc1500000000000000000000000000000000000000000000000000000000145b15610aad57610a30611248565b8351610a4690859060049063ffffffff610f7d16565b806020019051610a5991908101906118da565b604080516001808252818301909252919250816020015b610a78611248565b815260200190600190039081610a7057905050925080836000815181101515610a9d57fe5b6020908102909101015250610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f297bb70b000000000000000000000000000000000000000000000000000000001480610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f50dde19000000000000000000000000000000000000000000000000000000000145b80610b8a57507fffffffff0000000000000000000000000000000000000000000000000000000081167f4d0ae54600000000000000000000000000000000000000000000000000000000145b80610bd657507fffffffff0000000000000000000000000000000000000000000000000000000081167fe5fa431b00000000000000000000000000000000000000000000000000000000145b80610c2257507fffffffff0000000000000000000000000000000000000000000000000000000081167fa3e2038000000000000000000000000000000000000000000000000000000000145b80610c6e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f7e1d980800000000000000000000000000000000000000000000000000000000145b80610cba57507fffffffff0000000000000000000000000000000000000000000000000000000081167fdd1c7d1800000000000000000000000000000000000000000000000000000000145b15610cef578251610cd590849060049063ffffffff610f7d16565b806020019051610ce8919081019061184b565b9150610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f3c28d861000000000000000000000000000000000000000000000000000000001415610de257610d41611248565b610d49611248565b8451610d5f90869060049063ffffffff610f7d16565b806020019051610d72919081019061190f565b60408051600280825260608201909252929450909250816020015b610d95611248565b815260200190600190039081610d8d57905050935081846000815181101515610dba57fe5b602090810290910101528351819085906001908110610dd557fe5b6020908102909101015250505b50919050565b60006104f1610df683611049565b6110b7565b60006104f1610df6836110f7565b815160405160609184906020808202808401820192910182851015610e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ecb565b82851115610e7457610e6d858583611156565b8497508793505b600182019150602081019050808401925082945081885284604052868860018403815181101515610ea157fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152508694505050505092915050565b6000602083510260208401818101815b81811015610f0657805180871415610efd57600195508291505b50602001610ee3565b5050505092915050565b600081600401835110151515610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f4b565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610fb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eab565b8351821115610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ebb565b8282036040519080825280601f01601f191660200182016040528015611021576020820181803883390190505b5090506110426110308261121a565b8461103a8761121a565b018351611156565b9392505050565b604081810151825160209384015182519285019290922083517f213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c81529485019190915273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260608201526080902090565b6000546040517f19010000000000000000000000000000000000000000000000000000000000008152600281019190915260228101919091526042902090565b604080820151825160208085015160608681015185519584019590952086517f2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e058152938401949094529482015292830152608082015260a09020919050565b6020811015611180576001816020036101000a038019835116818551168082178652505050611215565b8282141561118d57611215565b828211156111c75760208103905080820181840181515b828510156111bf5784518652602095860195909401936111a4565b905250611215565b60208103905080820181840183515b8186121561121057825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111d6565b855250505b505050565b60200190565b6040805160808101825260008082526020820181905260609282018390529181019190915290565b61018060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b60006110428235612038565b60006110428251612038565b6000601f8201831361132b57600080fd5b813561133e61133982611fcd565b611fa6565b81815260209384019390925082018360005b83811015610f06578135860161136688826114b2565b8452506020928301929190910190600101611350565b6000601f8201831361138d57600080fd5b815161139b61133982611fcd565b81815260209384019390925082018360005b83811015610f0657815186016113c38882611690565b84525060209283019291909101906001016113ad565b6000601f820183136113ea57600080fd5b81356113f861133982611fcd565b81815260209384019390925082018360005b83811015610f0657813586016114208882611547565b845250602092830192919091019060010161140a565b6000601f8201831361144757600080fd5b813561145561133982611fcd565b9150818183526020840193506020810190508385602084028201111561147a57600080fd5b60005b83811015610f06578161149088826114a6565b845250602092830192919091019060010161147d565b60006110428235612043565b6000601f820183136114c357600080fd5b81356114d161133982611fee565b915080825260208301602083018583830111156114ed57600080fd5b6114f883828461205f565b50505092915050565b6000601f8201831361151257600080fd5b815161152061133982611fee565b9150808252602083016020830185838301111561153c57600080fd5b6114f883828461206b565b6000610180828403121561155a57600080fd5b611565610180611fa6565b905060006115738484611302565b825250602061158484848301611302565b602083015250604061159884828501611302565b60408301525060606115ac84828501611302565b60608301525060806115c0848285016114a6565b60808301525060a06115d4848285016114a6565b60a08301525060c06115e8848285016114a6565b60c08301525060e06115fc848285016114a6565b60e083015250610100611611848285016114a6565b61010083015250610120611627848285016114a6565b6101208301525061014082013567ffffffffffffffff81111561164957600080fd5b611655848285016114b2565b6101408301525061016082013567ffffffffffffffff81111561167757600080fd5b611683848285016114b2565b6101608301525092915050565b600061018082840312156116a357600080fd5b6116ae610180611fa6565b905060006116bc848461130e565b82525060206116cd8484830161130e565b60208301525060406116e18482850161130e565b60408301525060606116f58482850161130e565b60608301525060806117098482850161183f565b60808301525060a061171d8482850161183f565b60a08301525060c06117318482850161183f565b60c08301525060e06117458482850161183f565b60e08301525061010061175a8482850161183f565b610100830152506101206117708482850161183f565b6101208301525061014082015167ffffffffffffffff81111561179257600080fd5b61179e84828501611501565b6101408301525061016082015167ffffffffffffffff8111156117c057600080fd5b61168384828501611501565b6000606082840312156117de57600080fd5b6117e86060611fa6565b905060006117f684846114a6565b825250602061180784848301611302565b602083015250604082013567ffffffffffffffff81111561182757600080fd5b611833848285016114b2565b60408301525092915050565b60006110428251612043565b60006020828403121561185d57600080fd5b815167ffffffffffffffff81111561187457600080fd5b6118808482850161137c565b949350505050565b6000806040838503121561189b57600080fd5b60006118a785856114a6565b925050602083013567ffffffffffffffff8111156118c457600080fd5b6118d0858286016114b2565b9150509250929050565b6000602082840312156118ec57600080fd5b815167ffffffffffffffff81111561190357600080fd5b61188084828501611690565b6000806040838503121561192257600080fd5b825167ffffffffffffffff81111561193957600080fd5b61194585828601611690565b925050602083015167ffffffffffffffff81111561196257600080fd5b6118d085828601611690565b600080600080600060a0868803121561198657600080fd5b853567ffffffffffffffff81111561199d57600080fd5b6119a9888289016117cc565b95505060206119ba88828901611302565b945050604086013567ffffffffffffffff8111156119d757600080fd5b6119e3888289016114b2565b935050606086013567ffffffffffffffff811115611a0057600080fd5b611a0c88828901611436565b925050608086013567ffffffffffffffff811115611a2957600080fd5b611a358882890161131a565b9150509295509295909350565b60008060008060008060c08789031215611a5b57600080fd5b863567ffffffffffffffff811115611a7257600080fd5b611a7e89828a016117cc565b965050602087013567ffffffffffffffff811115611a9b57600080fd5b611aa789828a016113d9565b9550506040611ab889828a01611302565b945050606087013567ffffffffffffffff811115611ad557600080fd5b611ae189828a016114b2565b935050608087013567ffffffffffffffff811115611afe57600080fd5b611b0a89828a01611436565b92505060a087013567ffffffffffffffff811115611b2757600080fd5b611b3389828a0161131a565b9150509295509295509295565b611b4981612038565b82525050565b611b4981612043565b6000611b6382612034565b808452611b7781602086016020860161206b565b611b808161209b565b9093016020019392505050565b601281527f4c454e4754485f36355f52455155495245440000000000000000000000000000602082015260400190565b601a81527f494e56414c49445f415050524f56414c5f5349474e4154555245000000000000602082015260400190565b601a81527f46524f4d5f4c4553535f5448414e5f544f5f5245515549524544000000000000602082015260400190565b601c81527f544f5f4c4553535f5448414e5f4c454e4754485f524551554952454400000000602082015260400190565b601781527f494e56414c49445f465245455f4d454d4f52595f505452000000000000000000602082015260400190565b601081527f415050524f56414c5f4558504952454400000000000000000000000000000000602082015260400190565b602681527f475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f524560208201527f5155495245440000000000000000000000000000000000000000000000000000604082015260600190565b601581527f5349474e41545552455f554e535550504f525445440000000000000000000000602082015260400190565b600e81527f494e56414c49445f4f524947494e000000000000000000000000000000000000602082015260400190565b602181527f475245415445525f5448414e5f5a45524f5f4c454e4754485f5245515549524560208201527f4400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601181527f5349474e41545552455f494c4c4547414c000000000000000000000000000000602082015260400190565b601e81527f4c454e4754485f475245415445525f5448414e5f305f52455155495245440000602082015260400190565b602581527f475245415445525f4f525f455155414c5f544f5f345f4c454e4754485f52455160208201527f5549524544000000000000000000000000000000000000000000000000000000604082015260600190565b602081016104f18284611b40565b602081016104f18284611b4f565b602080825281016104f181611b8d565b602080825281016104f181611bbd565b602080825281016104f181611bed565b602080825281016104f181611c1d565b602080825281016104f181611c4d565b602080825281016104f181611c7d565b602080825281016104f181611cad565b602080825281016104f181611d03565b602080825281016104f181611d33565b602080825281016104f181611d63565b602080825281016104f181611db9565b602080825281016104f181611de9565b602080825281016104f181611e19565b60808101611f698287611b4f565b611f766020830186611b40565b8181036040830152611f888185611b58565b90508181036060830152611f9c8184611b58565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611fc557600080fd5b604052919050565b600067ffffffffffffffff821115611fe457600080fd5b5060209081020190565b600067ffffffffffffffff82111561200557600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b60006104f182612046565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561208657818101518382015260200161206e565b83811115612095576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a7230582013be4e9e281ff59b6be3d1c4c7af6075c7d255edc60be429d25841f98f287b3e6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x2380 DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE PUSH3 0x33 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x22B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x454950373132446F6D61696E2800000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x737472696E67206E616D652C0000000000000000000000000000000000000000 PUSH1 0x2D DUP4 ADD MSTORE PUSH32 0x737472696E672076657273696F6E2C0000000000000000000000000000000000 PUSH1 0x39 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x2900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x61 DUP4 ADD MSTORE DUP3 MLOAD DUP1 DUP4 SUB PUSH1 0x42 ADD DUP2 MSTORE PUSH1 0x62 DUP4 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xA2 DUP5 ADD DUP6 MSTORE PUSH1 0x17 SWAP1 SWAP2 MSTORE PUSH32 0x30782050726F746F636F6C20436F6F7264696E61746F72000000000000000000 PUSH1 0x82 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x312E302E30000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x626D101E477FD17DD52AFB3F9AD9EB016BF60F6E377877F34E8F3EA84C930236 DUP3 DUP5 ADD MSTORE PUSH32 0x6C015BD22B4C69690933C1058878EBDFEF31F9AAAE40BBE86D8A09FE1B2972C PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x273 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x224 DUP3 MLOAD PUSH3 0x260 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x24C DUP5 DUP5 PUSH3 0x216 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x26D DUP3 PUSH3 0x254 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20FD DUP1 PUSH3 0x283 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x84 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0xD2DF0733 GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD2DF0733 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0xE306F779 EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0xE3B1AA86 EQ PUSH2 0xEF JUMPI PUSH2 0x84 JUMP JUMPDEST DUP1 PUSH4 0xF7D8E39 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x90C3BC3F EQ PUSH2 0xB2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x1888 JUMP JUMPDEST PUSH2 0x102 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x4F7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH2 0xD5 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xE2 PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1A42 JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x149 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP4 PUSH2 0x821 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0x3 PUSH1 0xFF DUP3 AND LT PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F2B JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x35B JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x25E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x26F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x2B1 DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C6 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP7 POP PUSH2 0x4F1 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x369 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4BF JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x3BB JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x3FD DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x412 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP PUSH1 0x1C ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x504 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP1 DUP10 ADD MLOAD SWAP1 MLOAD PUSH32 0xBFC8BFCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND SWAP4 PUSH4 0xBFC8BFCE SWAP4 PUSH2 0x56A SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x598 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5B2 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x930 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0x5CC JUMPI PUSH2 0x5CC DUP7 DUP3 DUP8 DUP8 DUP8 DUP8 PUSH2 0x5DA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST ORIGIN PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x634 DUP8 PUSH2 0xDE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE DUP5 MLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 JUMPDEST DUP1 DUP3 EQ PUSH2 0x73C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x663 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD SWAP1 POP PUSH2 0x677 PUSH2 0x1220 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE TIMESTAMP DUP3 GT PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EDB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F3 DUP3 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x718 DUP3 DUP11 DUP8 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x709 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x102 JUMP JUMPDEST SWAP1 POP PUSH2 0x72A DUP8 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST SWAP7 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x64C SWAP2 POP POP JUMP JUMPDEST POP PUSH2 0x74D DUP3 ORIGIN PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST DUP9 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 JUMPDEST DUP1 DUP3 EQ PUSH2 0x814 JUMPI DUP10 MLOAD PUSH1 0x0 SWAP1 DUP12 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x76D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x79C JUMPI PUSH2 0x80C JUMP JUMPDEST PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x7AC JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7CE DUP7 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xED3 AND JUMP JUMPDEST SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x755 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F1B JUMP JUMPDEST DUP2 MLOAD DUP3 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 LT PUSH2 0x88F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0x927 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EEB JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x944 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF10 AND JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB4BE83D500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9D7 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3E228BAE00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xA23 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x64A3BC1500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xAAD JUMPI PUSH2 0xA30 PUSH2 0x1248 JUMP JUMPDEST DUP4 MLOAD PUSH2 0xA46 SWAP1 DUP6 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xA59 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xA78 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA70 JUMPI SWAP1 POP POP SWAP3 POP DUP1 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA9D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x297BB70B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xB3E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x50DDE19000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB8A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4D0AE54600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xBD6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xE5FA431B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC22 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xA3E2038000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC6E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x7E1D980800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCBA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDD1C7D1800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xCEF JUMPI DUP3 MLOAD PUSH2 0xCD5 SWAP1 DUP5 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xCE8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x184B JUMP JUMPDEST SWAP2 POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3C28D86100000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xDE2 JUMPI PUSH2 0xD41 PUSH2 0x1248 JUMP JUMPDEST PUSH2 0xD49 PUSH2 0x1248 JUMP JUMPDEST DUP5 MLOAD PUSH2 0xD5F SWAP1 DUP7 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xD72 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x190F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xD95 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD8D JUMPI SWAP1 POP POP SWAP4 POP DUP2 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xDBA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD DUP2 SWAP1 DUP6 SWAP1 PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0xDD5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x1049 JUMP JUMPDEST PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x10F7 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 MLOAD PUSH1 0x60 SWAP2 DUP5 SWAP1 PUSH1 0x20 DUP1 DUP3 MUL DUP1 DUP5 ADD DUP3 ADD SWAP3 SWAP2 ADD DUP3 DUP6 LT ISZERO PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1ECB JUMP JUMPDEST DUP3 DUP6 GT ISZERO PUSH2 0xE74 JUMPI PUSH2 0xE6D DUP6 DUP6 DUP4 PUSH2 0x1156 JUMP JUMPDEST DUP5 SWAP8 POP DUP8 SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP1 DUP5 ADD SWAP3 POP DUP3 SWAP5 POP DUP2 DUP9 MSTORE DUP5 PUSH1 0x40 MSTORE DUP7 DUP9 PUSH1 0x1 DUP5 SUB DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xEA1 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP7 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 MLOAD MUL PUSH1 0x20 DUP5 ADD DUP2 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP1 MLOAD DUP1 DUP8 EQ ISZERO PUSH2 0xEFD JUMPI PUSH1 0x1 SWAP6 POP DUP3 SWAP2 POP JUMPDEST POP PUSH1 0x20 ADD PUSH2 0xEE3 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F4B JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 GT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EAB JUMP JUMPDEST DUP4 MLOAD DUP3 GT ISZERO PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST DUP3 DUP3 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1042 PUSH2 0x1030 DUP3 PUSH2 0x121A JUMP JUMPDEST DUP5 PUSH2 0x103A DUP8 PUSH2 0x121A JUMP JUMPDEST ADD DUP4 MLOAD PUSH2 0x1156 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 DUP2 ADD MLOAD DUP3 MLOAD PUSH1 0x20 SWAP4 DUP5 ADD MLOAD DUP3 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP4 MLOAD PUSH32 0x213C6F636F3EA94E701C0ADF9B2624AA45A6C694F9A292C094F9A81C24B5DF4C DUP2 MSTORE SWAP5 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 DUP2 ADD MLOAD DUP6 MLOAD SWAP6 DUP5 ADD SWAP6 SWAP1 SWAP6 KECCAK256 DUP7 MLOAD PUSH32 0x2FBCDBAA76BC7589916958AE919DFBEF04D23F6BBF26DE6FF317B32C6CC01E05 DUP2 MSTORE SWAP4 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 DUP3 ADD MSTORE SWAP3 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1180 JUMPI PUSH1 0x1 DUP2 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP4 MLOAD AND DUP2 DUP6 MLOAD AND DUP1 DUP3 OR DUP7 MSTORE POP POP POP PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 EQ ISZERO PUSH2 0x118D JUMPI PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH2 0x11C7 JUMPI PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP2 MLOAD JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0x11BF JUMPI DUP5 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 MSTORE POP PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP4 MLOAD JUMPDEST DUP2 DUP7 SLT ISZERO PUSH2 0x1210 JUMPI DUP3 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x11D6 JUMP JUMPDEST DUP6 MSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x132B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x133E PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x1FA6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1366 DUP9 DUP3 PUSH2 0x14B2 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1350 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x139B PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x13C3 DUP9 DUP3 PUSH2 0x1690 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x13EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13F8 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1420 DUP9 DUP3 PUSH2 0x1547 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x140A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1455 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x147A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 PUSH2 0x1490 DUP9 DUP3 PUSH2 0x14A6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x14C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x14D1 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x14ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x205F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1520 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x153C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x206B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1565 PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1573 DUP5 DUP5 PUSH2 0x1302 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1584 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1598 DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x15AC DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x15C0 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x15D4 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x15E8 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x15FC DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x1611 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1627 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1655 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16AE PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16BC DUP5 DUP5 PUSH2 0x130E JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x16CD DUP5 DUP5 DUP4 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x16E1 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x16F5 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x1709 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x171D DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x1731 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x1745 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x175A DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1770 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x179E DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E8 PUSH1 0x60 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17F6 DUP5 DUP5 PUSH2 0x14A6 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1807 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1833 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x137C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x189B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18A7 DUP6 DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1945 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x199D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A9 DUP9 DUP3 DUP10 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x19BA DUP9 DUP3 DUP10 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19E3 DUP9 DUP3 DUP10 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A0C DUP9 DUP3 DUP10 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A35 DUP9 DUP3 DUP10 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1A5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7E DUP10 DUP3 DUP11 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA7 DUP10 DUP3 DUP11 ADD PUSH2 0x13D9 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x1AB8 DUP10 DUP3 DUP11 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AE1 DUP10 DUP3 DUP11 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B0A DUP10 DUP3 DUP11 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B33 DUP10 DUP3 DUP11 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2038 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x2034 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x1B77 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x206B JUMP JUMPDEST PUSH2 0x1B80 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH32 0x4C454E4754485F36355F52455155495245440000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x494E56414C49445F415050524F56414C5F5349474E4154555245000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x46524F4D5F4C4553535F5448414E5F544F5F5245515549524544000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1C DUP2 MSTORE PUSH32 0x544F5F4C4553535F5448414E5F4C454E4754485F524551554952454400000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x17 DUP2 MSTORE PUSH32 0x494E56414C49445F465245455F4D454D4F52595F505452000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x10 DUP2 MSTORE PUSH32 0x415050524F56414C5F4558504952454400000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F33325F4C454E4754485F5245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5155495245440000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x15 DUP2 MSTORE PUSH32 0x5349474E41545552455F554E535550504F525445440000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xE DUP2 MSTORE PUSH32 0x494E56414C49445F4F524947494E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x21 DUP2 MSTORE PUSH32 0x475245415445525F5448414E5F5A45524F5F4C454E4754485F52455155495245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH32 0x5349474E41545552455F494C4C4547414C000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1E DUP2 MSTORE PUSH32 0x4C454E4754485F475245415445525F5448414E5F305F52455155495245440000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x25 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F345F4C454E4754485F524551 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5549524544000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B40 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B4F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1B8D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C1D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C7D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1CAD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DB9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1E19 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1F69 DUP3 DUP8 PUSH2 0x1B4F JUMP JUMPDEST PUSH2 0x1F76 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1B40 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1F88 DUP2 DUP6 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1F9C DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 DUP3 PUSH2 0x2046 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2086 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x206E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 SGT 0xbe 0x4e SWAP15 0x28 0x1f CREATE2 SWAP12 PUSH12 0xE3D1C4C7AF6075C7D255EDC6 SIGNEXTEND 0xe4 0x29 0xd2 PC COINBASE 0xf9 DUP16 0x28 PUSH28 0x3E6C6578706572696D656E74616CF500370000000000000000000000 ", + "sourceMap": "837:227:0:-;;;977:85;8:9:-1;5:2;;;30:1;27;20:12;5:2;977:85:0;;;;;;;;;;;;;;;;;;;;;;1067:148:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1067:148:10;;;;;;1057:159;;;;;;;;;1533:18;;;;;;;;;;;;;;;;;;1583:21;;;;;;;;;;;;;;;1438:214;;;;;;;;;1517:36;1438:214;;;;1567:39;1438:214;;;;1636:4;1438:214;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1438:214:10;;;;;;;1428:225;;;;;-1:-1:-1;1407:246:10;1067:148;830:35:8;;-1:-1:-1;;;;;;830:35:8;-1:-1:-1;;;;;830:35:8;;;;;;;;;;837:227:0;;5:122:-1;;83:39;114:6;108:13;83:39;;;74:48;68:59;-1:-1;;;68:59;134:263;;249:2;237:9;228:7;224:23;220:32;217:2;;;265:1;262;255:12;217:2;300:1;317:64;373:7;353:9;317:64;;;307:74;211:186;-1:-1;;;;211:186;404:128;-1:-1;;;;;473:54;;456:76;539:105;;608:31;633:5;608:31;;;597:42;591:53;-1:-1;;591:53;;837:227:0;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b5060043610610084576000357c010000000000000000000000000000000000000000000000000000000090048063d2df07331161006d578063d2df0733146100c7578063e306f779146100da578063e3b1aa86146100ef57610084565b80630f7d8e391461008957806390c3bc3f146100b2575b600080fd5b61009c610097366004611888565b610102565b6040516100a99190611e6f565b60405180910390f35b6100c56100c036600461196e565b6104f7565b005b6100c56100d536600461196e565b6105a3565b6100e26105d4565b6040516100a99190611e7d565b6100c56100fd366004611a42565b6105da565b6000808251111515610149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f3b565b60405180910390fd5b600061015483610821565b7f010000000000000000000000000000000000000000000000000000000000000090049050600360ff8216106101b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b60008160ff1660038111156101c757fe5b905060008160038111156101d757fe5b141561020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f2b565b600181600381111561021d57fe5b141561035b57835160411461025e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b600084600081518110151561026f57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006102b186600163ffffffff6108e516565b905060006102c687602163ffffffff6108e516565b905060018884848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015196506104f195505050505050565b600281600381111561036957fe5b14156104bf5783516041146103aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b60008460008151811015156103bb57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006103fd86600163ffffffff6108e516565b9050600061041287602163ffffffff6108e516565b905060018860405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012084848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b92915050565b61050485858585856105a3565b6001548551602087015160408089015190517fbfc8bfce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9094169363bfc8bfce9361056a93909290918990600401611f5b565b600060405180830381600087803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b505050505050505050565b60606105b28660400151610930565b90506000815111156105cc576105cc8682878787876105da565b505050505050565b60005481565b3273ffffffffffffffffffffffffffffffffffffffff851614610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f0b565b600061063487610de8565b60408051600080825260208201909252845192935091905b80821461073c576000868281518110151561066357fe5b906020019060200201519050610677611220565b506040805160808101825273ffffffffffffffffffffffffffffffffffffffff8b16815260208101879052908101899052606081018290524282116106e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611edb565b60006106f382610dfb565b90506000610718828a8781518110151561070957fe5b90602001906020020151610102565b905061072a878263ffffffff610e0916565b9650506001909301925061064c915050565b5061074d823263ffffffff610e0916565b885190925060005b8082146108145789516000908b908390811061076d57fe5b906020019060200201516060015173ffffffffffffffffffffffffffffffffffffffff16141561079c5761080c565b60008a828151811015156107ac57fe5b6020908102909101015160400151905060006107ce868363ffffffff610ed316565b9050801515610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e9b565b50505b600101610755565b5050505050505050505050565b600080825111151561085f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f1b565b815182907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061088f57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507f0100000000000000000000000000000000000000000000000000000000000000908190040290565b600081602001835110151515610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eeb565b50016020015190565b60606000610944838263ffffffff610f1016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4be83d50000000000000000000000000000000000000000000000000000000014806109d757507fffffffff0000000000000000000000000000000000000000000000000000000081167f3e228bae00000000000000000000000000000000000000000000000000000000145b80610a2357507fffffffff0000000000000000000000000000000000000000000000000000000081167f64a3bc1500000000000000000000000000000000000000000000000000000000145b15610aad57610a30611248565b8351610a4690859060049063ffffffff610f7d16565b806020019051610a5991908101906118da565b604080516001808252818301909252919250816020015b610a78611248565b815260200190600190039081610a7057905050925080836000815181101515610a9d57fe5b6020908102909101015250610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f297bb70b000000000000000000000000000000000000000000000000000000001480610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f50dde19000000000000000000000000000000000000000000000000000000000145b80610b8a57507fffffffff0000000000000000000000000000000000000000000000000000000081167f4d0ae54600000000000000000000000000000000000000000000000000000000145b80610bd657507fffffffff0000000000000000000000000000000000000000000000000000000081167fe5fa431b00000000000000000000000000000000000000000000000000000000145b80610c2257507fffffffff0000000000000000000000000000000000000000000000000000000081167fa3e2038000000000000000000000000000000000000000000000000000000000145b80610c6e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f7e1d980800000000000000000000000000000000000000000000000000000000145b80610cba57507fffffffff0000000000000000000000000000000000000000000000000000000081167fdd1c7d1800000000000000000000000000000000000000000000000000000000145b15610cef578251610cd590849060049063ffffffff610f7d16565b806020019051610ce8919081019061184b565b9150610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f3c28d861000000000000000000000000000000000000000000000000000000001415610de257610d41611248565b610d49611248565b8451610d5f90869060049063ffffffff610f7d16565b806020019051610d72919081019061190f565b60408051600280825260608201909252929450909250816020015b610d95611248565b815260200190600190039081610d8d57905050935081846000815181101515610dba57fe5b602090810290910101528351819085906001908110610dd557fe5b6020908102909101015250505b50919050565b60006104f1610df683611049565b6110b7565b60006104f1610df6836110f7565b815160405160609184906020808202808401820192910182851015610e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ecb565b82851115610e7457610e6d858583611156565b8497508793505b600182019150602081019050808401925082945081885284604052868860018403815181101515610ea157fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152508694505050505092915050565b6000602083510260208401818101815b81811015610f0657805180871415610efd57600195508291505b50602001610ee3565b5050505092915050565b600081600401835110151515610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f4b565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610fb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eab565b8351821115610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ebb565b8282036040519080825280601f01601f191660200182016040528015611021576020820181803883390190505b5090506110426110308261121a565b8461103a8761121a565b018351611156565b9392505050565b604081810151825160209384015182519285019290922083517f213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c81529485019190915273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260608201526080902090565b6000546040517f19010000000000000000000000000000000000000000000000000000000000008152600281019190915260228101919091526042902090565b604080820151825160208085015160608681015185519584019590952086517f2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e058152938401949094529482015292830152608082015260a09020919050565b6020811015611180576001816020036101000a038019835116818551168082178652505050611215565b8282141561118d57611215565b828211156111c75760208103905080820181840181515b828510156111bf5784518652602095860195909401936111a4565b905250611215565b60208103905080820181840183515b8186121561121057825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111d6565b855250505b505050565b60200190565b6040805160808101825260008082526020820181905260609282018390529181019190915290565b61018060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b60006110428235612038565b60006110428251612038565b6000601f8201831361132b57600080fd5b813561133e61133982611fcd565b611fa6565b81815260209384019390925082018360005b83811015610f06578135860161136688826114b2565b8452506020928301929190910190600101611350565b6000601f8201831361138d57600080fd5b815161139b61133982611fcd565b81815260209384019390925082018360005b83811015610f0657815186016113c38882611690565b84525060209283019291909101906001016113ad565b6000601f820183136113ea57600080fd5b81356113f861133982611fcd565b81815260209384019390925082018360005b83811015610f0657813586016114208882611547565b845250602092830192919091019060010161140a565b6000601f8201831361144757600080fd5b813561145561133982611fcd565b9150818183526020840193506020810190508385602084028201111561147a57600080fd5b60005b83811015610f06578161149088826114a6565b845250602092830192919091019060010161147d565b60006110428235612043565b6000601f820183136114c357600080fd5b81356114d161133982611fee565b915080825260208301602083018583830111156114ed57600080fd5b6114f883828461205f565b50505092915050565b6000601f8201831361151257600080fd5b815161152061133982611fee565b9150808252602083016020830185838301111561153c57600080fd5b6114f883828461206b565b6000610180828403121561155a57600080fd5b611565610180611fa6565b905060006115738484611302565b825250602061158484848301611302565b602083015250604061159884828501611302565b60408301525060606115ac84828501611302565b60608301525060806115c0848285016114a6565b60808301525060a06115d4848285016114a6565b60a08301525060c06115e8848285016114a6565b60c08301525060e06115fc848285016114a6565b60e083015250610100611611848285016114a6565b61010083015250610120611627848285016114a6565b6101208301525061014082013567ffffffffffffffff81111561164957600080fd5b611655848285016114b2565b6101408301525061016082013567ffffffffffffffff81111561167757600080fd5b611683848285016114b2565b6101608301525092915050565b600061018082840312156116a357600080fd5b6116ae610180611fa6565b905060006116bc848461130e565b82525060206116cd8484830161130e565b60208301525060406116e18482850161130e565b60408301525060606116f58482850161130e565b60608301525060806117098482850161183f565b60808301525060a061171d8482850161183f565b60a08301525060c06117318482850161183f565b60c08301525060e06117458482850161183f565b60e08301525061010061175a8482850161183f565b610100830152506101206117708482850161183f565b6101208301525061014082015167ffffffffffffffff81111561179257600080fd5b61179e84828501611501565b6101408301525061016082015167ffffffffffffffff8111156117c057600080fd5b61168384828501611501565b6000606082840312156117de57600080fd5b6117e86060611fa6565b905060006117f684846114a6565b825250602061180784848301611302565b602083015250604082013567ffffffffffffffff81111561182757600080fd5b611833848285016114b2565b60408301525092915050565b60006110428251612043565b60006020828403121561185d57600080fd5b815167ffffffffffffffff81111561187457600080fd5b6118808482850161137c565b949350505050565b6000806040838503121561189b57600080fd5b60006118a785856114a6565b925050602083013567ffffffffffffffff8111156118c457600080fd5b6118d0858286016114b2565b9150509250929050565b6000602082840312156118ec57600080fd5b815167ffffffffffffffff81111561190357600080fd5b61188084828501611690565b6000806040838503121561192257600080fd5b825167ffffffffffffffff81111561193957600080fd5b61194585828601611690565b925050602083015167ffffffffffffffff81111561196257600080fd5b6118d085828601611690565b600080600080600060a0868803121561198657600080fd5b853567ffffffffffffffff81111561199d57600080fd5b6119a9888289016117cc565b95505060206119ba88828901611302565b945050604086013567ffffffffffffffff8111156119d757600080fd5b6119e3888289016114b2565b935050606086013567ffffffffffffffff811115611a0057600080fd5b611a0c88828901611436565b925050608086013567ffffffffffffffff811115611a2957600080fd5b611a358882890161131a565b9150509295509295909350565b60008060008060008060c08789031215611a5b57600080fd5b863567ffffffffffffffff811115611a7257600080fd5b611a7e89828a016117cc565b965050602087013567ffffffffffffffff811115611a9b57600080fd5b611aa789828a016113d9565b9550506040611ab889828a01611302565b945050606087013567ffffffffffffffff811115611ad557600080fd5b611ae189828a016114b2565b935050608087013567ffffffffffffffff811115611afe57600080fd5b611b0a89828a01611436565b92505060a087013567ffffffffffffffff811115611b2757600080fd5b611b3389828a0161131a565b9150509295509295509295565b611b4981612038565b82525050565b611b4981612043565b6000611b6382612034565b808452611b7781602086016020860161206b565b611b808161209b565b9093016020019392505050565b601281527f4c454e4754485f36355f52455155495245440000000000000000000000000000602082015260400190565b601a81527f494e56414c49445f415050524f56414c5f5349474e4154555245000000000000602082015260400190565b601a81527f46524f4d5f4c4553535f5448414e5f544f5f5245515549524544000000000000602082015260400190565b601c81527f544f5f4c4553535f5448414e5f4c454e4754485f524551554952454400000000602082015260400190565b601781527f494e56414c49445f465245455f4d454d4f52595f505452000000000000000000602082015260400190565b601081527f415050524f56414c5f4558504952454400000000000000000000000000000000602082015260400190565b602681527f475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f524560208201527f5155495245440000000000000000000000000000000000000000000000000000604082015260600190565b601581527f5349474e41545552455f554e535550504f525445440000000000000000000000602082015260400190565b600e81527f494e56414c49445f4f524947494e000000000000000000000000000000000000602082015260400190565b602181527f475245415445525f5448414e5f5a45524f5f4c454e4754485f5245515549524560208201527f4400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601181527f5349474e41545552455f494c4c4547414c000000000000000000000000000000602082015260400190565b601e81527f4c454e4754485f475245415445525f5448414e5f305f52455155495245440000602082015260400190565b602581527f475245415445525f4f525f455155414c5f544f5f345f4c454e4754485f52455160208201527f5549524544000000000000000000000000000000000000000000000000000000604082015260600190565b602081016104f18284611b40565b602081016104f18284611b4f565b602080825281016104f181611b8d565b602080825281016104f181611bbd565b602080825281016104f181611bed565b602080825281016104f181611c1d565b602080825281016104f181611c4d565b602080825281016104f181611c7d565b602080825281016104f181611cad565b602080825281016104f181611d03565b602080825281016104f181611d33565b602080825281016104f181611d63565b602080825281016104f181611db9565b602080825281016104f181611de9565b602080825281016104f181611e19565b60808101611f698287611b4f565b611f766020830186611b40565b8181036040830152611f888185611b58565b90508181036060830152611f9c8184611b58565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611fc557600080fd5b604052919050565b600067ffffffffffffffff821115611fe457600080fd5b5060209081020190565b600067ffffffffffffffff82111561200557600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b60006104f182612046565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561208657818101518382015260200161206e565b83811115612095576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a7230582013be4e9e281ff59b6be3d1c4c7af6075c7d255edc60be429d25841f98f287b3e6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x84 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0xD2DF0733 GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD2DF0733 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0xE306F779 EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0xE3B1AA86 EQ PUSH2 0xEF JUMPI PUSH2 0x84 JUMP JUMPDEST DUP1 PUSH4 0xF7D8E39 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x90C3BC3F EQ PUSH2 0xB2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x1888 JUMP JUMPDEST PUSH2 0x102 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x4F7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH2 0xD5 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xE2 PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1A42 JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x149 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP4 PUSH2 0x821 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0x3 PUSH1 0xFF DUP3 AND LT PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F2B JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x35B JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x25E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x26F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x2B1 DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C6 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP7 POP PUSH2 0x4F1 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x369 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4BF JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x3BB JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x3FD DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x412 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP PUSH1 0x1C ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x504 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP1 DUP10 ADD MLOAD SWAP1 MLOAD PUSH32 0xBFC8BFCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND SWAP4 PUSH4 0xBFC8BFCE SWAP4 PUSH2 0x56A SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x598 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5B2 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x930 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0x5CC JUMPI PUSH2 0x5CC DUP7 DUP3 DUP8 DUP8 DUP8 DUP8 PUSH2 0x5DA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST ORIGIN PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x634 DUP8 PUSH2 0xDE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE DUP5 MLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 JUMPDEST DUP1 DUP3 EQ PUSH2 0x73C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x663 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD SWAP1 POP PUSH2 0x677 PUSH2 0x1220 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE TIMESTAMP DUP3 GT PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EDB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F3 DUP3 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x718 DUP3 DUP11 DUP8 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x709 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x102 JUMP JUMPDEST SWAP1 POP PUSH2 0x72A DUP8 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST SWAP7 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x64C SWAP2 POP POP JUMP JUMPDEST POP PUSH2 0x74D DUP3 ORIGIN PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST DUP9 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 JUMPDEST DUP1 DUP3 EQ PUSH2 0x814 JUMPI DUP10 MLOAD PUSH1 0x0 SWAP1 DUP12 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x76D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x79C JUMPI PUSH2 0x80C JUMP JUMPDEST PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x7AC JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7CE DUP7 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xED3 AND JUMP JUMPDEST SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x755 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F1B JUMP JUMPDEST DUP2 MLOAD DUP3 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 LT PUSH2 0x88F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0x927 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EEB JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x944 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF10 AND JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB4BE83D500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9D7 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3E228BAE00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xA23 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x64A3BC1500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xAAD JUMPI PUSH2 0xA30 PUSH2 0x1248 JUMP JUMPDEST DUP4 MLOAD PUSH2 0xA46 SWAP1 DUP6 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xA59 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xA78 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA70 JUMPI SWAP1 POP POP SWAP3 POP DUP1 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA9D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x297BB70B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xB3E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x50DDE19000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB8A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4D0AE54600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xBD6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xE5FA431B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC22 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xA3E2038000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC6E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x7E1D980800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCBA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDD1C7D1800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xCEF JUMPI DUP3 MLOAD PUSH2 0xCD5 SWAP1 DUP5 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xCE8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x184B JUMP JUMPDEST SWAP2 POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3C28D86100000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xDE2 JUMPI PUSH2 0xD41 PUSH2 0x1248 JUMP JUMPDEST PUSH2 0xD49 PUSH2 0x1248 JUMP JUMPDEST DUP5 MLOAD PUSH2 0xD5F SWAP1 DUP7 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xD72 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x190F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xD95 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD8D JUMPI SWAP1 POP POP SWAP4 POP DUP2 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xDBA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD DUP2 SWAP1 DUP6 SWAP1 PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0xDD5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x1049 JUMP JUMPDEST PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x10F7 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 MLOAD PUSH1 0x60 SWAP2 DUP5 SWAP1 PUSH1 0x20 DUP1 DUP3 MUL DUP1 DUP5 ADD DUP3 ADD SWAP3 SWAP2 ADD DUP3 DUP6 LT ISZERO PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1ECB JUMP JUMPDEST DUP3 DUP6 GT ISZERO PUSH2 0xE74 JUMPI PUSH2 0xE6D DUP6 DUP6 DUP4 PUSH2 0x1156 JUMP JUMPDEST DUP5 SWAP8 POP DUP8 SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP1 DUP5 ADD SWAP3 POP DUP3 SWAP5 POP DUP2 DUP9 MSTORE DUP5 PUSH1 0x40 MSTORE DUP7 DUP9 PUSH1 0x1 DUP5 SUB DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xEA1 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP7 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 MLOAD MUL PUSH1 0x20 DUP5 ADD DUP2 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP1 MLOAD DUP1 DUP8 EQ ISZERO PUSH2 0xEFD JUMPI PUSH1 0x1 SWAP6 POP DUP3 SWAP2 POP JUMPDEST POP PUSH1 0x20 ADD PUSH2 0xEE3 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F4B JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 GT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EAB JUMP JUMPDEST DUP4 MLOAD DUP3 GT ISZERO PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST DUP3 DUP3 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1042 PUSH2 0x1030 DUP3 PUSH2 0x121A JUMP JUMPDEST DUP5 PUSH2 0x103A DUP8 PUSH2 0x121A JUMP JUMPDEST ADD DUP4 MLOAD PUSH2 0x1156 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 DUP2 ADD MLOAD DUP3 MLOAD PUSH1 0x20 SWAP4 DUP5 ADD MLOAD DUP3 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP4 MLOAD PUSH32 0x213C6F636F3EA94E701C0ADF9B2624AA45A6C694F9A292C094F9A81C24B5DF4C DUP2 MSTORE SWAP5 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 DUP2 ADD MLOAD DUP6 MLOAD SWAP6 DUP5 ADD SWAP6 SWAP1 SWAP6 KECCAK256 DUP7 MLOAD PUSH32 0x2FBCDBAA76BC7589916958AE919DFBEF04D23F6BBF26DE6FF317B32C6CC01E05 DUP2 MSTORE SWAP4 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 DUP3 ADD MSTORE SWAP3 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1180 JUMPI PUSH1 0x1 DUP2 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP4 MLOAD AND DUP2 DUP6 MLOAD AND DUP1 DUP3 OR DUP7 MSTORE POP POP POP PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 EQ ISZERO PUSH2 0x118D JUMPI PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH2 0x11C7 JUMPI PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP2 MLOAD JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0x11BF JUMPI DUP5 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 MSTORE POP PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP4 MLOAD JUMPDEST DUP2 DUP7 SLT ISZERO PUSH2 0x1210 JUMPI DUP3 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x11D6 JUMP JUMPDEST DUP6 MSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x132B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x133E PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x1FA6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1366 DUP9 DUP3 PUSH2 0x14B2 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1350 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x139B PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x13C3 DUP9 DUP3 PUSH2 0x1690 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x13EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13F8 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1420 DUP9 DUP3 PUSH2 0x1547 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x140A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1455 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x147A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 PUSH2 0x1490 DUP9 DUP3 PUSH2 0x14A6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x14C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x14D1 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x14ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x205F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1520 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x153C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x206B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1565 PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1573 DUP5 DUP5 PUSH2 0x1302 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1584 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1598 DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x15AC DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x15C0 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x15D4 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x15E8 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x15FC DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x1611 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1627 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1655 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16AE PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16BC DUP5 DUP5 PUSH2 0x130E JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x16CD DUP5 DUP5 DUP4 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x16E1 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x16F5 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x1709 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x171D DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x1731 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x1745 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x175A DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1770 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x179E DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E8 PUSH1 0x60 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17F6 DUP5 DUP5 PUSH2 0x14A6 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1807 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1833 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x137C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x189B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18A7 DUP6 DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1945 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x199D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A9 DUP9 DUP3 DUP10 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x19BA DUP9 DUP3 DUP10 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19E3 DUP9 DUP3 DUP10 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A0C DUP9 DUP3 DUP10 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A35 DUP9 DUP3 DUP10 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1A5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7E DUP10 DUP3 DUP11 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA7 DUP10 DUP3 DUP11 ADD PUSH2 0x13D9 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x1AB8 DUP10 DUP3 DUP11 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AE1 DUP10 DUP3 DUP11 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B0A DUP10 DUP3 DUP11 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B33 DUP10 DUP3 DUP11 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2038 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x2034 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x1B77 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x206B JUMP JUMPDEST PUSH2 0x1B80 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH32 0x4C454E4754485F36355F52455155495245440000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x494E56414C49445F415050524F56414C5F5349474E4154555245000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x46524F4D5F4C4553535F5448414E5F544F5F5245515549524544000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1C DUP2 MSTORE PUSH32 0x544F5F4C4553535F5448414E5F4C454E4754485F524551554952454400000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x17 DUP2 MSTORE PUSH32 0x494E56414C49445F465245455F4D454D4F52595F505452000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x10 DUP2 MSTORE PUSH32 0x415050524F56414C5F4558504952454400000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F33325F4C454E4754485F5245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5155495245440000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x15 DUP2 MSTORE PUSH32 0x5349474E41545552455F554E535550504F525445440000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xE DUP2 MSTORE PUSH32 0x494E56414C49445F4F524947494E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x21 DUP2 MSTORE PUSH32 0x475245415445525F5448414E5F5A45524F5F4C454E4754485F52455155495245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH32 0x5349474E41545552455F494C4C4547414C000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1E DUP2 MSTORE PUSH32 0x4C454E4754485F475245415445525F5448414E5F305F52455155495245440000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x25 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F345F4C454E4754485F524551 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5549524544000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B40 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B4F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1B8D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C1D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C7D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1CAD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DB9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1E19 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1F69 DUP3 DUP8 PUSH2 0x1B4F JUMP JUMPDEST PUSH2 0x1F76 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1B40 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1F88 DUP2 DUP6 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1F9C DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 DUP3 PUSH2 0x2046 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2086 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x206E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 SGT 0xbe 0x4e SWAP15 0x28 0x1f CREATE2 SWAP12 PUSH12 0xE3D1C4C7AF6075C7D255EDC6 SIGNEXTEND 0xe4 0x29 0xd2 PC COINBASE 0xf9 DUP16 0x28 PUSH28 0x3E6C6578706572696D656E74616CF500370000000000000000000000 ", + "sourceMap": "837:227:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;837:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;988:2549:3;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1627:801:2;;;;;;;;;:::i;:::-;;2108:913:1;;;;;;;;;:::i;1323:33:10:-;;;:::i;:::-;;;;;;;;3713:2773:1;;;;;;;;;:::i;988:2549:3:-;1097:21;1174:1;1155:9;:16;:20;1134:97;;;;;;;;;;;;;;;;;;;;;;;;1296:22;1327:23;:9;:21;:23::i;:::-;1321:30;;;;-1:-1:-1;1449:29:3;1424:55;;;;1403:123;;;;;;;;;;;;;;1537:27;1581:16;1567:31;;;;;;;;;;1537:61;-1:-1:-1;1948:21:3;1931:13;:38;;;;;;;;;1927:1260;;;1985:27;;;;;;;;;;;1927:1260;2085:20;2068:13;:37;;;;;;;;;2064:1123;;;2146:16;;2166:2;2146:22;2121:99;;;;;;;;;;;;;;2234:7;2250:9;2260:1;2250:12;;;;;;;;;;;;;;;;;;;;;2244:19;;-1:-1:-1;2277:9:3;2289:24;:9;2311:1;2289:24;:21;:24;:::i;:::-;2277:36;-1:-1:-1;2327:9:3;2339:25;:9;2361:2;2339:25;:21;:25;:::i;:::-;2327:37;;2394:102;2421:4;2443:1;2462;2481;2394:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2394:102:3;;;;;;-1:-1:-1;2510:20:3;;-1:-1:-1;;;;;;2510:20:3;2064:1123;2607:21;2590:13;:38;;;;;;;;;2586:601;;;2669:16;;2689:2;2669:22;2644:99;;;;;;;;;;;;;;2757:7;2773:9;2783:1;2773:12;;;;;;;;;;;;;;;;;;;;;2767:19;;-1:-1:-1;2800:9:3;2812:24;:9;2834:1;2812:24;:21;:24;:::i;:::-;2800:36;-1:-1:-1;2850:9:3;2862:25;:9;2884:2;2862:25;:21;:25;:::i;:::-;2850:37;;2917:225;3048:4;2954:116;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2954:116:3;;;2944:127;;;;;;3089:1;3108;3127;2917:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2586:601:3;3499:31;;;;;;;;;;;988:2549;;;;;:::o;1627:801:2:-;2008:197;2053:11;2078:8;2100:20;2134:29;2177:18;2008:31;:197::i;:::-;2251:8;;2292:16;;2322:25;;;;2361:16;;;;;2251:170;;;;;:8;;;;;:27;;:170;;2292:16;;2322:25;;2391:20;;2251:170;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2251:170:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2251:170:2;;;;1627:801;;;;;:::o;2108:913:1:-;2511:30;2544:38;2565:11;:16;;;2544:20;:38::i;:::-;2511:71;;2669:1;2653:6;:13;:17;2649:366;;;2754:250;2808:11;2837:6;2861:8;2887:20;2925:29;2972:18;2754:36;:250::i;:::-;2108:913;;;;;;:::o;1323:33:10:-;;;;:::o;3713:2773:1:-;4182:9;:21;;;;4161:82;;;;;;;;;;;;;;4285:23;4311:31;4330:11;4311:18;:31::i;:::-;4445:16;;;4459:1;4445:16;;;;;;;;;4499:25;;4285:57;;-1:-1:-1;4445:16:1;4499:25;4534:1151;4554:21;;;4534:1151;;4635:44;4682:29;4712:1;4682:32;;;;;;;;;;;;;;;;;;4635:79;;4728:35;;:::i;:::-;-1:-1:-1;4766:266:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:15;5181:54;;5094:191;;;;;;;;;;;;;;5364:20;5387:36;5414:8;5387:26;:36::i;:::-;5364:59;;5437:29;5469:53;5486:12;5500:18;5519:1;5500:21;;;;;;;;;;;;;;;;;;5469:16;:53::i;:::-;5437:85;-1:-1:-1;5621:53:1;:23;5437:85;5621:53;:30;:53;:::i;:::-;5595:79;-1:-1:-1;;4577:3:1;;;;;-1:-1:-1;4534:1151:1;;-1:-1:-1;;4534:1151:1;;-1:-1:-1;5801:41:1;:23;5832:9;5801:41;:30;:41;:::i;:::-;5884:13;;5775:67;;-1:-1:-1;5861:20:1;5907:573;5927:17;;;5907:573;;6043:9;;6078:1;;6043:6;;6050:1;;6043:9;;;;;;;;;;;;;;:23;;;:37;;;6039:84;;;6100:8;;6039:84;6214:23;6240:6;6247:1;6240:9;;;;;;;;;;;;;;;;;;;:29;;;;-1:-1:-1;6283:20:1;6306:49;:23;6240:29;6306:49;:32;:49;:::i;:::-;6283:72;;6394:15;6369:100;;;;;;;;;;;;;;;;5907:573;;;5946:3;;5907:573;;;;3713:2773;;;;;;;;;;:::o;8315:448:22:-;8399:13;8460:1;8449;:8;:12;8428:92;;;;;;;;;;;;;;;;8570:8;;8568:1;;8570:12;;;;8568:15;;;;;;;;;;8682:8;;8678:16;;8707:17;;;-1:-1:-1;8568:15:22;;;;;;;8315:448::o;13292:490::-;13413:14;13476:5;13484:2;13476:10;13464:1;:8;:22;;13443:107;;;;;;;;;;;;;;;;-1:-1:-1;13729:13:22;13631:2;13729:13;13723:20;;13292:490::o;6698:1760:1:-;6794:30;6840:15;6858:18;:4;6840:15;6858:18;:15;:18;:::i;:::-;6840:36;-1:-1:-1;6903:31:1;;;6915:19;6903:31;;:87;;-1:-1:-1;6950:40:1;;;6962:28;6950:40;6903:87;:142;;;-1:-1:-1;7006:39:1;;;7018:27;7006:39;6903:142;6886:1543;;;7106:27;;:::i;:::-;7179:11;;7165:26;;7179:4;;7176:1;;7165:26;:10;:26;:::i;:::-;7137:102;;;;;;;;;;;;;;7262:23;;;7283:1;7262:23;;;;;;;;;7105:134;;-1:-1:-1;7262:23:1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7253:32;;7311:5;7299:6;7306:1;7299:9;;;;;;;;;;;;;;;;;;:17;-1:-1:-1;6886:1543:1;;;7350:38;;;7362:26;7350:38;;:101;;-1:-1:-1;7404:47:1;;;7416:35;7404:47;7350:101;:163;;;-1:-1:-1;7467:46:1;;;7479:34;7467:46;7350:163;:217;;;-1:-1:-1;7529:38:1;;;7541:26;7529:38;7350:217;:280;;;-1:-1:-1;7583:47:1;;;7595:35;7583:47;7350:280;:335;;;-1:-1:-1;7646:39:1;;;7658:27;7646:39;7350:335;:399;;;-1:-1:-1;7701:48:1;;;7713:36;7701:48;7350:399;7333:1096;;;7898:11;;7884:26;;7898:4;;7895:1;;7884:26;:10;:26;:::i;:::-;7856:104;;;;;;;;;;;;;;7845:115;;7333:1096;;;7981:33;;;7993:21;7981:33;7977:452;;;8075:31;;:::i;:::-;8108:32;;:::i;:::-;8186:11;;8172:26;;8186:4;;8183:1;;8172:26;:10;:26;:::i;:::-;8144:118;;;;;;;;;;;;;;8324:23;;;8345:1;8324:23;;;;;;;;;8074:188;;-1:-1:-1;8074:188:1;;-1:-1:-1;8324:23:1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8315:32;;8373:9;8361:6;8368:1;8361:9;;;;;;;;;;;;;;;;;;:21;8396:9;;8408:10;;8396:6;;8403:1;;8396:9;;;;;;;;;;;;;;:22;-1:-1:-1;;7977:452:1;-1:-1:-1;6698:1760:1;;;:::o;1602:406:11:-;1715:23;1916:53;1934:34;1956:11;1934:21;:34::i;:::-;1916:17;:53::i;2006:259:9:-;2126:20;2177:52;2195:33;2219:8;2195:23;:33::i;1089:2103:21:-;1438:19;;1587:4;1581:11;1209:16;;1438:12;;1510:2;:23;;;1676:45;;;;;;1438:19;1504:30;2076:32;;;;2055:102;;;;;;;;;;;;;;2411:18;2398:10;:31;2394:273;;;2445:78;2462:10;2474:20;2496:26;2445:16;:78::i;:::-;2580:10;2564:26;;2631:12;2607:36;;2546:111;2735:1;2713:23;;;;2776:2;2746:32;;;;2832:26;2809:20;:49;2788:70;;2881:18;2868:31;;2991:18;2977:12;2970:40;3072:10;3066:4;3059:24;3141:15;3102:12;3136:1;3115:18;:22;3102:36;;;;;;;;;;:54;;;;:36;;;;;;;;;;:54;-1:-1:-1;3173:12:21;;-1:-1:-1;;;;;1089:2103:21;;;;:::o;3431:1034::-;3543:12;3686:2;3671:12;3665:19;3661:28;3799:2;3785:12;3781:21;3911:12;3891:18;3887:37;3985:18;3972:453;4011:16;4008:1;4005:23;3972:453;;;4130:1;4124:8;4226:12;4218:6;4215:24;4212:2;;;4316:1;4305:12;;4377:16;4372:21;;4212:2;-1:-1:-1;4042:2:21;4035:10;3972:453;;;-1:-1:-1;;;;3431:1034:21;;;;:::o;15595:687:22:-;15715:13;15777:5;15785:1;15777:9;15765:1;:8;:21;;15744:105;;;;;;;;;;;;;;;;-1:-1:-1;16023:13:22;15926:2;16023:13;16017:20;16176:66;16164:79;;15595:687::o;6453:617::-;6587:19;6643:10;;;;6622:83;;;;;;;;;;;;;;6742:8;;6736:14;;;6715:89;;;;;;;;;;;;;;6905:4;6900:2;:9;6890:20;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;6890:20:22;87:34:-1;135:17;;-1:-1;6890:20:22;;6881:29;;6920:120;6941:23;:6;:21;:23::i;:::-;6999:4;6978:18;:1;:16;:18::i;:::-;:25;7017:6;:13;6920:7;:120::i;:::-;6453:617;;;;;:::o;2255:1419:11:-;2489:16;;;;;2530;;2580:25;;;;;3004:11;;2989:13;;;2979:37;;;;3088:9;;992:66;3111:26;;3237:15;;;3230:29;;;;3382:42;3363:62;;;3346:15;;;3339:87;;;;2469:17;3464:15;;3457:33;3631:3;3613:22;;;2255:1419::o;1856:924:10:-;1950:14;2007:18;2319:2;2313:9;2351:66;2336:82;;2468:1;2456:14;;2449:40;;;;2586:2;2574:15;;2567:35;;;;2738:2;2720:21;;;1856:924::o;2605:1613:9:-;2858:29;;;;;2916:17;;2969:24;;;;;2822:33;3043:38;;;;3537:27;;3506:29;;;3496:69;;;;3641:9;;1085:66;3664:26;;3758:15;;;3751:33;;;;3839:15;;;3832:40;3927:15;;;3920:49;4036:3;4024:16;;4017:55;4175:3;4157:22;;2605:1613;;;:::o;1808:4337:22:-;1958:2;1949:6;:11;1945:4194;;;2247:1;2237:6;2233:2;2229:15;2224:3;2220:25;2216:33;2298:4;2294:9;2285:6;2279:13;2275:29;2347:4;2340;2334:11;2330:22;2388:1;2385;2382:8;2376:4;2369:22;2186:219;;;;;;2509:4;2499:6;:14;2495:59;;;2533:7;;2495:59;3243:4;3234:6;:13;3230:2899;;;3569:2;3561:6;3557:15;3547:25;;3617:6;3609;3605:19;3667:6;3661:4;3657:17;3974:4;3968:11;4242:198;4260:4;4252:6;4249:16;4242:198;;;4308:13;;4295:27;;4369:2;4405:13;;;;4357:15;;;;4242:198;;;4529:18;;-1:-1:-1;3276:1289:22;;;4810:2;4802:6;4798:15;4788:25;;4858:6;4850;4846:19;4908:6;4902:4;4898:17;5218:6;5212:13;5797:191;5814:4;5808;5804:15;5797:191;;;5862:11;;5849:25;;5907:13;;;;;5953;;;;5797:191;;;6078:19;;-1:-1:-1;;4612:1503:22;1808:4337;;;:::o;1341:228::-;1520:2;1509:14;;1341:228::o;837:227:0:-;;;;;;;;;-1:-1:-1;837:227:0;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;130:122;;208:39;239:6;233:13;208:39;;275:693;;390:4;378:17;;374:27;-1:-1;364:2;;415:1;412;405:12;364:2;452:6;439:20;474:85;489:69;551:6;489:69;;;474:85;;;587:21;;;631:4;619:17;;;;465:94;;-1:-1;644:14;;619:17;739:1;724:238;749:6;746:1;743:13;724:238;;;832:3;819:17;811:6;807:30;856:42;894:3;882:10;856:42;;;844:55;;-1:-1;922:4;913:14;;;;941;;;;;771:1;764:9;724:238;;1008:735;;1144:4;1132:17;;1128:27;-1:-1;1118:2;;1169:1;1166;1159:12;1118:2;1199:6;1193:13;1221:95;1236:79;1308:6;1236:79;;1221:95;1344:21;;;1388:4;1376:17;;;;1212:104;;-1:-1;1401:14;;1376:17;1496:1;1481:256;1506:6;1503:1;1500:13;1481:256;;;1582:3;1576:10;1568:6;1564:23;1606:67;1669:3;1657:10;1606:67;;;1594:80;;-1:-1;1697:4;1688:14;;;;1716;;;;;1528:1;1521:9;1481:256;;1783:735;;1912:4;1900:17;;1896:27;-1:-1;1886:2;;1937:1;1934;1927:12;1886:2;1974:6;1961:20;1996:99;2011:83;2087:6;2011:83;;1996:99;2123:21;;;2167:4;2155:17;;;;1987:108;;-1:-1;2180:14;;2155:17;2275:1;2260:252;2285:6;2282:1;2279:13;2260:252;;;2368:3;2355:17;2347:6;2343:30;2392:56;2444:3;2432:10;2392:56;;;2380:69;;-1:-1;2472:4;2463:14;;;;2491;;;;;2307:1;2300:9;2260:252;;2544:707;;2654:4;2642:17;;2638:27;-1:-1;2628:2;;2679:1;2676;2669:12;2628:2;2716:6;2703:20;2738:80;2753:64;2810:6;2753:64;;2738:80;2729:89;;2835:5;2860:6;2853:5;2846:21;2890:4;2882:6;2878:17;2868:27;;2912:4;2907:3;2903:14;2896:21;;2965:6;3012:3;3004:4;2996:6;2992:17;2987:3;2983:27;2980:36;2977:2;;;3029:1;3026;3019:12;2977:2;3054:1;3039:206;3064:6;3061:1;3058:13;3039:206;;;3122:3;3144:37;3177:3;3165:10;3144:37;;;3132:50;;-1:-1;3205:4;3196:14;;;;3224;;;;;3086:1;3079:9;3039:206;;3259:118;;3326:46;3364:6;3351:20;3326:46;;3385:432;;3475:4;3463:17;;3459:27;-1:-1;3449:2;;3500:1;3497;3490:12;3449:2;3537:6;3524:20;3559:60;3574:44;3611:6;3574:44;;3559:60;3550:69;;3639:6;3632:5;3625:21;3675:4;3667:6;3663:17;3708:4;3701:5;3697:16;3743:3;3734:6;3729:3;3725:16;3722:25;3719:2;;;3760:1;3757;3750:12;3719:2;3770:41;3804:6;3799:3;3794;3770:41;;;3442:375;;;;;;;;3826:434;;3927:4;3915:17;;3911:27;-1:-1;3901:2;;3952:1;3949;3942:12;3901:2;3982:6;3976:13;4004:60;4019:44;4056:6;4019:44;;4004:60;3995:69;;4084:6;4077:5;4070:21;4120:4;4112:6;4108:17;4153:4;4146:5;4142:16;4188:3;4179:6;4174:3;4170:16;4167:25;4164:2;;;4205:1;4202;4195:12;4164:2;4215:39;4247:6;4242:3;4237;4215:39;;4745:2205;;4853:5;4841:9;4836:3;4832:19;4828:31;4825:2;;;4872:1;4869;4862:12;4825:2;4890:21;4905:5;4890:21;;;4881:30;-1:-1;4969:1;5000:49;5045:3;5025:9;5000:49;;;4976:74;;-1:-1;5119:2;5152:49;5197:3;5173:22;;;5152:49;;;5145:4;5138:5;5134:16;5127:75;5071:142;5278:2;5311:49;5356:3;5347:6;5336:9;5332:22;5311:49;;;5304:4;5297:5;5293:16;5286:75;5223:149;5431:2;5464:49;5509:3;5500:6;5489:9;5485:22;5464:49;;;5457:4;5450:5;5446:16;5439:75;5382:143;5587:3;5621:49;5666:3;5657:6;5646:9;5642:22;5621:49;;;5614:4;5607:5;5603:16;5596:75;5535:147;5744:3;5778:49;5823:3;5814:6;5803:9;5799:22;5778:49;;;5771:4;5764:5;5760:16;5753:75;5692:147;5893:3;5927:49;5972:3;5963:6;5952:9;5948:22;5927:49;;;5920:4;5913:5;5909:16;5902:75;5849:139;6042:3;6076:49;6121:3;6112:6;6101:9;6097:22;6076:49;;;6069:4;6062:5;6058:16;6051:75;5998:139;6204:3;6239:49;6284:3;6275:6;6264:9;6260:22;6239:49;;;6231:5;6224;6220:17;6213:76;6147:153;6350:3;6385:49;6430:3;6421:6;6410:9;6406:22;6385:49;;;6377:5;6370;6366:17;6359:76;6310:136;6534:3;6523:9;6519:19;6506:33;6559:18;6551:6;6548:30;6545:2;;;6591:1;6588;6581:12;6545:2;6627:54;6677:3;6668:6;6657:9;6653:22;6627:54;;;6619:5;6612;6608:17;6601:81;6456:237;6781:3;6770:9;6766:19;6753:33;6806:18;6798:6;6795:30;6792:2;;;6838:1;6835;6828:12;6792:2;6874:54;6924:3;6915:6;6904:9;6900:22;6874:54;;;6866:5;6859;6855:17;6848:81;6703:237;4819:2131;;;;;6985:2334;;7104:5;7092:9;7087:3;7083:19;7079:31;7076:2;;;7123:1;7120;7113:12;7076:2;7141:21;7156:5;7141:21;;;7132:30;-1:-1;7220:1;7251:60;7307:3;7287:9;7251:60;;;7227:85;;-1:-1;7381:2;7414:60;7470:3;7446:22;;;7414:60;;;7407:4;7400:5;7396:16;7389:86;7333:153;7551:2;7584:60;7640:3;7631:6;7620:9;7616:22;7584:60;;;7577:4;7570:5;7566:16;7559:86;7496:160;7715:2;7748:60;7804:3;7795:6;7784:9;7780:22;7748:60;;;7741:4;7734:5;7730:16;7723:86;7666:154;7882:3;7916:60;7972:3;7963:6;7952:9;7948:22;7916:60;;;7909:4;7902:5;7898:16;7891:86;7830:158;8050:3;8084:60;8140:3;8131:6;8120:9;8116:22;8084:60;;;8077:4;8070:5;8066:16;8059:86;7998:158;8210:3;8244:60;8300:3;8291:6;8280:9;8276:22;8244:60;;;8237:4;8230:5;8226:16;8219:86;8166:150;8370:3;8404:60;8460:3;8451:6;8440:9;8436:22;8404:60;;;8397:4;8390:5;8386:16;8379:86;8326:150;8543:3;8578:60;8634:3;8625:6;8614:9;8610:22;8578:60;;;8570:5;8563;8559:17;8552:87;8486:164;8700:3;8735:60;8791:3;8782:6;8771:9;8767:22;8735:60;;;8727:5;8720;8716:17;8709:87;8660:147;8888:3;8877:9;8873:19;8867:26;8913:18;8905:6;8902:30;8899:2;;;8945:1;8942;8935:12;8899:2;8981:65;9042:3;9033:6;9022:9;9018:22;8981:65;;;8973:5;8966;8962:17;8955:92;8817:241;9139:3;9128:9;9124:19;9118:26;9164:18;9156:6;9153:30;9150:2;;;9196:1;9193;9186:12;9150:2;9232:65;9293:3;9284:6;9273:9;9269:22;9232:65;;9378:719;;9501:4;9489:9;9484:3;9480:19;9476:30;9473:2;;;9519:1;9516;9509:12;9473:2;9537:20;9552:4;9537:20;;;9528:29;-1:-1;9607:1;9638:49;9683:3;9663:9;9638:49;;;9614:74;;-1:-1;9758:2;9791:49;9836:3;9812:22;;;9791:49;;;9784:4;9777:5;9773:16;9766:75;9709:143;9930:2;9919:9;9915:18;9902:32;9954:18;9946:6;9943:30;9940:2;;;9986:1;9983;9976:12;9940:2;10021:54;10071:3;10062:6;10051:9;10047:22;10021:54;;;10014:4;10007:5;10003:16;9996:80;9862:225;9467:630;;;;;10229:122;;10307:39;10338:6;10332:13;10307:39;;10358:422;;10513:2;10501:9;10492:7;10488:23;10484:32;10481:2;;;10529:1;10526;10519:12;10481:2;10564:24;;10608:18;10597:30;;10594:2;;;10640:1;10637;10630:12;10594:2;10660:104;10756:7;10747:6;10736:9;10732:22;10660:104;;;10650:114;10475:305;-1:-1;;;;10475:305;10787:470;;;10917:2;10905:9;10896:7;10892:23;10888:32;10885:2;;;10933:1;10930;10923:12;10885:2;10968:1;10985:53;11030:7;11010:9;10985:53;;;10975:63;;10947:97;11103:2;11092:9;11088:18;11075:32;11127:18;11119:6;11116:30;11113:2;;;11159:1;11156;11149:12;11113:2;11179:62;11233:7;11224:6;11213:9;11209:22;11179:62;;;11169:72;;11054:193;10879:378;;;;;;11264:380;;11398:2;11386:9;11377:7;11373:23;11369:32;11366:2;;;11414:1;11411;11404:12;11366:2;11449:24;;11493:18;11482:30;;11479:2;;;11525:1;11522;11515:12;11479:2;11545:83;11620:7;11611:6;11600:9;11596:22;11545:83;;11651:633;;;11821:2;11809:9;11800:7;11796:23;11792:32;11789:2;;;11837:1;11834;11827:12;11789:2;11872:24;;11916:18;11905:30;;11902:2;;;11948:1;11945;11938:12;11902:2;11968:83;12043:7;12034:6;12023:9;12019:22;11968:83;;;11958:93;;11851:206;12109:2;12098:9;12094:18;12088:25;12133:18;12125:6;12122:30;12119:2;;;12165:1;12162;12155:12;12119:2;12185:83;12260:7;12251:6;12240:9;12236:22;12185:83;;12291:1283;;;;;;12561:3;12549:9;12540:7;12536:23;12532:33;12529:2;;;12578:1;12575;12568:12;12529:2;12613:31;;12664:18;12653:30;;12650:2;;;12696:1;12693;12686:12;12650:2;12716:87;12795:7;12786:6;12775:9;12771:22;12716:87;;;12706:97;;12592:217;12840:2;12858:53;12903:7;12894:6;12883:9;12879:22;12858:53;;;12848:63;;12819:98;12976:2;12965:9;12961:18;12948:32;13000:18;12992:6;12989:30;12986:2;;;13032:1;13029;13022:12;12986:2;13052:62;13106:7;13097:6;13086:9;13082:22;13052:62;;;13042:72;;12927:193;13179:2;13168:9;13164:18;13151:32;13203:18;13195:6;13192:30;13189:2;;;13235:1;13232;13225:12;13189:2;13255:78;13325:7;13316:6;13305:9;13301:22;13255:78;;;13245:88;;13130:209;13398:3;13387:9;13383:19;13370:33;13423:18;13415:6;13412:30;13409:2;;;13455:1;13452;13445:12;13409:2;13475:83;13550:7;13541:6;13530:9;13526:22;13475:83;;;13465:93;;13349:215;12523:1051;;;;;;;;;13581:1583;;;;;;;13912:3;13900:9;13891:7;13887:23;13883:33;13880:2;;;13929:1;13926;13919:12;13880:2;13964:31;;14015:18;14004:30;;14001:2;;;14047:1;14044;14037:12;14001:2;14067:87;14146:7;14137:6;14126:9;14122:22;14067:87;;;14057:97;;13943:217;14219:2;14208:9;14204:18;14191:32;14243:18;14235:6;14232:30;14229:2;;;14275:1;14272;14265:12;14229:2;14295:97;14384:7;14375:6;14364:9;14360:22;14295:97;;;14285:107;;14170:228;14429:2;14447:53;14492:7;14483:6;14472:9;14468:22;14447:53;;;14437:63;;14408:98;14565:2;14554:9;14550:18;14537:32;14589:18;14581:6;14578:30;14575:2;;;14621:1;14618;14611:12;14575:2;14641:62;14695:7;14686:6;14675:9;14671:22;14641:62;;;14631:72;;14516:193;14768:3;14757:9;14753:19;14740:33;14793:18;14785:6;14782:30;14779:2;;;14825:1;14822;14815:12;14779:2;14845:78;14915:7;14906:6;14895:9;14891:22;14845:78;;;14835:88;;14719:210;14988:3;14977:9;14973:19;14960:33;15013:18;15005:6;15002:30;14999:2;;;15045:1;15042;15035:12;14999:2;15065:83;15140:7;15131:6;15120:9;15116:22;15065:83;;;15055:93;;14939:215;13874:1290;;;;;;;;;15171:120;15254:31;15279:5;15254:31;;;15249:3;15242:44;15236:55;;;15298:120;15381:31;15406:5;15381:31;;15425:307;;15535:38;15567:5;15535:38;;;15590:6;15585:3;15578:19;15602:63;15658:6;15651:4;15646:3;15642:14;15635:4;15628:5;15624:16;15602:63;;;15697:29;15719:6;15697:29;;;15677:50;;;15690:4;15677:50;;15515:217;-1:-1;;;15515:217;16046:306;16211:2;16199:15;;16248:66;16243:2;16234:12;;16227:88;16343:2;16334:12;;16192:160;16361:306;16526:2;16514:15;;16563:66;16558:2;16549:12;;16542:88;16658:2;16649:12;;16507:160;16676:306;16841:2;16829:15;;16878:66;16873:2;16864:12;;16857:88;16973:2;16964:12;;16822:160;16991:306;17156:2;17144:15;;17193:66;17188:2;17179:12;;17172:88;17288:2;17279:12;;17137:160;17306:306;17471:2;17459:15;;17508:66;17503:2;17494:12;;17487:88;17603:2;17594:12;;17452:160;17621:306;17786:2;17774:15;;17823:66;17818:2;17809:12;;17802:88;17918:2;17909:12;;17767:160;17936:407;18101:2;18089:15;;18138:66;18133:2;18124:12;;18117:88;18239:66;18234:2;18225:12;;18218:88;18334:2;18325:12;;18082:261;18352:306;18517:2;18505:15;;18554:66;18549:2;18540:12;;18533:88;18649:2;18640:12;;18498:160;18667:306;18832:2;18820:15;;18869:66;18864:2;18855:12;;18848:88;18964:2;18955:12;;18813:160;18982:407;19147:2;19135:15;;19184:66;19179:2;19170:12;;19163:88;19285:66;19280:2;19271:12;;19264:88;19380:2;19371:12;;19128:261;19398:306;19563:2;19551:15;;19600:66;19595:2;19586:12;;19579:88;19695:2;19686:12;;19544:160;19713:306;19878:2;19866:15;;19915:66;19910:2;19901:12;;19894:88;20010:2;20001:12;;19859:160;20028:407;20193:2;20181:15;;20230:66;20225:2;20216:12;;20209:88;20331:66;20326:2;20317:12;;20310:88;20426:2;20417:12;;20174:261;20570:213;20688:2;20673:18;;20702:71;20677:9;20746:6;20702:71;;20790:213;20908:2;20893:18;;20922:71;20897:9;20966:6;20922:71;;21010:407;21201:2;21215:47;;;21186:18;;21276:131;21186:18;21276:131;;21424:407;21615:2;21629:47;;;21600:18;;21690:131;21600:18;21690:131;;21838:407;22029:2;22043:47;;;22014:18;;22104:131;22014:18;22104:131;;22252:407;22443:2;22457:47;;;22428:18;;22518:131;22428:18;22518:131;;22666:407;22857:2;22871:47;;;22842:18;;22932:131;22842:18;22932:131;;23080:407;23271:2;23285:47;;;23256:18;;23346:131;23256:18;23346:131;;23494:407;23685:2;23699:47;;;23670:18;;23760:131;23670:18;23760:131;;23908:407;24099:2;24113:47;;;24084:18;;24174:131;24084:18;24174:131;;24322:407;24513:2;24527:47;;;24498:18;;24588:131;24498:18;24588:131;;24736:407;24927:2;24941:47;;;24912:18;;25002:131;24912:18;25002:131;;25150:407;25341:2;25355:47;;;25326:18;;25416:131;25326:18;25416:131;;25564:407;25755:2;25769:47;;;25740:18;;25830:131;25740:18;25830:131;;25978:407;26169:2;26183:47;;;26154:18;;26244:131;26154:18;26244:131;;26392:707;26626:3;26611:19;;26641:71;26615:9;26685:6;26641:71;;;26723:72;26791:2;26780:9;26776:18;26767:6;26723:72;;;26843:9;26837:4;26833:20;26828:2;26817:9;26813:18;26806:48;26868:72;26935:4;26926:6;26868:72;;;26860:80;;26988:9;26982:4;26978:20;26973:2;26962:9;26958:18;26951:48;27013:76;27084:4;27075:6;27013:76;;;27005:84;26597:502;-1:-1;;;;;;26597:502;27106:256;27168:2;27162:9;27194:17;;;27269:18;27254:34;;27290:22;;;27251:62;27248:2;;;27326:1;27323;27316:12;27248:2;27342;27335:22;27146:216;;-1:-1;27146:216;27369:263;;27533:18;27525:6;27522:30;27519:2;;;27565:1;27562;27555:12;27519:2;-1:-1;27594:4;27582:17;;;27612:15;;27456:176;28468:254;;28607:18;28599:6;28596:30;28593:2;;;28639:1;28636;28629:12;28593:2;-1:-1;28712:4;28683;28660:17;;;;28679:9;28656:33;28702:15;;28530:192;28994:87;29064:12;;29048:33;29186:105;;29255:31;29280:5;29255:31;;29298:79;29367:5;29350:27;29384:128;29464:42;29453:54;;29436:76;29890:145;29971:6;29966:3;29961;29948:30;-1:-1;30027:1;30009:16;;30002:27;29941:94;30044:268;30109:1;30116:101;30130:6;30127:1;30124:13;30116:101;;;30197:11;;;30191:18;30178:11;;;30171:39;30152:2;30145:10;30116:101;;;30232:6;30229:1;30226:13;30223:2;;;30297:1;30288:6;30283:3;30279:16;30272:27;30223:2;30093:219;;;;;30320:97;30408:2;30388:14;30404:7;30384:28;;30368:49" + } + } + }, + "sources": { + "src/Coordinator.sol": { + "id": 0 + }, + "src/libs/LibConstants.sol": { + "id": 8 + }, + "src/interfaces/ITransactions.sol": { + "id": 7 + }, + "src/MixinSignatureValidator.sol": { + "id": 3 + }, + "@0x/contracts-utils/contracts/src/LibBytes.sol": { + "id": 22 + }, + "src/mixins/MSignatureValidator.sol": { + "id": 13 + }, + "src/interfaces/ISignatureValidator.sol": { + "id": 6 + }, + "src/MixinCoordinatorApprovalVerifier.sol": { + "id": 1 + }, + "@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol": { + "id": 19 + }, + "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol": { + "id": 20 + }, + "@0x/contracts-exchange-libs/contracts/src/LibEIP712.sol": { + "id": 18 + }, + "@0x/contracts-utils/contracts/src/LibAddressArray.sol": { + "id": 21 + }, + "src/libs/LibCoordinatorApproval.sol": { + "id": 9 + }, + "src/libs/LibEIP712Domain.sol": { + "id": 10 + }, + "src/libs/LibZeroExTransaction.sol": { + "id": 11 + }, + "src/mixins/MCoordinatorApprovalVerifier.sol": { + "id": 12 + }, + "src/interfaces/ICoordinatorApprovalVerifier.sol": { + "id": 4 + }, + "src/MixinCoordinatorCore.sol": { + "id": 2 + }, + "src/interfaces/ICoordinatorCore.sol": { + "id": 5 + } + }, + "sourceCodes": { + "src/Coordinator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"./libs/LibConstants.sol\";\nimport \"./MixinSignatureValidator.sol\";\nimport \"./MixinCoordinatorApprovalVerifier.sol\";\nimport \"./MixinCoordinatorCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract Coordinator is\n LibConstants,\n MixinSignatureValidator,\n MixinCoordinatorApprovalVerifier,\n MixinCoordinatorCore\n{\n constructor (address _exchange)\n public\n LibConstants(_exchange)\n {}\n}\n", + "src/libs/LibConstants.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"../interfaces/ITransactions.sol\";\n\n\ncontract LibConstants {\n\n // solhint-disable-next-line var-name-mixedcase\n ITransactions internal EXCHANGE;\n\n constructor (address _exchange)\n public\n {\n EXCHANGE = ITransactions(_exchange);\n }\n}\n", + "src/interfaces/ITransactions.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\npragma solidity ^0.5.3;\n\n\ncontract ITransactions {\n\n /// @dev Executes an exchange method call in the context of signer.\n /// @param salt Arbitrary number to ensure uniqueness of transaction hash.\n /// @param signerAddress Address of transaction signer.\n /// @param data AbiV2 encoded calldata.\n /// @param signature Proof of signer transaction by signer.\n function executeTransaction(\n uint256 salt,\n address signerAddress,\n bytes calldata data,\n bytes calldata signature\n )\n external;\n}\n", + "src/MixinSignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"@0x/contracts-utils/contracts/src/LibBytes.sol\";\nimport \"./mixins/MSignatureValidator.sol\";\n\n\ncontract MixinSignatureValidator is\n MSignatureValidator\n{\n using LibBytes for bytes;\n\n /// @dev Recovers the address of a signer given a hash and signature.\n /// @param hash Any 32 byte hash.\n /// @param signature Proof that the hash has been signed by signer.\n function getSignerAddress(bytes32 hash, bytes memory signature)\n public\n pure\n returns (address signerAddress)\n {\n require(\n signature.length > 0,\n \"LENGTH_GREATER_THAN_0_REQUIRED\"\n );\n\n // Pop last byte off of signature byte array.\n uint8 signatureTypeRaw = uint8(signature.popLastByte());\n\n // Ensure signature is supported\n require(\n signatureTypeRaw < uint8(SignatureType.NSignatureTypes),\n \"SIGNATURE_UNSUPPORTED\"\n );\n\n SignatureType signatureType = SignatureType(signatureTypeRaw);\n\n // Always illegal signature.\n // This is always an implicit option since a signer can create a\n // signature array with invalid type or length. We may as well make\n // it an explicit option. This aids testing and analysis. It is\n // also the initialization value for the enum type.\n if (signatureType == SignatureType.Illegal) {\n revert(\"SIGNATURE_ILLEGAL\");\n\n // Signature using EIP712\n } else if (signatureType == SignatureType.EIP712) {\n require(\n signature.length == 65,\n \"LENGTH_65_REQUIRED\"\n );\n uint8 v = uint8(signature[0]);\n bytes32 r = signature.readBytes32(1);\n bytes32 s = signature.readBytes32(33);\n signerAddress = ecrecover(\n hash,\n v,\n r,\n s\n );\n return signerAddress;\n\n // Signed using web3.eth_sign\n } else if (signatureType == SignatureType.EthSign) {\n require(\n signature.length == 65,\n \"LENGTH_65_REQUIRED\"\n );\n uint8 v = uint8(signature[0]);\n bytes32 r = signature.readBytes32(1);\n bytes32 s = signature.readBytes32(33);\n signerAddress = ecrecover(\n keccak256(abi.encodePacked(\n \"\\x19Ethereum Signed Message:\\n32\",\n hash\n )),\n v,\n r,\n s\n );\n return signerAddress;\n }\n\n // Anything else is illegal (We do not return false because\n // the signature may actually be valid, just not in a format\n // that we currently support. In this case returning false\n // may lead the caller to incorrectly believe that the\n // signature was invalid.)\n revert(\"SIGNATURE_UNSUPPORTED\");\n }\n}\n", + "@0x/contracts-utils/contracts/src/LibBytes.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\nlibrary LibBytes {\n\n using LibBytes for bytes;\n\n /// @dev Gets the memory address for a byte array.\n /// @param input Byte array to lookup.\n /// @return memoryAddress Memory address of byte array. This\n /// points to the header of the byte array which contains\n /// the length.\n function rawAddress(bytes memory input)\n internal\n pure\n returns (uint256 memoryAddress)\n {\n assembly {\n memoryAddress := input\n }\n return memoryAddress;\n }\n \n /// @dev Gets the memory address for the contents of a byte array.\n /// @param input Byte array to lookup.\n /// @return memoryAddress Memory address of the contents of the byte array.\n function contentAddress(bytes memory input)\n internal\n pure\n returns (uint256 memoryAddress)\n {\n assembly {\n memoryAddress := add(input, 32)\n }\n return memoryAddress;\n }\n\n /// @dev Copies `length` bytes from memory location `source` to `dest`.\n /// @param dest memory address to copy bytes to.\n /// @param source memory address to copy bytes from.\n /// @param length number of bytes to copy.\n function memCopy(\n uint256 dest,\n uint256 source,\n uint256 length\n )\n internal\n pure\n {\n if (length < 32) {\n // Handle a partial word by reading destination and masking\n // off the bits we are interested in.\n // This correctly handles overlap, zero lengths and source == dest\n assembly {\n let mask := sub(exp(256, sub(32, length)), 1)\n let s := and(mload(source), not(mask))\n let d := and(mload(dest), mask)\n mstore(dest, or(s, d))\n }\n } else {\n // Skip the O(length) loop when source == dest.\n if (source == dest) {\n return;\n }\n\n // For large copies we copy whole words at a time. The final\n // word is aligned to the end of the range (instead of after the\n // previous) to handle partial words. So a copy will look like this:\n //\n // ####\n // ####\n // ####\n // ####\n //\n // We handle overlap in the source and destination range by\n // changing the copying direction. This prevents us from\n // overwriting parts of source that we still need to copy.\n //\n // This correctly handles source == dest\n //\n if (source > dest) {\n assembly {\n // We subtract 32 from `sEnd` and `dEnd` because it\n // is easier to compare with in the loop, and these\n // are also the addresses we need for copying the\n // last bytes.\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n\n // Remember the last 32 bytes of source\n // This needs to be done here and not after the loop\n // because we may have overwritten the last bytes in\n // source already due to overlap.\n let last := mload(sEnd)\n\n // Copy whole words front to back\n // Note: the first check is always true,\n // this could have been a do-while loop.\n // solhint-disable-next-line no-empty-blocks\n for {} lt(source, sEnd) {} {\n mstore(dest, mload(source))\n source := add(source, 32)\n dest := add(dest, 32)\n }\n \n // Write the last 32 bytes\n mstore(dEnd, last)\n }\n } else {\n assembly {\n // We subtract 32 from `sEnd` and `dEnd` because those\n // are the starting points when copying a word at the end.\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n\n // Remember the first 32 bytes of source\n // This needs to be done here and not after the loop\n // because we may have overwritten the first bytes in\n // source already due to overlap.\n let first := mload(source)\n\n // Copy whole words back to front\n // We use a signed comparisson here to allow dEnd to become\n // negative (happens when source and dest < 32). Valid\n // addresses in local memory will never be larger than\n // 2**255, so they can be safely re-interpreted as signed.\n // Note: the first check is always true,\n // this could have been a do-while loop.\n // solhint-disable-next-line no-empty-blocks\n for {} slt(dest, dEnd) {} {\n mstore(dEnd, mload(sEnd))\n sEnd := sub(sEnd, 32)\n dEnd := sub(dEnd, 32)\n }\n \n // Write the first 32 bytes\n mstore(dest, first)\n }\n }\n }\n }\n\n /// @dev Returns a slices from a byte array.\n /// @param b The byte array to take a slice from.\n /// @param from The starting index for the slice (inclusive).\n /// @param to The final index for the slice (exclusive).\n /// @return result The slice containing bytes at indices [from, to)\n function slice(\n bytes memory b,\n uint256 from,\n uint256 to\n )\n internal\n pure\n returns (bytes memory result)\n {\n require(\n from <= to,\n \"FROM_LESS_THAN_TO_REQUIRED\"\n );\n require(\n to <= b.length,\n \"TO_LESS_THAN_LENGTH_REQUIRED\"\n );\n \n // Create a new bytes structure and copy contents\n result = new bytes(to - from);\n memCopy(\n result.contentAddress(),\n b.contentAddress() + from,\n result.length\n );\n return result;\n }\n \n /// @dev Returns a slice from a byte array without preserving the input.\n /// @param b The byte array to take a slice from. Will be destroyed in the process.\n /// @param from The starting index for the slice (inclusive).\n /// @param to The final index for the slice (exclusive).\n /// @return result The slice containing bytes at indices [from, to)\n /// @dev When `from == 0`, the original array will match the slice. In other cases its state will be corrupted.\n function sliceDestructive(\n bytes memory b,\n uint256 from,\n uint256 to\n )\n internal\n pure\n returns (bytes memory result)\n {\n require(\n from <= to,\n \"FROM_LESS_THAN_TO_REQUIRED\"\n );\n require(\n to <= b.length,\n \"TO_LESS_THAN_LENGTH_REQUIRED\"\n );\n \n // Create a new bytes structure around [from, to) in-place.\n assembly {\n result := add(b, from)\n mstore(result, sub(to, from))\n }\n return result;\n }\n\n /// @dev Pops the last byte off of a byte array by modifying its length.\n /// @param b Byte array that will be modified.\n /// @return The byte that was popped off.\n function popLastByte(bytes memory b)\n internal\n pure\n returns (bytes1 result)\n {\n require(\n b.length > 0,\n \"GREATER_THAN_ZERO_LENGTH_REQUIRED\"\n );\n\n // Store last byte.\n result = b[b.length - 1];\n\n assembly {\n // Decrement length of byte array.\n let newLen := sub(mload(b), 1)\n mstore(b, newLen)\n }\n return result;\n }\n\n /// @dev Pops the last 20 bytes off of a byte array by modifying its length.\n /// @param b Byte array that will be modified.\n /// @return The 20 byte address that was popped off.\n function popLast20Bytes(bytes memory b)\n internal\n pure\n returns (address result)\n {\n require(\n b.length >= 20,\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Store last 20 bytes.\n result = readAddress(b, b.length - 20);\n\n assembly {\n // Subtract 20 from byte array length.\n let newLen := sub(mload(b), 20)\n mstore(b, newLen)\n }\n return result;\n }\n\n /// @dev Tests equality of two byte arrays.\n /// @param lhs First byte array to compare.\n /// @param rhs Second byte array to compare.\n /// @return True if arrays are the same. False otherwise.\n function equals(\n bytes memory lhs,\n bytes memory rhs\n )\n internal\n pure\n returns (bool equal)\n {\n // Keccak gas cost is 30 + numWords * 6. This is a cheap way to compare.\n // We early exit on unequal lengths, but keccak would also correctly\n // handle this.\n return lhs.length == rhs.length && keccak256(lhs) == keccak256(rhs);\n }\n\n /// @dev Reads an address from a position in a byte array.\n /// @param b Byte array containing an address.\n /// @param index Index in byte array of address.\n /// @return address from byte array.\n function readAddress(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (address result)\n {\n require(\n b.length >= index + 20, // 20 is length of address\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Add offset to index:\n // 1. Arrays are prefixed by 32-byte length parameter (add 32 to index)\n // 2. Account for size difference between address length and 32-byte storage word (subtract 12 from index)\n index += 20;\n\n // Read address from array memory\n assembly {\n // 1. Add index to address of bytes array\n // 2. Load 32-byte word from memory\n // 3. Apply 20-byte mask to obtain address\n result := and(mload(add(b, index)), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n return result;\n }\n\n /// @dev Writes an address into a specific position in a byte array.\n /// @param b Byte array to insert address into.\n /// @param index Index in byte array of address.\n /// @param input Address to put into byte array.\n function writeAddress(\n bytes memory b,\n uint256 index,\n address input\n )\n internal\n pure\n {\n require(\n b.length >= index + 20, // 20 is length of address\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Add offset to index:\n // 1. Arrays are prefixed by 32-byte length parameter (add 32 to index)\n // 2. Account for size difference between address length and 32-byte storage word (subtract 12 from index)\n index += 20;\n\n // Store address into array memory\n assembly {\n // The address occupies 20 bytes and mstore stores 32 bytes.\n // First fetch the 32-byte word where we'll be storing the address, then\n // apply a mask so we have only the bytes in the word that the address will not occupy.\n // Then combine these bytes with the address and store the 32 bytes back to memory with mstore.\n\n // 1. Add index to address of bytes array\n // 2. Load 32-byte word from memory\n // 3. Apply 12-byte mask to obtain extra bytes occupying word of memory where we'll store the address\n let neighbors := and(\n mload(add(b, index)),\n 0xffffffffffffffffffffffff0000000000000000000000000000000000000000\n )\n \n // Make sure input address is clean.\n // (Solidity does not guarantee this)\n input := and(input, 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Store the neighbors and address into memory\n mstore(add(b, index), xor(input, neighbors))\n }\n }\n\n /// @dev Reads a bytes32 value from a position in a byte array.\n /// @param b Byte array containing a bytes32 value.\n /// @param index Index in byte array of bytes32 value.\n /// @return bytes32 value from byte array.\n function readBytes32(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes32 result)\n {\n require(\n b.length >= index + 32,\n \"GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 256 bit length parameter\n index += 32;\n\n // Read the bytes32 from array memory\n assembly {\n result := mload(add(b, index))\n }\n return result;\n }\n\n /// @dev Writes a bytes32 into a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input bytes32 to put into byte array.\n function writeBytes32(\n bytes memory b,\n uint256 index,\n bytes32 input\n )\n internal\n pure\n {\n require(\n b.length >= index + 32,\n \"GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 256 bit length parameter\n index += 32;\n\n // Read the bytes32 from array memory\n assembly {\n mstore(add(b, index), input)\n }\n }\n\n /// @dev Reads a uint256 value from a position in a byte array.\n /// @param b Byte array containing a uint256 value.\n /// @param index Index in byte array of uint256 value.\n /// @return uint256 value from byte array.\n function readUint256(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (uint256 result)\n {\n result = uint256(readBytes32(b, index));\n return result;\n }\n\n /// @dev Writes a uint256 into a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input uint256 to put into byte array.\n function writeUint256(\n bytes memory b,\n uint256 index,\n uint256 input\n )\n internal\n pure\n {\n writeBytes32(b, index, bytes32(input));\n }\n\n /// @dev Reads an unpadded bytes4 value from a position in a byte array.\n /// @param b Byte array containing a bytes4 value.\n /// @param index Index in byte array of bytes4 value.\n /// @return bytes4 value from byte array.\n function readBytes4(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes4 result)\n {\n require(\n b.length >= index + 4,\n \"GREATER_OR_EQUAL_TO_4_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 32 byte length field\n index += 32;\n\n // Read the bytes4 from array memory\n assembly {\n result := mload(add(b, index))\n // Solidity does not require us to clean the trailing bytes.\n // We do it anyway\n result := and(result, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)\n }\n return result;\n }\n\n /// @dev Reads nested bytes from a specific position.\n /// @dev NOTE: the returned value overlaps with the input value.\n /// Both should be treated as immutable.\n /// @param b Byte array containing nested bytes.\n /// @param index Index of nested bytes.\n /// @return result Nested bytes.\n function readBytesWithLength(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes memory result)\n {\n // Read length of nested bytes\n uint256 nestedBytesLength = readUint256(b, index);\n index += 32;\n\n // Assert length of is valid, given\n // length of nested bytes\n require(\n b.length >= index + nestedBytesLength,\n \"GREATER_OR_EQUAL_TO_NESTED_BYTES_LENGTH_REQUIRED\"\n );\n \n // Return a pointer to the byte array as it exists inside `b`\n assembly {\n result := add(b, index)\n }\n return result;\n }\n\n /// @dev Inserts bytes at a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input bytes to insert.\n function writeBytesWithLength(\n bytes memory b,\n uint256 index,\n bytes memory input\n )\n internal\n pure\n {\n // Assert length of is valid, given\n // length of input\n require(\n b.length >= index + 32 + input.length, // 32 bytes to store length\n \"GREATER_OR_EQUAL_TO_NESTED_BYTES_LENGTH_REQUIRED\"\n );\n\n // Copy into \n memCopy(\n b.contentAddress() + index,\n input.rawAddress(), // includes length of \n input.length + 32 // +32 bytes to store length\n );\n }\n\n /// @dev Performs a deep copy of a byte array onto another byte array of greater than or equal length.\n /// @param dest Byte array that will be overwritten with source bytes.\n /// @param source Byte array to copy onto dest bytes.\n function deepCopyBytes(\n bytes memory dest,\n bytes memory source\n )\n internal\n pure\n {\n uint256 sourceLen = source.length;\n // Dest length must be >= source length, or some bytes would not be copied.\n require(\n dest.length >= sourceLen,\n \"GREATER_OR_EQUAL_TO_SOURCE_BYTES_LENGTH_REQUIRED\"\n );\n memCopy(\n dest.contentAddress(),\n source.contentAddress(),\n sourceLen\n );\n }\n}\n", + "src/mixins/MSignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"../interfaces/ISignatureValidator.sol\";\n\n\ncontract MSignatureValidator is\n ISignatureValidator\n{\n // Allowed signature types.\n enum SignatureType {\n Illegal, // 0x00, default value\n EIP712, // 0x01\n EthSign, // 0x02\n NSignatureTypes // 0x03, number of signature types. Always leave at end.\n }\n}\n", + "src/interfaces/ISignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract ISignatureValidator {\n\n /// @dev Recovers the address of a signer given a hash and signature.\n /// @param hash Any 32 byte hash.\n /// @param signature Proof that the hash has been signed by signer.\n function getSignerAddress(bytes32 hash, bytes memory signature)\n public\n pure\n returns (address signerAddress);\n}\n", + "src/MixinCoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol\";\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"@0x/contracts-utils/contracts/src/LibBytes.sol\";\nimport \"@0x/contracts-utils/contracts/src/LibAddressArray.sol\";\nimport \"./libs/LibCoordinatorApproval.sol\";\nimport \"./libs/LibZeroExTransaction.sol\";\nimport \"./mixins/MSignatureValidator.sol\";\nimport \"./mixins/MCoordinatorApprovalVerifier.sol\";\n\n\n// solhint-disable avoid-tx-origin\ncontract MixinCoordinatorApprovalVerifier is\n LibExchangeSelectors,\n LibCoordinatorApproval,\n LibZeroExTransaction,\n MSignatureValidator,\n MCoordinatorApprovalVerifier\n{\n using LibBytes for bytes;\n using LibAddressArray for address[];\n\n /// @dev Validates that the 0x transaction has been approved by all of the feeRecipients\n /// that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function assertValidCoordinatorApprovals(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view\n {\n // Get the orders from the the Exchange calldata in the 0x transaction\n LibOrder.Order[] memory orders = decodeFillDataOrders(transaction.data);\n\n // No approval is required for non-fill methods\n if (orders.length > 0) {\n // Revert if approval is invalid for transaction orders\n assertValidTransactionOrdersApproval(\n transaction,\n orders,\n txOrigin,\n transactionSignature,\n approvalExpirationTimeSeconds,\n approvalSignatures\n );\n }\n }\n\n /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param orders Array of order structs containing order specifications.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order.\n function assertValidTransactionOrdersApproval(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n LibOrder.Order[] memory orders,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view\n {\n // Verify that Ethereum tx signer is the same as the approved txOrigin\n require(\n tx.origin == txOrigin,\n \"INVALID_ORIGIN\"\n );\n\n // Hash 0x transaction\n bytes32 transactionHash = getTransactionHash(transaction);\n\n // Create empty list of approval signers\n address[] memory approvalSignerAddresses = new address[](0);\n\n uint256 signaturesLength = approvalSignatures.length;\n for (uint256 i = 0; i != signaturesLength; i++) {\n // Create approval message\n uint256 currentApprovalExpirationTimeSeconds = approvalExpirationTimeSeconds[i];\n CoordinatorApproval memory approval = CoordinatorApproval({\n txOrigin: txOrigin,\n transactionHash: transactionHash,\n transactionSignature: transactionSignature,\n approvalExpirationTimeSeconds: currentApprovalExpirationTimeSeconds\n });\n\n // Ensure approval has not expired\n require(\n // solhint-disable-next-line not-rely-on-time\n currentApprovalExpirationTimeSeconds > block.timestamp,\n \"APPROVAL_EXPIRED\"\n );\n\n // Hash approval message and recover signer address\n bytes32 approvalHash = getCoordinatorApprovalHash(approval);\n address approvalSignerAddress = getSignerAddress(approvalHash, approvalSignatures[i]);\n \n // Add approval signer to list of signers\n approvalSignerAddresses = approvalSignerAddresses.append(approvalSignerAddress);\n }\n \n // Ethereum transaction signer gives implicit signature of approval\n approvalSignerAddresses = approvalSignerAddresses.append(tx.origin);\n \n uint256 ordersLength = orders.length;\n for (uint256 i = 0; i != ordersLength; i++) {\n // Do not check approval if the order's senderAddress is null\n if (orders[i].senderAddress == address(0)) {\n continue;\n }\n\n // Ensure feeRecipient of order has approved this 0x transaction\n address approverAddress = orders[i].feeRecipientAddress;\n bool isOrderApproved = approvalSignerAddresses.contains(approverAddress);\n require(\n isOrderApproved,\n \"INVALID_APPROVAL_SIGNATURE\"\n );\n }\n }\n\n /// @dev Decodes the orders from Exchange calldata representing any fill method.\n /// @param data Exchange calldata representing a fill method.\n /// @return The orders from the Exchange calldata.\n function decodeFillDataOrders(bytes memory data)\n internal\n pure\n returns (LibOrder.Order[] memory orders)\n {\n bytes4 selector = data.readBytes4(0);\n if (\n selector == FILL_ORDER_SELECTOR ||\n selector == FILL_ORDER_NO_THROW_SELECTOR ||\n selector == FILL_OR_KILL_ORDER_SELECTOR\n ) {\n // Decode single order\n (LibOrder.Order memory order) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order)\n );\n orders = new LibOrder.Order[](1);\n orders[0] = order;\n } else if (\n selector == BATCH_FILL_ORDERS_SELECTOR ||\n selector == BATCH_FILL_ORDERS_NO_THROW_SELECTOR ||\n selector == BATCH_FILL_OR_KILL_ORDERS_SELECTOR ||\n selector == MARKET_BUY_ORDERS_SELECTOR ||\n selector == MARKET_BUY_ORDERS_NO_THROW_SELECTOR ||\n selector == MARKET_SELL_ORDERS_SELECTOR ||\n selector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR\n ) {\n // Decode all orders\n // solhint-disable indent\n (orders) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order[])\n );\n } else if (selector == MATCH_ORDERS_SELECTOR) {\n // Decode left and right orders\n (LibOrder.Order memory leftOrder, LibOrder.Order memory rightOrder) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order, LibOrder.Order)\n );\n\n // Create array of orders\n orders = new LibOrder.Order[](2);\n orders[0] = leftOrder;\n orders[1] = rightOrder;\n }\n return orders;\n }\n}\n", + "@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibExchangeSelectors {\n\n // solhint-disable max-line-length\n // allowedValidators\n bytes4 constant internal ALLOWED_VALIDATORS_SELECTOR = 0x7b8e3514;\n bytes4 constant internal ALLOWED_VALIDATORS_SELECTOR_GENERATOR = bytes4(keccak256(\"allowedValidators(address,address)\"));\n\n // assetProxies\n bytes4 constant internal ASSET_PROXIES_SELECTOR = 0x3fd3c997;\n bytes4 constant internal ASSET_PROXIES_SELECTOR_GENERATOR = bytes4(keccak256(\"assetProxies(bytes4)\"));\n\n // batchCancelOrders\n bytes4 constant internal BATCH_CANCEL_ORDERS_SELECTOR = 0x4ac14782;\n bytes4 constant internal BATCH_CANCEL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchCancelOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])\"));\n\n // batchFillOrKillOrders\n bytes4 constant internal BATCH_FILL_OR_KILL_ORDERS_SELECTOR = 0x4d0ae546;\n bytes4 constant internal BATCH_FILL_OR_KILL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrKillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // batchFillOrders\n bytes4 constant internal BATCH_FILL_ORDERS_SELECTOR = 0x297bb70b;\n bytes4 constant internal BATCH_FILL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // batchFillOrdersNoThrow\n bytes4 constant internal BATCH_FILL_ORDERS_NO_THROW_SELECTOR = 0x50dde190;\n bytes4 constant internal BATCH_FILL_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // cancelOrder\n bytes4 constant internal CANCEL_ORDER_SELECTOR = 0xd46b02c3;\n bytes4 constant internal CANCEL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\"));\n\n // cancelOrdersUpTo\n bytes4 constant internal CANCEL_ORDERS_UP_TO_SELECTOR = 0x4f9559b1;\n bytes4 constant internal CANCEL_ORDERS_UP_TO_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelOrdersUpTo(uint256)\"));\n\n // cancelled\n bytes4 constant internal CANCELLED_SELECTOR = 0x2ac12622;\n bytes4 constant internal CANCELLED_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelled(bytes32)\"));\n\n // currentContextAddress\n bytes4 constant internal CURRENT_CONTEXT_ADDRESS_SELECTOR = 0xeea086ba;\n bytes4 constant internal CURRENT_CONTEXT_ADDRESS_SELECTOR_GENERATOR = bytes4(keccak256(\"currentContextAddress()\"));\n\n // executeTransaction\n bytes4 constant internal EXECUTE_TRANSACTION_SELECTOR = 0xbfc8bfce;\n bytes4 constant internal EXECUTE_TRANSACTION_SELECTOR_GENERATOR = bytes4(keccak256(\"executeTransaction(uint256,address,bytes,bytes)\"));\n\n // fillOrKillOrder\n bytes4 constant internal FILL_OR_KILL_ORDER_SELECTOR = 0x64a3bc15;\n bytes4 constant internal FILL_OR_KILL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrKillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // fillOrder\n bytes4 constant internal FILL_ORDER_SELECTOR = 0xb4be83d5;\n bytes4 constant internal FILL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // fillOrderNoThrow\n bytes4 constant internal FILL_ORDER_NO_THROW_SELECTOR = 0x3e228bae;\n bytes4 constant internal FILL_ORDER_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrderNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // filled\n bytes4 constant internal FILLED_SELECTOR = 0x288cdc91;\n bytes4 constant internal FILLED_SELECTOR_GENERATOR = bytes4(keccak256(\"filled(bytes32)\"));\n\n // getAssetProxy\n bytes4 constant internal GET_ASSET_PROXY_SELECTOR = 0x60704108;\n bytes4 constant internal GET_ASSET_PROXY_SELECTOR_GENERATOR = bytes4(keccak256(\"getAssetProxy(bytes4)\"));\n\n // getOrderInfo\n bytes4 constant internal GET_ORDER_INFO_SELECTOR = 0xc75e0a81;\n bytes4 constant internal GET_ORDER_INFO_SELECTOR_GENERATOR = bytes4(keccak256(\"getOrderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\"));\n\n // getOrdersInfo\n bytes4 constant internal GET_ORDERS_INFO_SELECTOR = 0x7e9d74dc;\n bytes4 constant internal GET_ORDERS_INFO_SELECTOR_GENERATOR = bytes4(keccak256(\"getOrdersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])\"));\n\n // isValidSignature\n bytes4 constant internal IS_VALID_SIGNATURE_SELECTOR = 0x93634702;\n bytes4 constant internal IS_VALID_SIGNATURE_SELECTOR_GENERATOR = bytes4(keccak256(\"isValidSignature(bytes32,address,bytes)\"));\n\n // marketBuyOrders\n bytes4 constant internal MARKET_BUY_ORDERS_SELECTOR = 0xe5fa431b;\n bytes4 constant internal MARKET_BUY_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"marketBuyOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketBuyOrdersNoThrow\n bytes4 constant internal MARKET_BUY_ORDERS_NO_THROW_SELECTOR = 0xa3e20380;\n bytes4 constant internal MARKET_BUY_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"marketBuyOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketSellOrders\n bytes4 constant internal MARKET_SELL_ORDERS_SELECTOR = 0x7e1d9808;\n bytes4 constant internal MARKET_SELL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"marketSellOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketSellOrdersNoThrow\n bytes4 constant internal MARKET_SELL_ORDERS_NO_THROW_SELECTOR = 0xdd1c7d18;\n bytes4 constant internal MARKET_SELL_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"marketSellOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // matchOrders\n bytes4 constant internal MATCH_ORDERS_SELECTOR = 0x3c28d861;\n bytes4 constant internal MATCH_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)\"));\n\n // orderEpoch\n bytes4 constant internal ORDER_EPOCH_SELECTOR = 0xd9bfa73e;\n bytes4 constant internal ORDER_EPOCH_SELECTOR_GENERATOR = bytes4(keccak256(\"orderEpoch(address,address)\"));\n\n // owner\n bytes4 constant internal OWNER_SELECTOR = 0x8da5cb5b;\n bytes4 constant internal OWNER_SELECTOR_GENERATOR = bytes4(keccak256(\"owner()\"));\n\n // preSign\n bytes4 constant internal PRE_SIGN_SELECTOR = 0x3683ef8e;\n bytes4 constant internal PRE_SIGN_SELECTOR_GENERATOR = bytes4(keccak256(\"preSign(bytes32,address,bytes)\"));\n\n // preSigned\n bytes4 constant internal PRE_SIGNED_SELECTOR = 0x82c174d0;\n bytes4 constant internal PRE_SIGNED_SELECTOR_GENERATOR = bytes4(keccak256(\"preSigned(bytes32,address)\"));\n\n // registerAssetProxy\n bytes4 constant internal REGISTER_ASSET_PROXY_SELECTOR = 0xc585bb93;\n bytes4 constant internal REGISTER_ASSET_PROXY_SELECTOR_GENERATOR = bytes4(keccak256(\"registerAssetProxy(address)\"));\n\n // setSignatureValidatorApproval\n bytes4 constant internal SET_SIGNATURE_VALIDATOR_APPROVAL_SELECTOR = 0x77fcce68;\n bytes4 constant internal SET_SIGNATURE_VALIDATOR_APPROVAL_SELECTOR_GENERATOR = bytes4(keccak256(\"setSignatureValidatorApproval(address,bool)\"));\n\n // transactions\n bytes4 constant internal TRANSACTIONS_SELECTOR = 0x642f2eaf;\n bytes4 constant internal TRANSACTIONS_SELECTOR_GENERATOR = bytes4(keccak256(\"transactions(bytes32)\"));\n\n // transferOwnership\n bytes4 constant internal TRANSFER_OWNERSHIP_SELECTOR = 0xf2fde38b;\n bytes4 constant internal TRANSFER_OWNERSHIP_SELECTOR_GENERATOR = bytes4(keccak256(\"transferOwnership(address)\"));\n}", + "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712.sol\";\n\n\ncontract LibOrder is\n LibEIP712\n{\n // Hash for the EIP712 Order Schema\n bytes32 constant internal EIP712_ORDER_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"Order(\",\n \"address makerAddress,\",\n \"address takerAddress,\",\n \"address feeRecipientAddress,\",\n \"address senderAddress,\",\n \"uint256 makerAssetAmount,\",\n \"uint256 takerAssetAmount,\",\n \"uint256 makerFee,\",\n \"uint256 takerFee,\",\n \"uint256 expirationTimeSeconds,\",\n \"uint256 salt,\",\n \"bytes makerAssetData,\",\n \"bytes takerAssetData\",\n \")\"\n ));\n\n // A valid order remains fillable until it is expired, fully filled, or cancelled.\n // An order's state is unaffected by external factors, like account balances.\n enum OrderStatus {\n INVALID, // Default value\n INVALID_MAKER_ASSET_AMOUNT, // Order does not have a valid maker asset amount\n INVALID_TAKER_ASSET_AMOUNT, // Order does not have a valid taker asset amount\n FILLABLE, // Order is fillable\n EXPIRED, // Order has already expired\n FULLY_FILLED, // Order is fully filled\n CANCELLED // Order has been cancelled\n }\n\n // solhint-disable max-line-length\n struct Order {\n address makerAddress; // Address that created the order. \n address takerAddress; // Address that is allowed to fill the order. If set to 0, any address is allowed to fill the order. \n address feeRecipientAddress; // Address that will recieve fees when order is filled. \n address senderAddress; // Address that is allowed to call Exchange contract methods that affect this order. If set to 0, any address is allowed to call these methods.\n uint256 makerAssetAmount; // Amount of makerAsset being offered by maker. Must be greater than 0. \n uint256 takerAssetAmount; // Amount of takerAsset being bid on by maker. Must be greater than 0. \n uint256 makerFee; // Amount of ZRX paid to feeRecipient by maker when order is filled. If set to 0, no transfer of ZRX from maker to feeRecipient will be attempted.\n uint256 takerFee; // Amount of ZRX paid to feeRecipient by taker when order is filled. If set to 0, no transfer of ZRX from taker to feeRecipient will be attempted.\n uint256 expirationTimeSeconds; // Timestamp in seconds at which order expires. \n uint256 salt; // Arbitrary number to facilitate uniqueness of the order's hash. \n bytes makerAssetData; // Encoded data that can be decoded by a specified proxy contract when transferring makerAsset. The last byte references the id of this proxy.\n bytes takerAssetData; // Encoded data that can be decoded by a specified proxy contract when transferring takerAsset. The last byte references the id of this proxy.\n }\n // solhint-enable max-line-length\n\n struct OrderInfo {\n uint8 orderStatus; // Status that describes order's validity and fillability.\n bytes32 orderHash; // EIP712 hash of the order (see LibOrder.getOrderHash).\n uint256 orderTakerAssetFilledAmount; // Amount of order that has already been filled.\n }\n\n /// @dev Calculates Keccak-256 hash of the order.\n /// @param order The order structure.\n /// @return Keccak-256 EIP712 hash of the order.\n function getOrderHash(Order memory order)\n internal\n view\n returns (bytes32 orderHash)\n {\n orderHash = hashEIP712Message(hashOrder(order));\n return orderHash;\n }\n\n /// @dev Calculates EIP712 hash of the order.\n /// @param order The order structure.\n /// @return EIP712 hash of the order.\n function hashOrder(Order memory order)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_ORDER_SCHEMA_HASH;\n bytes32 makerAssetDataHash = keccak256(order.makerAssetData);\n bytes32 takerAssetDataHash = keccak256(order.takerAssetData);\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_ORDER_SCHEMA_HASH,\n // bytes32(order.makerAddress),\n // bytes32(order.takerAddress),\n // bytes32(order.feeRecipientAddress),\n // bytes32(order.senderAddress),\n // order.makerAssetAmount,\n // order.takerAssetAmount,\n // order.makerFee,\n // order.takerFee,\n // order.expirationTimeSeconds,\n // order.salt,\n // keccak256(order.makerAssetData),\n // keccak256(order.takerAssetData)\n // ));\n\n assembly {\n // Calculate memory addresses that will be swapped out before hashing\n let pos1 := sub(order, 32)\n let pos2 := add(order, 320)\n let pos3 := add(order, 352)\n\n // Backup\n let temp1 := mload(pos1)\n let temp2 := mload(pos2)\n let temp3 := mload(pos3)\n \n // Hash in place\n mstore(pos1, schemaHash)\n mstore(pos2, makerAssetDataHash)\n mstore(pos3, takerAssetDataHash)\n result := keccak256(pos1, 416)\n \n // Restore\n mstore(pos1, temp1)\n mstore(pos2, temp2)\n mstore(pos3, temp3)\n }\n return result;\n }\n}\n", + "@0x/contracts-exchange-libs/contracts/src/LibEIP712.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibEIP712 {\n\n // EIP191 header for EIP712 prefix\n string constant internal EIP191_HEADER = \"\\x19\\x01\";\n\n // EIP712 Domain Name value\n string constant internal EIP712_DOMAIN_NAME = \"0x Protocol\";\n\n // EIP712 Domain Version value\n string constant internal EIP712_DOMAIN_VERSION = \"2\";\n\n // Hash of the EIP712 Domain Separator Schema\n bytes32 constant internal EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"EIP712Domain(\",\n \"string name,\",\n \"string version,\",\n \"address verifyingContract\",\n \")\"\n ));\n\n // Hash of the EIP712 Domain Separator data\n // solhint-disable-next-line var-name-mixedcase\n bytes32 public EIP712_DOMAIN_HASH;\n\n constructor ()\n public\n {\n EIP712_DOMAIN_HASH = keccak256(abi.encodePacked(\n EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH,\n keccak256(bytes(EIP712_DOMAIN_NAME)),\n keccak256(bytes(EIP712_DOMAIN_VERSION)),\n uint256(address(this))\n ));\n }\n\n /// @dev Calculates EIP712 encoding for a hash struct in this EIP712 Domain.\n /// @param hashStruct The EIP712 hash struct.\n /// @return EIP712 hash applied to this EIP712 Domain.\n function hashEIP712Message(bytes32 hashStruct)\n internal\n view\n returns (bytes32 result)\n {\n bytes32 eip712DomainHash = EIP712_DOMAIN_HASH;\n\n // Assembly for more efficient computing:\n // keccak256(abi.encodePacked(\n // EIP191_HEADER,\n // EIP712_DOMAIN_HASH,\n // hashStruct \n // ));\n\n assembly {\n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000) // EIP191 header\n mstore(add(memPtr, 2), eip712DomainHash) // EIP712 domain hash\n mstore(add(memPtr, 34), hashStruct) // Hash of struct\n\n // Compute hash\n result := keccak256(memPtr, 66)\n }\n return result;\n }\n}\n", + "@0x/contracts-utils/contracts/src/LibAddressArray.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibBytes.sol\";\n\n\nlibrary LibAddressArray {\n\n /// @dev Append a new address to an array of addresses.\n /// The `addressArray` may need to be reallocated to make space\n /// for the new address. Because of this we return the resulting\n /// memory location of `addressArray`.\n /// @param addressArray Array of addresses.\n /// @param addressToAppend Address to append.\n /// @return Array of addresses: [... addressArray, addressToAppend]\n function append(address[] memory addressArray, address addressToAppend) \n internal\n pure\n returns (address[] memory)\n {\n // Get stats on address array and free memory\n uint256 freeMemPtr = 0;\n uint256 addressArrayBeginPtr = 0;\n uint256 addressArrayEndPtr = 0;\n uint256 addressArrayLength = addressArray.length;\n uint256 addressArrayMemSizeInBytes = 32 + (32 * addressArrayLength);\n assembly {\n freeMemPtr := mload(0x40)\n addressArrayBeginPtr := addressArray\n addressArrayEndPtr := add(addressArray, addressArrayMemSizeInBytes)\n }\n\n // Cases for `freeMemPtr`:\n // `freeMemPtr` == `addressArrayEndPtr`: Nothing occupies memory after `addressArray`\n // `freeMemPtr` > `addressArrayEndPtr`: Some value occupies memory after `addressArray`\n // `freeMemPtr` < `addressArrayEndPtr`: Memory has not been managed properly.\n require(\n freeMemPtr >= addressArrayEndPtr,\n \"INVALID_FREE_MEMORY_PTR\"\n );\n\n // If free memory begins at the end of `addressArray`\n // then we can append `addressToAppend` directly.\n // Otherwise, we must copy the array to free memory\n // before appending new values to it.\n if (freeMemPtr > addressArrayEndPtr) {\n LibBytes.memCopy(freeMemPtr, addressArrayBeginPtr, addressArrayMemSizeInBytes);\n assembly {\n addressArray := freeMemPtr\n addressArrayBeginPtr := addressArray\n }\n }\n\n // Append `addressToAppend`\n addressArrayLength += 1;\n addressArrayMemSizeInBytes += 32;\n addressArrayEndPtr = addressArrayBeginPtr + addressArrayMemSizeInBytes;\n freeMemPtr = addressArrayEndPtr;\n assembly {\n // Store new array length\n mstore(addressArray, addressArrayLength)\n\n // Update `freeMemPtr`\n mstore(0x40, freeMemPtr)\n }\n addressArray[addressArrayLength - 1] = addressToAppend;\n return addressArray;\n }\n\n /// @dev Checks if an address array contains the target address.\n /// @param addressArray Array of addresses.\n /// @param target Address to search for in array.\n /// @return True if the addressArray contains the target.\n function contains(address[] memory addressArray, address target)\n internal\n pure\n returns (bool success)\n {\n assembly {\n\n // Calculate byte length of array\n let arrayByteLen := mul(mload(addressArray), 32)\n // Calculate beginning of array contents\n let arrayContentsStart := add(addressArray, 32)\n // Calclulate end of array contents\n let arrayContentsEnd := add(arrayContentsStart, arrayByteLen)\n\n // Loop through array\n for {let i:= arrayContentsStart} lt(i, arrayContentsEnd) {i := add(i, 32)} {\n\n // Load array element\n let arrayElement := mload(i)\n\n // Return true if array element equals target\n if eq(target, arrayElement) {\n // Set success to true\n success := 1\n // Break loop\n i := arrayContentsEnd\n }\n }\n }\n return success;\n }\n\n /// @dev Finds the index of an address within an array.\n /// @param addressArray Array of addresses.\n /// @param target Address to search for in array.\n /// @return Existence and index of the target in the array.\n function indexOf(address[] memory addressArray, address target)\n internal\n pure\n returns (bool success, uint256 index)\n {\n assembly {\n\n // Calculate byte length of array\n let arrayByteLen := mul(mload(addressArray), 32)\n // Calculate beginning of array contents\n let arrayContentsStart := add(addressArray, 32)\n // Calclulate end of array contents\n let arrayContentsEnd := add(arrayContentsStart, arrayByteLen)\n\n // Loop through array\n for {let i:= arrayContentsStart} lt(i, arrayContentsEnd) {i := add(i, 32)} {\n\n // Load array element\n let arrayElement := mload(i)\n\n // Return true if array element equals target\n if eq(target, arrayElement) {\n // Set success and index\n success := 1\n index := div(i, 32)\n // Break loop\n i := arrayContentsEnd\n }\n }\n }\n return (success, index);\n }\n}\n", + "src/libs/LibCoordinatorApproval.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712Domain.sol\";\n\n\ncontract LibCoordinatorApproval is\n LibEIP712Domain\n{\n // Hash for the EIP712 Coordinator approval message\n // keccak256(abi.encodePacked(\n // \"CoordinatorApproval(\",\n // \"address txOrigin,\",\n // \"bytes32 transactionHash,\",\n // \"bytes transactionSignature,\",\n // \"uint256 approvalExpirationTimeSeconds\",\n // \")\"\n // ));\n bytes32 constant internal EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH = 0x2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e05;\n\n struct CoordinatorApproval {\n address txOrigin; // Required signer of Ethereum transaction that is submitting approval.\n bytes32 transactionHash; // EIP712 hash of the transaction, using the domain separator of this contract.\n bytes transactionSignature; // Signature of the 0x transaction.\n uint256 approvalExpirationTimeSeconds; // Timestamp in seconds for which the signature expires.\n }\n\n /// @dev Calculated the EIP712 hash of the Coordinator approval mesasage using the domain separator of this contract.\n /// @param approval Coordinator approval message containing the transaction hash, transaction signature, and expiration of the approval.\n /// @return EIP712 hash of the Coordinator approval message with the domain separator of this contract.\n function getCoordinatorApprovalHash(CoordinatorApproval memory approval)\n internal\n view\n returns (bytes32 approvalHash)\n {\n approvalHash = hashEIP712Message(hashCoordinatorApproval(approval));\n return approvalHash;\n }\n\n /// @dev Calculated the EIP712 hash of the Coordinator approval mesasage with no domain separator.\n /// @param approval Coordinator approval message containing the transaction hash, transaction signature, and expiration of the approval.\n /// @return EIP712 hash of the Coordinator approval message with no domain separator.\n function hashCoordinatorApproval(CoordinatorApproval memory approval)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH;\n bytes memory transactionSignature = approval.transactionSignature;\n address txOrigin = approval.txOrigin;\n bytes32 transactionHash = approval.transactionHash;\n uint256 approvalExpirationTimeSeconds = approval.approvalExpirationTimeSeconds;\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH,\n // approval.transactionHash,\n // keccak256(approval.transactionSignature)\n // approval.expiration,\n // ));\n\n assembly {\n // Compute hash of transaction signature\n let transactionSignatureHash := keccak256(add(transactionSignature, 32), mload(transactionSignature))\n \n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, schemaHash) // hash of schema\n mstore(add(memPtr, 32), txOrigin) // txOrigin\n mstore(add(memPtr, 64), transactionHash) // transactionHash\n mstore(add(memPtr, 96), transactionSignatureHash) // transactionSignatureHash\n mstore(add(memPtr, 128), approvalExpirationTimeSeconds) // approvalExpirationTimeSeconds\n // Compute hash\n result := keccak256(memPtr, 160)\n }\n return result;\n }\n}\n", + "src/libs/LibEIP712Domain.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibEIP712Domain {\n\n // EIP191 header for EIP712 prefix\n string constant internal EIP191_HEADER = \"\\x19\\x01\";\n\n // EIP712 Domain Name value\n string constant internal EIP712_DOMAIN_NAME = \"0x Protocol Coordinator\";\n\n // EIP712 Domain Version value\n string constant internal EIP712_DOMAIN_VERSION = \"1.0.0\";\n\n // Hash of the EIP712 Domain Separator Schema\n bytes32 constant internal EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"EIP712Domain(\",\n \"string name,\",\n \"string version,\",\n \"address verifyingContract\",\n \")\"\n ));\n\n // Hash of the EIP712 Domain Separator data\n // solhint-disable-next-line var-name-mixedcase\n bytes32 public EIP712_DOMAIN_HASH;\n\n constructor ()\n public\n {\n EIP712_DOMAIN_HASH = keccak256(abi.encodePacked(\n EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH,\n keccak256(bytes(EIP712_DOMAIN_NAME)),\n keccak256(bytes(EIP712_DOMAIN_VERSION)),\n uint256(address(this))\n ));\n }\n\n /// @dev Calculates EIP712 encoding for a hash struct in this EIP712 Domain.\n /// @param hashStruct The EIP712 hash struct.\n /// @return EIP712 hash applied to this EIP712 Domain.\n function hashEIP712Message(bytes32 hashStruct)\n internal\n view\n returns (bytes32 result)\n {\n bytes32 eip712DomainHash = EIP712_DOMAIN_HASH;\n\n // Assembly for more efficient computing:\n // keccak256(abi.encodePacked(\n // EIP191_HEADER,\n // EIP712_DOMAIN_HASH,\n // hashStruct \n // ));\n\n assembly {\n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000) // EIP191 header\n mstore(add(memPtr, 2), eip712DomainHash) // EIP712 domain hash\n mstore(add(memPtr, 34), hashStruct) // Hash of struct\n\n // Compute hash\n result := keccak256(memPtr, 66)\n }\n return result;\n }\n}\n", + "src/libs/LibZeroExTransaction.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712Domain.sol\";\n\n\ncontract LibZeroExTransaction is\n LibEIP712Domain\n{\n // Hash for the EIP712 0x transaction schema\n // keccak256(abi.encodePacked(\n // \"ZeroExTransaction(\",\n // \"uint256 salt,\",\n // \"address signerAddress,\",\n // \"bytes data\",\n // \")\"\n // ));\n bytes32 constant internal EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH = 0x213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c;\n\n struct ZeroExTransaction {\n uint256 salt; // Arbitrary number to ensure uniqueness of transaction hash.\n address signerAddress; // Address of transaction signer.\n bytes data; // AbiV2 encoded calldata.\n }\n\n /// @dev Calculates the EIP712 hash of a 0x transaction using the domain separator of this contract.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @return EIP712 hash of the transaction with the domain separator of this contract.\n function getTransactionHash(ZeroExTransaction memory transaction)\n internal\n view\n returns (bytes32 transactionHash)\n {\n // Note: this transaction hash will differ from the hash produced by the Exchange contract because it utilizes a different domain hash.\n transactionHash = hashEIP712Message(hashZeroExTransaction(transaction));\n return transactionHash;\n }\n\n /// @dev Calculates EIP712 hash of the 0x transaction with no domain separator.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @return EIP712 hash of the transaction with no domain separator.\n function hashZeroExTransaction(ZeroExTransaction memory transaction)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH;\n bytes memory data = transaction.data;\n uint256 salt = transaction.salt;\n address signerAddress = transaction.signerAddress;\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH,\n // transaction.salt,\n // uint256(transaction.signerAddress),\n // keccak256(transaction.data)\n // ));\n\n assembly {\n // Compute hash of data\n let dataHash := keccak256(add(data, 32), mload(data))\n \n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, schemaHash) // hash of schema\n mstore(add(memPtr, 32), salt) // salt\n mstore(add(memPtr, 64), and(signerAddress, 0xffffffffffffffffffffffffffffffffffffffff)) // signerAddress\n mstore(add(memPtr, 96), dataHash) // hash of data\n\n // Compute hash\n result := keccak256(memPtr, 128)\n }\n return result;\n }\n}\n", + "src/mixins/MCoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"../interfaces/ICoordinatorApprovalVerifier.sol\";\n\n\ncontract MCoordinatorApprovalVerifier is\n ICoordinatorApprovalVerifier\n{\n /// @dev Decodes the orders from Exchange calldata representing any fill method.\n /// @param data Exchange calldata representing a fill method.\n /// @return The orders from the Exchange calldata.\n function decodeFillDataOrders(bytes memory data)\n internal\n pure\n returns (LibOrder.Order[] memory orders);\n}\n", + "src/interfaces/ICoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"../libs/LibZeroExTransaction.sol\";\n\n\ncontract ICoordinatorApprovalVerifier {\n\n /// @dev Validates that the 0x transaction has been approved by all of the feeRecipients\n /// that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function assertValidCoordinatorApprovals(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view;\n\n /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param orders Array of order structs containing order specifications.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order.\n function assertValidTransactionOrdersApproval(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n LibOrder.Order[] memory orders,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view;\n}\n", + "src/MixinCoordinatorCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"./libs/LibZeroExTransaction.sol\";\nimport \"./libs/LibConstants.sol\";\nimport \"./mixins/MCoordinatorApprovalVerifier.sol\";\nimport \"./interfaces/ICoordinatorCore.sol\";\n\n\ncontract MixinCoordinatorCore is\n LibConstants,\n MCoordinatorApprovalVerifier,\n ICoordinatorCore\n{\n /// @dev Executes a 0x transaction that has been signed by the feeRecipients that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function executeTransaction(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n {\n // Validate that the 0x transaction has been approves by each feeRecipient\n assertValidCoordinatorApprovals(\n transaction,\n txOrigin,\n transactionSignature,\n approvalExpirationTimeSeconds,\n approvalSignatures\n );\n\n // Execute the transaction\n EXCHANGE.executeTransaction(\n transaction.salt,\n transaction.signerAddress,\n transaction.data,\n transactionSignature\n );\n }\n}\n", + "src/interfaces/ICoordinatorCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"../libs/LibZeroExTransaction.sol\";\n\n\ncontract ICoordinatorCore {\n\n /// @dev Executes a 0x transaction that has been signed by the feeRecipients that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function executeTransaction(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public;\n}\n" + }, + "sourceTreeHashHex": "0xcb9dc4e3588f7417807cc8b901a358efbad1d37ae61794e3031c8f00ac09d41e", + "compiler": { + "name": "solc", + "version": "0.5.3+commit.10d17f24.Linux.g++", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode.object", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.object", + "evm.deployedBytecode.sourceMap" + ] + } + }, + "evmVersion": "byzantium", + "remappings": [ + "@0x/contracts-utils=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-utils", + "@0x/contracts-exchange-libs=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-exchange-libs" + ] + } + }, + "networks": {} +} diff --git a/python-packages/contract_artifacts/CoordinatorRegistry.json b/python-packages/contract_artifacts/CoordinatorRegistry.json new file mode 100644 index 0000000000..2d4c89b249 --- /dev/null +++ b/python-packages/contract_artifacts/CoordinatorRegistry.json @@ -0,0 +1,122 @@ +{ + "schemaVersion": "2.0.0", + "contractName": "CoordinatorRegistry", + "compilerOutput": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "name": "setCoordinatorEndpoint", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "coordinatorOperator", + "type": "address" + } + ], + "name": "getCoordinatorEndpoint", + "outputs": [ + { + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "coordinatorOperator", + "type": "address" + }, + { + "indexed": false, + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "name": "CoordinatorEndpointSet", + "type": "event" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b506104b5806100206000396000f3fe608060405234801561001057600080fd5b5060043610610052577c010000000000000000000000000000000000000000000000000000000060003504635b2388be81146100575780636c90fedb1461006c575b600080fd5b61006a6100653660046102ff565b610095565b005b61007f61007a3660046102d9565b6100f0565b60405161008c91906103d8565b60405180910390f35b3360008181526020819052604090206100af9084846101c4565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e8184846040516100e3939291906103ae565b60405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156101b85780601f1061018d576101008083540402835291602001916101b8565b820191906000526020600020905b81548152906001019060200180831161019b57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610223578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610250565b82800160010185558215610250579182015b82811115610250578235825591602001919060010190610235565b5061025c929150610260565b5090565b61027a91905b8082111561025c5760008155600101610266565b90565b600061028982356103ed565b9392505050565b600080601f830184136102a257600080fd5b50813567ffffffffffffffff8111156102ba57600080fd5b6020830191508360018202830111156102d257600080fd5b9250929050565b6000602082840312156102eb57600080fd5b60006102f7848461027d565b949350505050565b6000806020838503121561031257600080fd5b823567ffffffffffffffff81111561032957600080fd5b61033585828601610290565b92509250509250929050565b61034a816103ed565b82525050565b6000828452602084019350610366838584610417565b61036f83610453565b9093019392505050565b6000610384826103e9565b808452610398816020860160208601610423565b6103a181610453565b9093016020019392505050565b604081016103bc8286610341565b81810360208301526103cf818486610350565b95945050505050565b602080825281016102898184610379565b5190565b60006103f8826103fe565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561043e578181015183820152602001610426565b8381111561044d576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a72305820d8fc8bc6ec7167e671f9f87937212d93c49d5fbe171bbdfa06c846e5ac76151b6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B5 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x52 JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x5B2388BE DUP2 EQ PUSH2 0x57 JUMPI DUP1 PUSH4 0x6C90FEDB EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH2 0x65 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x95 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xAF SWAP1 DUP5 DUP5 PUSH2 0x1C4 JUMP JUMPDEST POP PUSH32 0xD060052768902F3EECB84B8EAE9D3A2608A1A9E60811A33968B46B8D552F266E DUP2 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x18D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1B8 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x19B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x223 JUMPI DUP3 DUP1 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x250 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x250 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x250 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x235 JUMP JUMPDEST POP PUSH2 0x25C SWAP3 SWAP2 POP PUSH2 0x260 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x27A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x266 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x289 DUP3 CALLDATALOAD PUSH2 0x3ED JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1F DUP4 ADD DUP5 SGT PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F7 DUP5 DUP5 PUSH2 0x27D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x335 DUP6 DUP3 DUP7 ADD PUSH2 0x290 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x34A DUP2 PUSH2 0x3ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x366 DUP4 DUP6 DUP5 PUSH2 0x417 JUMP JUMPDEST PUSH2 0x36F DUP4 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x384 DUP3 PUSH2 0x3E9 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x398 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x423 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3BC DUP3 DUP7 PUSH2 0x341 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3CF DUP2 DUP5 DUP7 PUSH2 0x350 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x289 DUP2 DUP5 PUSH2 0x379 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8 DUP3 PUSH2 0x3FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x426 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0xd8 0xfc DUP12 0xc6 0xec PUSH18 0x67E671F9F87937212D93C49D5FBE171BBDFA MOD 0xc8 0x46 0xe5 0xac PUSH23 0x151B6C6578706572696D656E74616CF500370000000000 ", + "sourceMap": "720:148:14:-;;;791:75;8:9:-1;5:2;;;30:1;27;20:12;5:2;791:75:14;720:148;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b5060043610610052577c010000000000000000000000000000000000000000000000000000000060003504635b2388be81146100575780636c90fedb1461006c575b600080fd5b61006a6100653660046102ff565b610095565b005b61007f61007a3660046102d9565b6100f0565b60405161008c91906103d8565b60405180910390f35b3360008181526020819052604090206100af9084846101c4565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e8184846040516100e3939291906103ae565b60405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156101b85780601f1061018d576101008083540402835291602001916101b8565b820191906000526020600020905b81548152906001019060200180831161019b57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610223578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610250565b82800160010185558215610250579182015b82811115610250578235825591602001919060010190610235565b5061025c929150610260565b5090565b61027a91905b8082111561025c5760008155600101610266565b90565b600061028982356103ed565b9392505050565b600080601f830184136102a257600080fd5b50813567ffffffffffffffff8111156102ba57600080fd5b6020830191508360018202830111156102d257600080fd5b9250929050565b6000602082840312156102eb57600080fd5b60006102f7848461027d565b949350505050565b6000806020838503121561031257600080fd5b823567ffffffffffffffff81111561032957600080fd5b61033585828601610290565b92509250509250929050565b61034a816103ed565b82525050565b6000828452602084019350610366838584610417565b61036f83610453565b9093019392505050565b6000610384826103e9565b808452610398816020860160208601610423565b6103a181610453565b9093016020019392505050565b604081016103bc8286610341565b81810360208301526103cf818486610350565b95945050505050565b602080825281016102898184610379565b5190565b60006103f8826103fe565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561043e578181015183820152602001610426565b8381111561044d576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a72305820d8fc8bc6ec7167e671f9f87937212d93c49d5fbe171bbdfa06c846e5ac76151b6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x52 JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x5B2388BE DUP2 EQ PUSH2 0x57 JUMPI DUP1 PUSH4 0x6C90FEDB EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH2 0x65 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x95 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xAF SWAP1 DUP5 DUP5 PUSH2 0x1C4 JUMP JUMPDEST POP PUSH32 0xD060052768902F3EECB84B8EAE9D3A2608A1A9E60811A33968B46B8D552F266E DUP2 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x18D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1B8 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x19B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x223 JUMPI DUP3 DUP1 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x250 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x250 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x250 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x235 JUMP JUMPDEST POP PUSH2 0x25C SWAP3 SWAP2 POP PUSH2 0x260 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x27A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x266 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x289 DUP3 CALLDATALOAD PUSH2 0x3ED JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1F DUP4 ADD DUP5 SGT PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F7 DUP5 DUP5 PUSH2 0x27D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x335 DUP6 DUP3 DUP7 ADD PUSH2 0x290 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x34A DUP2 PUSH2 0x3ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x366 DUP4 DUP6 DUP5 PUSH2 0x417 JUMP JUMPDEST PUSH2 0x36F DUP4 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x384 DUP3 PUSH2 0x3E9 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x398 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x423 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3BC DUP3 DUP7 PUSH2 0x341 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3CF DUP2 DUP5 DUP7 PUSH2 0x350 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x289 DUP2 DUP5 PUSH2 0x379 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8 DUP3 PUSH2 0x3FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x426 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0xd8 0xfc DUP12 0xc6 0xec PUSH18 0x67E671F9F87937212D93C49D5FBE171BBDFA MOD 0xc8 0x46 0xe5 0xac PUSH23 0x151B6C6578706572696D656E74616CF500370000000000 ", + "sourceMap": "720:148:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;720:148:14;;;;;;;;;;;;;;;;;;;;;;;;1086:287:15;;;;;;;;;:::i;:::-;;1502:212;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1086:287;1204:10;1174:27;1224:41;;;;;;;;;;:63;;1268:19;;1224:63;:::i;:::-;;1302:64;1325:19;1346;;1302:64;;;;;;;;;;;;;;;;;1086:287;;;:::o;1502:212::-;1666:41;;;:20;:41;;;;;;;;;;;;1659:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:33;;1659:48;;;1666:41;1659:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1502:212;;;:::o;720:148:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;720:148:14;;;-1:-1:-1;720:148:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;57:66;-1:-1;;;57:66;145:336;;;253:4;241:17;;237:27;-1:-1;227:2;;278:1;275;268:12;227:2;-1:-1;298:20;;338:18;327:30;;324:2;;;370:1;367;360:12;324:2;404:4;396:6;392:17;380:29;;454:3;447;439:6;435:16;425:8;421:31;418:40;415:2;;;471:1;468;461:12;415:2;220:261;;;;;;489:241;;593:2;581:9;572:7;568:23;564:32;561:2;;;609:1;606;599:12;561:2;644:1;661:53;706:7;686:9;661:53;;;651:63;555:175;-1:-1;;;;555:175;737:367;;;861:2;849:9;840:7;836:23;832:32;829:2;;;877:1;874;867:12;829:2;912:31;;963:18;952:30;;949:2;;;995:1;992;985:12;949:2;1023:65;1080:7;1071:6;1060:9;1056:22;1023:65;;;1005:83;;;;891:203;823:281;;;;;;1111:120;1194:31;1219:5;1194:31;;;1189:3;1182:44;1176:55;;;1261:273;;1381:6;1376:3;1369:19;1405:4;1400:3;1396:14;1389:21;;1435:43;1471:6;1466:3;1459:5;1435:43;;;1499:29;1521:6;1499:29;;;1490:39;;;;1363:171;-1:-1;;;1363:171;1541:310;;1653:39;1686:5;1653:39;;;1709:6;1704:3;1697:19;1721:63;1777:6;1770:4;1765:3;1761:14;1754:4;1747:5;1743:16;1721:63;;;1816:29;1838:6;1816:29;;;1796:50;;;1809:4;1796:50;;1633:218;-1:-1;;;1633:218;1858:432;2034:2;2019:18;;2048:71;2023:9;2092:6;2048:71;;;2167:9;2161:4;2157:20;2152:2;2141:9;2137:18;2130:48;2192:88;2275:4;2266:6;2258;2192:88;;;2184:96;2005:285;-1:-1;;;;;2005:285;2297:301;2435:2;2449:47;;;2420:18;;2510:78;2420:18;2574:6;2510:78;;2605:92;2680:12;;2664:33;2704:105;;2773:31;2798:5;2773:31;;;2762:42;2756:53;-1:-1;;2756:53;2816:128;2896:42;2885:54;;2868:76;3064:145;3145:6;3140:3;3135;3122:30;-1:-1;3201:1;3183:16;;3176:27;3115:94;3218:268;3283:1;3290:101;3304:6;3301:1;3298:13;3290:101;;;3371:11;;;3365:18;3352:11;;;3345:39;3326:2;3319:10;3290:101;;;3406:6;3403:1;3400:13;3397:2;;;3471:1;3462:6;3457:3;3453:16;3446:27;3397:2;3267:219;;;;;3494:97;3582:2;3562:14;3578:7;3558:28;;3542:49" + } + } + }, + "sources": { + "src/registry/CoordinatorRegistry.sol": { + "id": 14 + }, + "src/registry/MixinCoordinatorRegistryCore.sol": { + "id": 15 + }, + "src/registry/interfaces/ICoordinatorRegistryCore.sol": { + "id": 16 + } + }, + "sourceCodes": { + "src/registry/CoordinatorRegistry.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\nimport \"./MixinCoordinatorRegistryCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract CoordinatorRegistry is\n MixinCoordinatorRegistryCore\n{\n constructor ()\n public\n MixinCoordinatorRegistryCore()\n {}\n}\n", + "src/registry/MixinCoordinatorRegistryCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\nimport \"./interfaces/ICoordinatorRegistryCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract MixinCoordinatorRegistryCore is\n ICoordinatorRegistryCore\n{\n // mapping from `coordinatorOperator` -> `coordinatorEndpoint`\n mapping (address => string) internal coordinatorEndpoints;\n\n /// @dev Called by a Coordinator operator to set the endpoint of their Coordinator.\n /// @param coordinatorEndpoint endpoint of the Coordinator.\n function setCoordinatorEndpoint(string calldata coordinatorEndpoint) external {\n address coordinatorOperator = msg.sender;\n coordinatorEndpoints[coordinatorOperator] = coordinatorEndpoint;\n emit CoordinatorEndpointSet(coordinatorOperator, coordinatorEndpoint);\n }\n\n /// @dev Gets the endpoint for a Coordinator.\n /// @param coordinatorOperator operator of the Coordinator endpoint.\n function getCoordinatorEndpoint(address coordinatorOperator)\n external\n view\n returns (string memory coordinatorEndpoint)\n {\n return coordinatorEndpoints[coordinatorOperator];\n }\n}\n", + "src/registry/interfaces/ICoordinatorRegistryCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\n\n// solhint-disable no-empty-blocks\ncontract ICoordinatorRegistryCore\n{\n /// @dev Emitted when a Coordinator endpoint is set.\n event CoordinatorEndpointSet(\n address coordinatorOperator,\n string coordinatorEndpoint\n );\n\n /// @dev Called by a Coordinator operator to set the endpoint of their Coordinator.\n /// @param coordinatorEndpoint endpoint of the Coordinator.\n function setCoordinatorEndpoint(string calldata coordinatorEndpoint) external;\n\n /// @dev Gets the endpoint for a Coordinator.\n /// @param coordinatorOperator operator of the Coordinator endpoint.\n function getCoordinatorEndpoint(address coordinatorOperator)\n external\n view\n returns (string memory coordinatorEndpoint);\n}\n" + }, + "sourceTreeHashHex": "0x73b5157724c2624755d003dcb560ff5732c8ae78d44b1b99ec064e8b909f8f8c", + "compiler": { + "name": "solc", + "version": "0.5.3+commit.10d17f24.Linux.g++", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode.object", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.object", + "evm.deployedBytecode.sourceMap" + ] + } + }, + "evmVersion": "byzantium", + "remappings": [ + "@0x/contracts-utils=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-utils", + "@0x/contracts-exchange-libs=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-exchange-libs" + ] + } + }, + "networks": {} +} diff --git a/python-packages/contract_artifacts/src/zero_ex/contract_artifacts/artifacts/Coordinator.json b/python-packages/contract_artifacts/src/zero_ex/contract_artifacts/artifacts/Coordinator.json new file mode 100644 index 0000000000..3cc8a1fdd5 --- /dev/null +++ b/python-packages/contract_artifacts/src/zero_ex/contract_artifacts/artifacts/Coordinator.json @@ -0,0 +1,364 @@ +{ + "schemaVersion": "2.0.0", + "contractName": "Coordinator", + "compilerOutput": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "hash", + "type": "bytes32" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "getSignerAddress", + "outputs": [ + { + "name": "signerAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "assertValidCoordinatorApprovals", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "EIP712_DOMAIN_HASH", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "name": "salt", + "type": "uint256" + }, + { + "name": "signerAddress", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transaction", + "type": "tuple" + }, + { + "components": [ + { + "name": "makerAddress", + "type": "address" + }, + { + "name": "takerAddress", + "type": "address" + }, + { + "name": "feeRecipientAddress", + "type": "address" + }, + { + "name": "senderAddress", + "type": "address" + }, + { + "name": "makerAssetAmount", + "type": "uint256" + }, + { + "name": "takerAssetAmount", + "type": "uint256" + }, + { + "name": "makerFee", + "type": "uint256" + }, + { + "name": "takerFee", + "type": "uint256" + }, + { + "name": "expirationTimeSeconds", + "type": "uint256" + }, + { + "name": "salt", + "type": "uint256" + }, + { + "name": "makerAssetData", + "type": "bytes" + }, + { + "name": "takerAssetData", + "type": "bytes" + } + ], + "name": "orders", + "type": "tuple[]" + }, + { + "name": "txOrigin", + "type": "address" + }, + { + "name": "transactionSignature", + "type": "bytes" + }, + { + "name": "approvalExpirationTimeSeconds", + "type": "uint256[]" + }, + { + "name": "approvalSignatures", + "type": "bytes[]" + } + ], + "name": "assertValidTransactionOrdersApproval", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_exchange", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "0x60806040523480156200001157600080fd5b506040516020806200238083398101806040526200003391908101906200022b565b604080517f454950373132446f6d61696e28000000000000000000000000000000000000006020808301919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8301527f737472696e672076657273696f6e2c000000000000000000000000000000000060398301527f6164647265737320766572696679696e67436f6e74726163740000000000000060488301527f29000000000000000000000000000000000000000000000000000000000000006061830152825180830360420181526062830180855281519183019190912060a28401855260179091527f30782050726f746f636f6c20436f6f7264696e61746f7200000000000000000060829093019290925282518084018452600581527f312e302e30000000000000000000000000000000000000000000000000000000908201528251808201929092527f626d101e477fd17dd52afb3f9ad9eb016bf60f6e377877f34e8f3ea84c930236828401527f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c6060830152306080808401919091528351808403909101815260a0909201909252805191012060005560018054600160a060020a031916600160a060020a039290921691909117905562000273565b600062000224825162000260565b9392505050565b6000602082840312156200023e57600080fd5b60006200024c848462000216565b949350505050565b600160a060020a031690565b60006200026d8262000254565b92915050565b6120fd80620002836000396000f3fe608060405234801561001057600080fd5b5060043610610084576000357c010000000000000000000000000000000000000000000000000000000090048063d2df07331161006d578063d2df0733146100c7578063e306f779146100da578063e3b1aa86146100ef57610084565b80630f7d8e391461008957806390c3bc3f146100b2575b600080fd5b61009c610097366004611888565b610102565b6040516100a99190611e6f565b60405180910390f35b6100c56100c036600461196e565b6104f7565b005b6100c56100d536600461196e565b6105a3565b6100e26105d4565b6040516100a99190611e7d565b6100c56100fd366004611a42565b6105da565b6000808251111515610149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f3b565b60405180910390fd5b600061015483610821565b7f010000000000000000000000000000000000000000000000000000000000000090049050600360ff8216106101b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b60008160ff1660038111156101c757fe5b905060008160038111156101d757fe5b141561020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f2b565b600181600381111561021d57fe5b141561035b57835160411461025e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b600084600081518110151561026f57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006102b186600163ffffffff6108e516565b905060006102c687602163ffffffff6108e516565b905060018884848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015196506104f195505050505050565b600281600381111561036957fe5b14156104bf5783516041146103aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b60008460008151811015156103bb57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006103fd86600163ffffffff6108e516565b9050600061041287602163ffffffff6108e516565b905060018860405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012084848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b92915050565b61050485858585856105a3565b6001548551602087015160408089015190517fbfc8bfce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9094169363bfc8bfce9361056a93909290918990600401611f5b565b600060405180830381600087803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b505050505050505050565b60606105b28660400151610930565b90506000815111156105cc576105cc8682878787876105da565b505050505050565b60005481565b3273ffffffffffffffffffffffffffffffffffffffff851614610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f0b565b600061063487610de8565b60408051600080825260208201909252845192935091905b80821461073c576000868281518110151561066357fe5b906020019060200201519050610677611220565b506040805160808101825273ffffffffffffffffffffffffffffffffffffffff8b16815260208101879052908101899052606081018290524282116106e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611edb565b60006106f382610dfb565b90506000610718828a8781518110151561070957fe5b90602001906020020151610102565b905061072a878263ffffffff610e0916565b9650506001909301925061064c915050565b5061074d823263ffffffff610e0916565b885190925060005b8082146108145789516000908b908390811061076d57fe5b906020019060200201516060015173ffffffffffffffffffffffffffffffffffffffff16141561079c5761080c565b60008a828151811015156107ac57fe5b6020908102909101015160400151905060006107ce868363ffffffff610ed316565b9050801515610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e9b565b50505b600101610755565b5050505050505050505050565b600080825111151561085f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f1b565b815182907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061088f57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507f0100000000000000000000000000000000000000000000000000000000000000908190040290565b600081602001835110151515610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eeb565b50016020015190565b60606000610944838263ffffffff610f1016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4be83d50000000000000000000000000000000000000000000000000000000014806109d757507fffffffff0000000000000000000000000000000000000000000000000000000081167f3e228bae00000000000000000000000000000000000000000000000000000000145b80610a2357507fffffffff0000000000000000000000000000000000000000000000000000000081167f64a3bc1500000000000000000000000000000000000000000000000000000000145b15610aad57610a30611248565b8351610a4690859060049063ffffffff610f7d16565b806020019051610a5991908101906118da565b604080516001808252818301909252919250816020015b610a78611248565b815260200190600190039081610a7057905050925080836000815181101515610a9d57fe5b6020908102909101015250610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f297bb70b000000000000000000000000000000000000000000000000000000001480610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f50dde19000000000000000000000000000000000000000000000000000000000145b80610b8a57507fffffffff0000000000000000000000000000000000000000000000000000000081167f4d0ae54600000000000000000000000000000000000000000000000000000000145b80610bd657507fffffffff0000000000000000000000000000000000000000000000000000000081167fe5fa431b00000000000000000000000000000000000000000000000000000000145b80610c2257507fffffffff0000000000000000000000000000000000000000000000000000000081167fa3e2038000000000000000000000000000000000000000000000000000000000145b80610c6e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f7e1d980800000000000000000000000000000000000000000000000000000000145b80610cba57507fffffffff0000000000000000000000000000000000000000000000000000000081167fdd1c7d1800000000000000000000000000000000000000000000000000000000145b15610cef578251610cd590849060049063ffffffff610f7d16565b806020019051610ce8919081019061184b565b9150610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f3c28d861000000000000000000000000000000000000000000000000000000001415610de257610d41611248565b610d49611248565b8451610d5f90869060049063ffffffff610f7d16565b806020019051610d72919081019061190f565b60408051600280825260608201909252929450909250816020015b610d95611248565b815260200190600190039081610d8d57905050935081846000815181101515610dba57fe5b602090810290910101528351819085906001908110610dd557fe5b6020908102909101015250505b50919050565b60006104f1610df683611049565b6110b7565b60006104f1610df6836110f7565b815160405160609184906020808202808401820192910182851015610e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ecb565b82851115610e7457610e6d858583611156565b8497508793505b600182019150602081019050808401925082945081885284604052868860018403815181101515610ea157fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152508694505050505092915050565b6000602083510260208401818101815b81811015610f0657805180871415610efd57600195508291505b50602001610ee3565b5050505092915050565b600081600401835110151515610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f4b565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610fb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eab565b8351821115610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ebb565b8282036040519080825280601f01601f191660200182016040528015611021576020820181803883390190505b5090506110426110308261121a565b8461103a8761121a565b018351611156565b9392505050565b604081810151825160209384015182519285019290922083517f213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c81529485019190915273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260608201526080902090565b6000546040517f19010000000000000000000000000000000000000000000000000000000000008152600281019190915260228101919091526042902090565b604080820151825160208085015160608681015185519584019590952086517f2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e058152938401949094529482015292830152608082015260a09020919050565b6020811015611180576001816020036101000a038019835116818551168082178652505050611215565b8282141561118d57611215565b828211156111c75760208103905080820181840181515b828510156111bf5784518652602095860195909401936111a4565b905250611215565b60208103905080820181840183515b8186121561121057825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111d6565b855250505b505050565b60200190565b6040805160808101825260008082526020820181905260609282018390529181019190915290565b61018060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b60006110428235612038565b60006110428251612038565b6000601f8201831361132b57600080fd5b813561133e61133982611fcd565b611fa6565b81815260209384019390925082018360005b83811015610f06578135860161136688826114b2565b8452506020928301929190910190600101611350565b6000601f8201831361138d57600080fd5b815161139b61133982611fcd565b81815260209384019390925082018360005b83811015610f0657815186016113c38882611690565b84525060209283019291909101906001016113ad565b6000601f820183136113ea57600080fd5b81356113f861133982611fcd565b81815260209384019390925082018360005b83811015610f0657813586016114208882611547565b845250602092830192919091019060010161140a565b6000601f8201831361144757600080fd5b813561145561133982611fcd565b9150818183526020840193506020810190508385602084028201111561147a57600080fd5b60005b83811015610f06578161149088826114a6565b845250602092830192919091019060010161147d565b60006110428235612043565b6000601f820183136114c357600080fd5b81356114d161133982611fee565b915080825260208301602083018583830111156114ed57600080fd5b6114f883828461205f565b50505092915050565b6000601f8201831361151257600080fd5b815161152061133982611fee565b9150808252602083016020830185838301111561153c57600080fd5b6114f883828461206b565b6000610180828403121561155a57600080fd5b611565610180611fa6565b905060006115738484611302565b825250602061158484848301611302565b602083015250604061159884828501611302565b60408301525060606115ac84828501611302565b60608301525060806115c0848285016114a6565b60808301525060a06115d4848285016114a6565b60a08301525060c06115e8848285016114a6565b60c08301525060e06115fc848285016114a6565b60e083015250610100611611848285016114a6565b61010083015250610120611627848285016114a6565b6101208301525061014082013567ffffffffffffffff81111561164957600080fd5b611655848285016114b2565b6101408301525061016082013567ffffffffffffffff81111561167757600080fd5b611683848285016114b2565b6101608301525092915050565b600061018082840312156116a357600080fd5b6116ae610180611fa6565b905060006116bc848461130e565b82525060206116cd8484830161130e565b60208301525060406116e18482850161130e565b60408301525060606116f58482850161130e565b60608301525060806117098482850161183f565b60808301525060a061171d8482850161183f565b60a08301525060c06117318482850161183f565b60c08301525060e06117458482850161183f565b60e08301525061010061175a8482850161183f565b610100830152506101206117708482850161183f565b6101208301525061014082015167ffffffffffffffff81111561179257600080fd5b61179e84828501611501565b6101408301525061016082015167ffffffffffffffff8111156117c057600080fd5b61168384828501611501565b6000606082840312156117de57600080fd5b6117e86060611fa6565b905060006117f684846114a6565b825250602061180784848301611302565b602083015250604082013567ffffffffffffffff81111561182757600080fd5b611833848285016114b2565b60408301525092915050565b60006110428251612043565b60006020828403121561185d57600080fd5b815167ffffffffffffffff81111561187457600080fd5b6118808482850161137c565b949350505050565b6000806040838503121561189b57600080fd5b60006118a785856114a6565b925050602083013567ffffffffffffffff8111156118c457600080fd5b6118d0858286016114b2565b9150509250929050565b6000602082840312156118ec57600080fd5b815167ffffffffffffffff81111561190357600080fd5b61188084828501611690565b6000806040838503121561192257600080fd5b825167ffffffffffffffff81111561193957600080fd5b61194585828601611690565b925050602083015167ffffffffffffffff81111561196257600080fd5b6118d085828601611690565b600080600080600060a0868803121561198657600080fd5b853567ffffffffffffffff81111561199d57600080fd5b6119a9888289016117cc565b95505060206119ba88828901611302565b945050604086013567ffffffffffffffff8111156119d757600080fd5b6119e3888289016114b2565b935050606086013567ffffffffffffffff811115611a0057600080fd5b611a0c88828901611436565b925050608086013567ffffffffffffffff811115611a2957600080fd5b611a358882890161131a565b9150509295509295909350565b60008060008060008060c08789031215611a5b57600080fd5b863567ffffffffffffffff811115611a7257600080fd5b611a7e89828a016117cc565b965050602087013567ffffffffffffffff811115611a9b57600080fd5b611aa789828a016113d9565b9550506040611ab889828a01611302565b945050606087013567ffffffffffffffff811115611ad557600080fd5b611ae189828a016114b2565b935050608087013567ffffffffffffffff811115611afe57600080fd5b611b0a89828a01611436565b92505060a087013567ffffffffffffffff811115611b2757600080fd5b611b3389828a0161131a565b9150509295509295509295565b611b4981612038565b82525050565b611b4981612043565b6000611b6382612034565b808452611b7781602086016020860161206b565b611b808161209b565b9093016020019392505050565b601281527f4c454e4754485f36355f52455155495245440000000000000000000000000000602082015260400190565b601a81527f494e56414c49445f415050524f56414c5f5349474e4154555245000000000000602082015260400190565b601a81527f46524f4d5f4c4553535f5448414e5f544f5f5245515549524544000000000000602082015260400190565b601c81527f544f5f4c4553535f5448414e5f4c454e4754485f524551554952454400000000602082015260400190565b601781527f494e56414c49445f465245455f4d454d4f52595f505452000000000000000000602082015260400190565b601081527f415050524f56414c5f4558504952454400000000000000000000000000000000602082015260400190565b602681527f475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f524560208201527f5155495245440000000000000000000000000000000000000000000000000000604082015260600190565b601581527f5349474e41545552455f554e535550504f525445440000000000000000000000602082015260400190565b600e81527f494e56414c49445f4f524947494e000000000000000000000000000000000000602082015260400190565b602181527f475245415445525f5448414e5f5a45524f5f4c454e4754485f5245515549524560208201527f4400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601181527f5349474e41545552455f494c4c4547414c000000000000000000000000000000602082015260400190565b601e81527f4c454e4754485f475245415445525f5448414e5f305f52455155495245440000602082015260400190565b602581527f475245415445525f4f525f455155414c5f544f5f345f4c454e4754485f52455160208201527f5549524544000000000000000000000000000000000000000000000000000000604082015260600190565b602081016104f18284611b40565b602081016104f18284611b4f565b602080825281016104f181611b8d565b602080825281016104f181611bbd565b602080825281016104f181611bed565b602080825281016104f181611c1d565b602080825281016104f181611c4d565b602080825281016104f181611c7d565b602080825281016104f181611cad565b602080825281016104f181611d03565b602080825281016104f181611d33565b602080825281016104f181611d63565b602080825281016104f181611db9565b602080825281016104f181611de9565b602080825281016104f181611e19565b60808101611f698287611b4f565b611f766020830186611b40565b8181036040830152611f888185611b58565b90508181036060830152611f9c8184611b58565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611fc557600080fd5b604052919050565b600067ffffffffffffffff821115611fe457600080fd5b5060209081020190565b600067ffffffffffffffff82111561200557600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b60006104f182612046565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561208657818101518382015260200161206e565b83811115612095576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a7230582013be4e9e281ff59b6be3d1c4c7af6075c7d255edc60be429d25841f98f287b3e6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH3 0x2380 DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE PUSH3 0x33 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x22B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x454950373132446F6D61696E2800000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x737472696E67206E616D652C0000000000000000000000000000000000000000 PUSH1 0x2D DUP4 ADD MSTORE PUSH32 0x737472696E672076657273696F6E2C0000000000000000000000000000000000 PUSH1 0x39 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x2900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x61 DUP4 ADD MSTORE DUP3 MLOAD DUP1 DUP4 SUB PUSH1 0x42 ADD DUP2 MSTORE PUSH1 0x62 DUP4 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xA2 DUP5 ADD DUP6 MSTORE PUSH1 0x17 SWAP1 SWAP2 MSTORE PUSH32 0x30782050726F746F636F6C20436F6F7264696E61746F72000000000000000000 PUSH1 0x82 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH32 0x312E302E30000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x626D101E477FD17DD52AFB3F9AD9EB016BF60F6E377877F34E8F3EA84C930236 DUP3 DUP5 ADD MSTORE PUSH32 0x6C015BD22B4C69690933C1058878EBDFEF31F9AAAE40BBE86D8A09FE1B2972C PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x273 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x224 DUP3 MLOAD PUSH3 0x260 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x24C DUP5 DUP5 PUSH3 0x216 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x26D DUP3 PUSH3 0x254 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20FD DUP1 PUSH3 0x283 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x84 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0xD2DF0733 GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD2DF0733 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0xE306F779 EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0xE3B1AA86 EQ PUSH2 0xEF JUMPI PUSH2 0x84 JUMP JUMPDEST DUP1 PUSH4 0xF7D8E39 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x90C3BC3F EQ PUSH2 0xB2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x1888 JUMP JUMPDEST PUSH2 0x102 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x4F7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH2 0xD5 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xE2 PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1A42 JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x149 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP4 PUSH2 0x821 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0x3 PUSH1 0xFF DUP3 AND LT PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F2B JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x35B JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x25E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x26F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x2B1 DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C6 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP7 POP PUSH2 0x4F1 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x369 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4BF JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x3BB JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x3FD DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x412 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP PUSH1 0x1C ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x504 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP1 DUP10 ADD MLOAD SWAP1 MLOAD PUSH32 0xBFC8BFCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND SWAP4 PUSH4 0xBFC8BFCE SWAP4 PUSH2 0x56A SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x598 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5B2 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x930 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0x5CC JUMPI PUSH2 0x5CC DUP7 DUP3 DUP8 DUP8 DUP8 DUP8 PUSH2 0x5DA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST ORIGIN PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x634 DUP8 PUSH2 0xDE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE DUP5 MLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 JUMPDEST DUP1 DUP3 EQ PUSH2 0x73C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x663 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD SWAP1 POP PUSH2 0x677 PUSH2 0x1220 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE TIMESTAMP DUP3 GT PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EDB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F3 DUP3 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x718 DUP3 DUP11 DUP8 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x709 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x102 JUMP JUMPDEST SWAP1 POP PUSH2 0x72A DUP8 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST SWAP7 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x64C SWAP2 POP POP JUMP JUMPDEST POP PUSH2 0x74D DUP3 ORIGIN PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST DUP9 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 JUMPDEST DUP1 DUP3 EQ PUSH2 0x814 JUMPI DUP10 MLOAD PUSH1 0x0 SWAP1 DUP12 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x76D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x79C JUMPI PUSH2 0x80C JUMP JUMPDEST PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x7AC JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7CE DUP7 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xED3 AND JUMP JUMPDEST SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x755 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F1B JUMP JUMPDEST DUP2 MLOAD DUP3 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 LT PUSH2 0x88F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0x927 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EEB JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x944 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF10 AND JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB4BE83D500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9D7 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3E228BAE00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xA23 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x64A3BC1500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xAAD JUMPI PUSH2 0xA30 PUSH2 0x1248 JUMP JUMPDEST DUP4 MLOAD PUSH2 0xA46 SWAP1 DUP6 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xA59 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xA78 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA70 JUMPI SWAP1 POP POP SWAP3 POP DUP1 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA9D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x297BB70B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xB3E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x50DDE19000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB8A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4D0AE54600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xBD6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xE5FA431B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC22 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xA3E2038000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC6E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x7E1D980800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCBA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDD1C7D1800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xCEF JUMPI DUP3 MLOAD PUSH2 0xCD5 SWAP1 DUP5 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xCE8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x184B JUMP JUMPDEST SWAP2 POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3C28D86100000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xDE2 JUMPI PUSH2 0xD41 PUSH2 0x1248 JUMP JUMPDEST PUSH2 0xD49 PUSH2 0x1248 JUMP JUMPDEST DUP5 MLOAD PUSH2 0xD5F SWAP1 DUP7 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xD72 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x190F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xD95 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD8D JUMPI SWAP1 POP POP SWAP4 POP DUP2 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xDBA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD DUP2 SWAP1 DUP6 SWAP1 PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0xDD5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x1049 JUMP JUMPDEST PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x10F7 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 MLOAD PUSH1 0x60 SWAP2 DUP5 SWAP1 PUSH1 0x20 DUP1 DUP3 MUL DUP1 DUP5 ADD DUP3 ADD SWAP3 SWAP2 ADD DUP3 DUP6 LT ISZERO PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1ECB JUMP JUMPDEST DUP3 DUP6 GT ISZERO PUSH2 0xE74 JUMPI PUSH2 0xE6D DUP6 DUP6 DUP4 PUSH2 0x1156 JUMP JUMPDEST DUP5 SWAP8 POP DUP8 SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP1 DUP5 ADD SWAP3 POP DUP3 SWAP5 POP DUP2 DUP9 MSTORE DUP5 PUSH1 0x40 MSTORE DUP7 DUP9 PUSH1 0x1 DUP5 SUB DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xEA1 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP7 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 MLOAD MUL PUSH1 0x20 DUP5 ADD DUP2 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP1 MLOAD DUP1 DUP8 EQ ISZERO PUSH2 0xEFD JUMPI PUSH1 0x1 SWAP6 POP DUP3 SWAP2 POP JUMPDEST POP PUSH1 0x20 ADD PUSH2 0xEE3 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F4B JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 GT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EAB JUMP JUMPDEST DUP4 MLOAD DUP3 GT ISZERO PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST DUP3 DUP3 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1042 PUSH2 0x1030 DUP3 PUSH2 0x121A JUMP JUMPDEST DUP5 PUSH2 0x103A DUP8 PUSH2 0x121A JUMP JUMPDEST ADD DUP4 MLOAD PUSH2 0x1156 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 DUP2 ADD MLOAD DUP3 MLOAD PUSH1 0x20 SWAP4 DUP5 ADD MLOAD DUP3 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP4 MLOAD PUSH32 0x213C6F636F3EA94E701C0ADF9B2624AA45A6C694F9A292C094F9A81C24B5DF4C DUP2 MSTORE SWAP5 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 DUP2 ADD MLOAD DUP6 MLOAD SWAP6 DUP5 ADD SWAP6 SWAP1 SWAP6 KECCAK256 DUP7 MLOAD PUSH32 0x2FBCDBAA76BC7589916958AE919DFBEF04D23F6BBF26DE6FF317B32C6CC01E05 DUP2 MSTORE SWAP4 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 DUP3 ADD MSTORE SWAP3 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1180 JUMPI PUSH1 0x1 DUP2 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP4 MLOAD AND DUP2 DUP6 MLOAD AND DUP1 DUP3 OR DUP7 MSTORE POP POP POP PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 EQ ISZERO PUSH2 0x118D JUMPI PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH2 0x11C7 JUMPI PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP2 MLOAD JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0x11BF JUMPI DUP5 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 MSTORE POP PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP4 MLOAD JUMPDEST DUP2 DUP7 SLT ISZERO PUSH2 0x1210 JUMPI DUP3 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x11D6 JUMP JUMPDEST DUP6 MSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x132B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x133E PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x1FA6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1366 DUP9 DUP3 PUSH2 0x14B2 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1350 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x139B PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x13C3 DUP9 DUP3 PUSH2 0x1690 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x13EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13F8 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1420 DUP9 DUP3 PUSH2 0x1547 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x140A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1455 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x147A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 PUSH2 0x1490 DUP9 DUP3 PUSH2 0x14A6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x14C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x14D1 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x14ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x205F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1520 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x153C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x206B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1565 PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1573 DUP5 DUP5 PUSH2 0x1302 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1584 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1598 DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x15AC DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x15C0 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x15D4 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x15E8 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x15FC DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x1611 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1627 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1655 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16AE PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16BC DUP5 DUP5 PUSH2 0x130E JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x16CD DUP5 DUP5 DUP4 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x16E1 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x16F5 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x1709 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x171D DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x1731 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x1745 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x175A DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1770 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x179E DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E8 PUSH1 0x60 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17F6 DUP5 DUP5 PUSH2 0x14A6 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1807 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1833 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x137C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x189B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18A7 DUP6 DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1945 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x199D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A9 DUP9 DUP3 DUP10 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x19BA DUP9 DUP3 DUP10 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19E3 DUP9 DUP3 DUP10 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A0C DUP9 DUP3 DUP10 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A35 DUP9 DUP3 DUP10 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1A5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7E DUP10 DUP3 DUP11 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA7 DUP10 DUP3 DUP11 ADD PUSH2 0x13D9 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x1AB8 DUP10 DUP3 DUP11 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AE1 DUP10 DUP3 DUP11 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B0A DUP10 DUP3 DUP11 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B33 DUP10 DUP3 DUP11 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2038 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x2034 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x1B77 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x206B JUMP JUMPDEST PUSH2 0x1B80 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH32 0x4C454E4754485F36355F52455155495245440000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x494E56414C49445F415050524F56414C5F5349474E4154555245000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x46524F4D5F4C4553535F5448414E5F544F5F5245515549524544000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1C DUP2 MSTORE PUSH32 0x544F5F4C4553535F5448414E5F4C454E4754485F524551554952454400000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x17 DUP2 MSTORE PUSH32 0x494E56414C49445F465245455F4D454D4F52595F505452000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x10 DUP2 MSTORE PUSH32 0x415050524F56414C5F4558504952454400000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F33325F4C454E4754485F5245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5155495245440000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x15 DUP2 MSTORE PUSH32 0x5349474E41545552455F554E535550504F525445440000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xE DUP2 MSTORE PUSH32 0x494E56414C49445F4F524947494E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x21 DUP2 MSTORE PUSH32 0x475245415445525F5448414E5F5A45524F5F4C454E4754485F52455155495245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH32 0x5349474E41545552455F494C4C4547414C000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1E DUP2 MSTORE PUSH32 0x4C454E4754485F475245415445525F5448414E5F305F52455155495245440000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x25 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F345F4C454E4754485F524551 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5549524544000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B40 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B4F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1B8D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C1D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C7D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1CAD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DB9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1E19 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1F69 DUP3 DUP8 PUSH2 0x1B4F JUMP JUMPDEST PUSH2 0x1F76 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1B40 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1F88 DUP2 DUP6 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1F9C DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 DUP3 PUSH2 0x2046 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2086 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x206E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 SGT 0xbe 0x4e SWAP15 0x28 0x1f CREATE2 SWAP12 PUSH12 0xE3D1C4C7AF6075C7D255EDC6 SIGNEXTEND 0xe4 0x29 0xd2 PC COINBASE 0xf9 DUP16 0x28 PUSH28 0x3E6C6578706572696D656E74616CF500370000000000000000000000 ", + "sourceMap": "837:227:0:-;;;977:85;8:9:-1;5:2;;;30:1;27;20:12;5:2;977:85:0;;;;;;;;;;;;;;;;;;;;;;1067:148:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1067:148:10;;;;;;1057:159;;;;;;;;;1533:18;;;;;;;;;;;;;;;;;;1583:21;;;;;;;;;;;;;;;1438:214;;;;;;;;;1517:36;1438:214;;;;1567:39;1438:214;;;;1636:4;1438:214;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1438:214:10;;;;;;;1428:225;;;;;-1:-1:-1;1407:246:10;1067:148;830:35:8;;-1:-1:-1;;;;;;830:35:8;-1:-1:-1;;;;;830:35:8;;;;;;;;;;837:227:0;;5:122:-1;;83:39;114:6;108:13;83:39;;;74:48;68:59;-1:-1;;;68:59;134:263;;249:2;237:9;228:7;224:23;220:32;217:2;;;265:1;262;255:12;217:2;300:1;317:64;373:7;353:9;317:64;;;307:74;211:186;-1:-1;;;;211:186;404:128;-1:-1;;;;;473:54;;456:76;539:105;;608:31;633:5;608:31;;;597:42;591:53;-1:-1;;591:53;;837:227:0;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b5060043610610084576000357c010000000000000000000000000000000000000000000000000000000090048063d2df07331161006d578063d2df0733146100c7578063e306f779146100da578063e3b1aa86146100ef57610084565b80630f7d8e391461008957806390c3bc3f146100b2575b600080fd5b61009c610097366004611888565b610102565b6040516100a99190611e6f565b60405180910390f35b6100c56100c036600461196e565b6104f7565b005b6100c56100d536600461196e565b6105a3565b6100e26105d4565b6040516100a99190611e7d565b6100c56100fd366004611a42565b6105da565b6000808251111515610149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f3b565b60405180910390fd5b600061015483610821565b7f010000000000000000000000000000000000000000000000000000000000000090049050600360ff8216106101b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b60008160ff1660038111156101c757fe5b905060008160038111156101d757fe5b141561020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f2b565b600181600381111561021d57fe5b141561035b57835160411461025e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b600084600081518110151561026f57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006102b186600163ffffffff6108e516565b905060006102c687602163ffffffff6108e516565b905060018884848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015196506104f195505050505050565b600281600381111561036957fe5b14156104bf5783516041146103aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e8b565b60008460008151811015156103bb57fe5b01602001517f010000000000000000000000000000000000000000000000000000000000000090819004810204905060006103fd86600163ffffffff6108e516565b9050600061041287602163ffffffff6108e516565b905060018860405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012084848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610325573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611efb565b92915050565b61050485858585856105a3565b6001548551602087015160408089015190517fbfc8bfce00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9094169363bfc8bfce9361056a93909290918990600401611f5b565b600060405180830381600087803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b505050505050505050565b60606105b28660400151610930565b90506000815111156105cc576105cc8682878787876105da565b505050505050565b60005481565b3273ffffffffffffffffffffffffffffffffffffffff851614610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f0b565b600061063487610de8565b60408051600080825260208201909252845192935091905b80821461073c576000868281518110151561066357fe5b906020019060200201519050610677611220565b506040805160808101825273ffffffffffffffffffffffffffffffffffffffff8b16815260208101879052908101899052606081018290524282116106e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611edb565b60006106f382610dfb565b90506000610718828a8781518110151561070957fe5b90602001906020020151610102565b905061072a878263ffffffff610e0916565b9650506001909301925061064c915050565b5061074d823263ffffffff610e0916565b885190925060005b8082146108145789516000908b908390811061076d57fe5b906020019060200201516060015173ffffffffffffffffffffffffffffffffffffffff16141561079c5761080c565b60008a828151811015156107ac57fe5b6020908102909101015160400151905060006107ce868363ffffffff610ed316565b9050801515610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611e9b565b50505b600101610755565b5050505050505050505050565b600080825111151561085f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f1b565b815182907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061088f57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507f0100000000000000000000000000000000000000000000000000000000000000908190040290565b600081602001835110151515610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eeb565b50016020015190565b60606000610944838263ffffffff610f1016565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb4be83d50000000000000000000000000000000000000000000000000000000014806109d757507fffffffff0000000000000000000000000000000000000000000000000000000081167f3e228bae00000000000000000000000000000000000000000000000000000000145b80610a2357507fffffffff0000000000000000000000000000000000000000000000000000000081167f64a3bc1500000000000000000000000000000000000000000000000000000000145b15610aad57610a30611248565b8351610a4690859060049063ffffffff610f7d16565b806020019051610a5991908101906118da565b604080516001808252818301909252919250816020015b610a78611248565b815260200190600190039081610a7057905050925080836000815181101515610a9d57fe5b6020908102909101015250610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f297bb70b000000000000000000000000000000000000000000000000000000001480610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f50dde19000000000000000000000000000000000000000000000000000000000145b80610b8a57507fffffffff0000000000000000000000000000000000000000000000000000000081167f4d0ae54600000000000000000000000000000000000000000000000000000000145b80610bd657507fffffffff0000000000000000000000000000000000000000000000000000000081167fe5fa431b00000000000000000000000000000000000000000000000000000000145b80610c2257507fffffffff0000000000000000000000000000000000000000000000000000000081167fa3e2038000000000000000000000000000000000000000000000000000000000145b80610c6e57507fffffffff0000000000000000000000000000000000000000000000000000000081167f7e1d980800000000000000000000000000000000000000000000000000000000145b80610cba57507fffffffff0000000000000000000000000000000000000000000000000000000081167fdd1c7d1800000000000000000000000000000000000000000000000000000000145b15610cef578251610cd590849060049063ffffffff610f7d16565b806020019051610ce8919081019061184b565b9150610de2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f3c28d861000000000000000000000000000000000000000000000000000000001415610de257610d41611248565b610d49611248565b8451610d5f90869060049063ffffffff610f7d16565b806020019051610d72919081019061190f565b60408051600280825260608201909252929450909250816020015b610d95611248565b815260200190600190039081610d8d57905050935081846000815181101515610dba57fe5b602090810290910101528351819085906001908110610dd557fe5b6020908102909101015250505b50919050565b60006104f1610df683611049565b6110b7565b60006104f1610df6836110f7565b815160405160609184906020808202808401820192910182851015610e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ecb565b82851115610e7457610e6d858583611156565b8497508793505b600182019150602081019050808401925082945081885284604052868860018403815181101515610ea157fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152508694505050505092915050565b6000602083510260208401818101815b81811015610f0657805180871415610efd57600195508291505b50602001610ee3565b5050505092915050565b600081600401835110151515610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611f4b565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b606081831115610fb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611eab565b8351821115610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014090611ebb565b8282036040519080825280601f01601f191660200182016040528015611021576020820181803883390190505b5090506110426110308261121a565b8461103a8761121a565b018351611156565b9392505050565b604081810151825160209384015182519285019290922083517f213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c81529485019190915273ffffffffffffffffffffffffffffffffffffffff9091169183019190915260608201526080902090565b6000546040517f19010000000000000000000000000000000000000000000000000000000000008152600281019190915260228101919091526042902090565b604080820151825160208085015160608681015185519584019590952086517f2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e058152938401949094529482015292830152608082015260a09020919050565b6020811015611180576001816020036101000a038019835116818551168082178652505050611215565b8282141561118d57611215565b828211156111c75760208103905080820181840181515b828510156111bf5784518652602095860195909401936111a4565b905250611215565b60208103905080820181840183515b8186121561121057825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906111d6565b855250505b505050565b60200190565b6040805160808101825260008082526020820181905260609282018390529181019190915290565b61018060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b60006110428235612038565b60006110428251612038565b6000601f8201831361132b57600080fd5b813561133e61133982611fcd565b611fa6565b81815260209384019390925082018360005b83811015610f06578135860161136688826114b2565b8452506020928301929190910190600101611350565b6000601f8201831361138d57600080fd5b815161139b61133982611fcd565b81815260209384019390925082018360005b83811015610f0657815186016113c38882611690565b84525060209283019291909101906001016113ad565b6000601f820183136113ea57600080fd5b81356113f861133982611fcd565b81815260209384019390925082018360005b83811015610f0657813586016114208882611547565b845250602092830192919091019060010161140a565b6000601f8201831361144757600080fd5b813561145561133982611fcd565b9150818183526020840193506020810190508385602084028201111561147a57600080fd5b60005b83811015610f06578161149088826114a6565b845250602092830192919091019060010161147d565b60006110428235612043565b6000601f820183136114c357600080fd5b81356114d161133982611fee565b915080825260208301602083018583830111156114ed57600080fd5b6114f883828461205f565b50505092915050565b6000601f8201831361151257600080fd5b815161152061133982611fee565b9150808252602083016020830185838301111561153c57600080fd5b6114f883828461206b565b6000610180828403121561155a57600080fd5b611565610180611fa6565b905060006115738484611302565b825250602061158484848301611302565b602083015250604061159884828501611302565b60408301525060606115ac84828501611302565b60608301525060806115c0848285016114a6565b60808301525060a06115d4848285016114a6565b60a08301525060c06115e8848285016114a6565b60c08301525060e06115fc848285016114a6565b60e083015250610100611611848285016114a6565b61010083015250610120611627848285016114a6565b6101208301525061014082013567ffffffffffffffff81111561164957600080fd5b611655848285016114b2565b6101408301525061016082013567ffffffffffffffff81111561167757600080fd5b611683848285016114b2565b6101608301525092915050565b600061018082840312156116a357600080fd5b6116ae610180611fa6565b905060006116bc848461130e565b82525060206116cd8484830161130e565b60208301525060406116e18482850161130e565b60408301525060606116f58482850161130e565b60608301525060806117098482850161183f565b60808301525060a061171d8482850161183f565b60a08301525060c06117318482850161183f565b60c08301525060e06117458482850161183f565b60e08301525061010061175a8482850161183f565b610100830152506101206117708482850161183f565b6101208301525061014082015167ffffffffffffffff81111561179257600080fd5b61179e84828501611501565b6101408301525061016082015167ffffffffffffffff8111156117c057600080fd5b61168384828501611501565b6000606082840312156117de57600080fd5b6117e86060611fa6565b905060006117f684846114a6565b825250602061180784848301611302565b602083015250604082013567ffffffffffffffff81111561182757600080fd5b611833848285016114b2565b60408301525092915050565b60006110428251612043565b60006020828403121561185d57600080fd5b815167ffffffffffffffff81111561187457600080fd5b6118808482850161137c565b949350505050565b6000806040838503121561189b57600080fd5b60006118a785856114a6565b925050602083013567ffffffffffffffff8111156118c457600080fd5b6118d0858286016114b2565b9150509250929050565b6000602082840312156118ec57600080fd5b815167ffffffffffffffff81111561190357600080fd5b61188084828501611690565b6000806040838503121561192257600080fd5b825167ffffffffffffffff81111561193957600080fd5b61194585828601611690565b925050602083015167ffffffffffffffff81111561196257600080fd5b6118d085828601611690565b600080600080600060a0868803121561198657600080fd5b853567ffffffffffffffff81111561199d57600080fd5b6119a9888289016117cc565b95505060206119ba88828901611302565b945050604086013567ffffffffffffffff8111156119d757600080fd5b6119e3888289016114b2565b935050606086013567ffffffffffffffff811115611a0057600080fd5b611a0c88828901611436565b925050608086013567ffffffffffffffff811115611a2957600080fd5b611a358882890161131a565b9150509295509295909350565b60008060008060008060c08789031215611a5b57600080fd5b863567ffffffffffffffff811115611a7257600080fd5b611a7e89828a016117cc565b965050602087013567ffffffffffffffff811115611a9b57600080fd5b611aa789828a016113d9565b9550506040611ab889828a01611302565b945050606087013567ffffffffffffffff811115611ad557600080fd5b611ae189828a016114b2565b935050608087013567ffffffffffffffff811115611afe57600080fd5b611b0a89828a01611436565b92505060a087013567ffffffffffffffff811115611b2757600080fd5b611b3389828a0161131a565b9150509295509295509295565b611b4981612038565b82525050565b611b4981612043565b6000611b6382612034565b808452611b7781602086016020860161206b565b611b808161209b565b9093016020019392505050565b601281527f4c454e4754485f36355f52455155495245440000000000000000000000000000602082015260400190565b601a81527f494e56414c49445f415050524f56414c5f5349474e4154555245000000000000602082015260400190565b601a81527f46524f4d5f4c4553535f5448414e5f544f5f5245515549524544000000000000602082015260400190565b601c81527f544f5f4c4553535f5448414e5f4c454e4754485f524551554952454400000000602082015260400190565b601781527f494e56414c49445f465245455f4d454d4f52595f505452000000000000000000602082015260400190565b601081527f415050524f56414c5f4558504952454400000000000000000000000000000000602082015260400190565b602681527f475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f524560208201527f5155495245440000000000000000000000000000000000000000000000000000604082015260600190565b601581527f5349474e41545552455f554e535550504f525445440000000000000000000000602082015260400190565b600e81527f494e56414c49445f4f524947494e000000000000000000000000000000000000602082015260400190565b602181527f475245415445525f5448414e5f5a45524f5f4c454e4754485f5245515549524560208201527f4400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601181527f5349474e41545552455f494c4c4547414c000000000000000000000000000000602082015260400190565b601e81527f4c454e4754485f475245415445525f5448414e5f305f52455155495245440000602082015260400190565b602581527f475245415445525f4f525f455155414c5f544f5f345f4c454e4754485f52455160208201527f5549524544000000000000000000000000000000000000000000000000000000604082015260600190565b602081016104f18284611b40565b602081016104f18284611b4f565b602080825281016104f181611b8d565b602080825281016104f181611bbd565b602080825281016104f181611bed565b602080825281016104f181611c1d565b602080825281016104f181611c4d565b602080825281016104f181611c7d565b602080825281016104f181611cad565b602080825281016104f181611d03565b602080825281016104f181611d33565b602080825281016104f181611d63565b602080825281016104f181611db9565b602080825281016104f181611de9565b602080825281016104f181611e19565b60808101611f698287611b4f565b611f766020830186611b40565b8181036040830152611f888185611b58565b90508181036060830152611f9c8184611b58565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611fc557600080fd5b604052919050565b600067ffffffffffffffff821115611fe457600080fd5b5060209081020190565b600067ffffffffffffffff82111561200557600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b60006104f182612046565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561208657818101518382015260200161206e565b83811115612095576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a7230582013be4e9e281ff59b6be3d1c4c7af6075c7d255edc60be429d25841f98f287b3e6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x84 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0xD2DF0733 GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD2DF0733 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0xE306F779 EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0xE3B1AA86 EQ PUSH2 0xEF JUMPI PUSH2 0x84 JUMP JUMPDEST DUP1 PUSH4 0xF7D8E39 EQ PUSH2 0x89 JUMPI DUP1 PUSH4 0x90C3BC3F EQ PUSH2 0xB2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x1888 JUMP JUMPDEST PUSH2 0x102 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x4F7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC5 PUSH2 0xD5 CALLDATASIZE PUSH1 0x4 PUSH2 0x196E JUMP JUMPDEST PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xE2 PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1E7D JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x1A42 JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x149 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F3B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP4 PUSH2 0x821 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DIV SWAP1 POP PUSH1 0x3 PUSH1 0xFF DUP3 AND LT PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1C7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F2B JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x21D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x35B JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x25E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x26F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x2B1 DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C6 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP7 POP PUSH2 0x4F1 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x369 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x4BF JUMPI DUP4 MLOAD PUSH1 0x41 EQ PUSH2 0x3AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E8B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x3BB JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV DUP2 MUL DIV SWAP1 POP PUSH1 0x0 PUSH2 0x3FD DUP7 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x412 DUP8 PUSH1 0x21 PUSH4 0xFFFFFFFF PUSH2 0x8E5 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP9 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP PUSH1 0x1C ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x504 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP1 DUP10 ADD MLOAD SWAP1 MLOAD PUSH32 0xBFC8BFCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND SWAP4 PUSH4 0xBFC8BFCE SWAP4 PUSH2 0x56A SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F5B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x598 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5B2 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x930 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0x5CC JUMPI PUSH2 0x5CC DUP7 DUP3 DUP8 DUP8 DUP8 DUP8 PUSH2 0x5DA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST ORIGIN PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EQ PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x634 DUP8 PUSH2 0xDE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE DUP5 MLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 JUMPDEST DUP1 DUP3 EQ PUSH2 0x73C JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x663 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD SWAP1 POP PUSH2 0x677 PUSH2 0x1220 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE TIMESTAMP DUP3 GT PUSH2 0x6E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EDB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6F3 DUP3 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x718 DUP3 DUP11 DUP8 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x709 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH2 0x102 JUMP JUMPDEST SWAP1 POP PUSH2 0x72A DUP8 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST SWAP7 POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x64C SWAP2 POP POP JUMP JUMPDEST POP PUSH2 0x74D DUP3 ORIGIN PUSH4 0xFFFFFFFF PUSH2 0xE09 AND JUMP JUMPDEST DUP9 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 JUMPDEST DUP1 DUP3 EQ PUSH2 0x814 JUMPI DUP10 MLOAD PUSH1 0x0 SWAP1 DUP12 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x76D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x79C JUMPI PUSH2 0x80C JUMP JUMPDEST PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0x7AC JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7CE DUP7 DUP4 PUSH4 0xFFFFFFFF PUSH2 0xED3 AND JUMP JUMPDEST SWAP1 POP DUP1 ISZERO ISZERO PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x755 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT ISZERO ISZERO PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F1B JUMP JUMPDEST DUP2 MLOAD DUP3 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 LT PUSH2 0x88F JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 SWAP1 DIV MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0x927 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EEB JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x944 DUP4 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xF10 AND JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB4BE83D500000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x9D7 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3E228BAE00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xA23 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x64A3BC1500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xAAD JUMPI PUSH2 0xA30 PUSH2 0x1248 JUMP JUMPDEST DUP4 MLOAD PUSH2 0xA46 SWAP1 DUP6 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xA59 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xA78 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA70 JUMPI SWAP1 POP POP SWAP3 POP DUP1 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xA9D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x297BB70B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xB3E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x50DDE19000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xB8A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x4D0AE54600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xBD6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xE5FA431B00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC22 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xA3E2038000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xC6E JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x7E1D980800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0xCBA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDD1C7D1800000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xCEF JUMPI DUP3 MLOAD PUSH2 0xCD5 SWAP1 DUP5 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xCE8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x184B JUMP JUMPDEST SWAP2 POP PUSH2 0xDE2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x3C28D86100000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xDE2 JUMPI PUSH2 0xD41 PUSH2 0x1248 JUMP JUMPDEST PUSH2 0xD49 PUSH2 0x1248 JUMP JUMPDEST DUP5 MLOAD PUSH2 0xD5F SWAP1 DUP7 SWAP1 PUSH1 0x4 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF7D AND JUMP JUMPDEST DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH2 0xD72 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x190F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xD95 PUSH2 0x1248 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD8D JUMPI SWAP1 POP POP SWAP4 POP DUP2 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xDBA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD DUP2 SWAP1 DUP6 SWAP1 PUSH1 0x1 SWAP1 DUP2 LT PUSH2 0xDD5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP1 SWAP2 ADD ADD MSTORE POP POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x1049 JUMP JUMPDEST PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 PUSH2 0xDF6 DUP4 PUSH2 0x10F7 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 MLOAD PUSH1 0x60 SWAP2 DUP5 SWAP1 PUSH1 0x20 DUP1 DUP3 MUL DUP1 DUP5 ADD DUP3 ADD SWAP3 SWAP2 ADD DUP3 DUP6 LT ISZERO PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1ECB JUMP JUMPDEST DUP3 DUP6 GT ISZERO PUSH2 0xE74 JUMPI PUSH2 0xE6D DUP6 DUP6 DUP4 PUSH2 0x1156 JUMP JUMPDEST DUP5 SWAP8 POP DUP8 SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP1 DUP5 ADD SWAP3 POP DUP3 SWAP5 POP DUP2 DUP9 MSTORE DUP5 PUSH1 0x40 MSTORE DUP7 DUP9 PUSH1 0x1 DUP5 SUB DUP2 MLOAD DUP2 LT ISZERO ISZERO PUSH2 0xEA1 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP DUP7 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 MLOAD MUL PUSH1 0x20 DUP5 ADD DUP2 DUP2 ADD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP1 MLOAD DUP1 DUP8 EQ ISZERO PUSH2 0xEFD JUMPI PUSH1 0x1 SWAP6 POP DUP3 SWAP2 POP JUMPDEST POP PUSH1 0x20 ADD PUSH2 0xEE3 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 ADD DUP4 MLOAD LT ISZERO ISZERO ISZERO PUSH2 0xF52 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1F4B JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP4 GT ISZERO PUSH2 0xFB9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EAB JUMP JUMPDEST DUP4 MLOAD DUP3 GT ISZERO PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x140 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST DUP3 DUP3 SUB PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1042 PUSH2 0x1030 DUP3 PUSH2 0x121A JUMP JUMPDEST DUP5 PUSH2 0x103A DUP8 PUSH2 0x121A JUMP JUMPDEST ADD DUP4 MLOAD PUSH2 0x1156 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 DUP2 ADD MLOAD DUP3 MLOAD PUSH1 0x20 SWAP4 DUP5 ADD MLOAD DUP3 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP4 MLOAD PUSH32 0x213C6F636F3EA94E701C0ADF9B2624AA45A6C694F9A292C094F9A81C24B5DF4C DUP2 MSTORE SWAP5 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x60 DUP7 DUP2 ADD MLOAD DUP6 MLOAD SWAP6 DUP5 ADD SWAP6 SWAP1 SWAP6 KECCAK256 DUP7 MLOAD PUSH32 0x2FBCDBAA76BC7589916958AE919DFBEF04D23F6BBF26DE6FF317B32C6CC01E05 DUP2 MSTORE SWAP4 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 DUP3 ADD MSTORE SWAP3 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1180 JUMPI PUSH1 0x1 DUP2 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP4 MLOAD AND DUP2 DUP6 MLOAD AND DUP1 DUP3 OR DUP7 MSTORE POP POP POP PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 EQ ISZERO PUSH2 0x118D JUMPI PUSH2 0x1215 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH2 0x11C7 JUMPI PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP2 MLOAD JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0x11BF JUMPI DUP5 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP5 ADD SWAP4 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 MSTORE POP PUSH2 0x1215 JUMP JUMPDEST PUSH1 0x20 DUP2 SUB SWAP1 POP DUP1 DUP3 ADD DUP2 DUP5 ADD DUP4 MLOAD JUMPDEST DUP2 DUP7 SLT ISZERO PUSH2 0x1210 JUMPI DUP3 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x11D6 JUMP JUMPDEST DUP6 MSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 SWAP3 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2038 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x132B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x133E PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x1FA6 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1366 DUP9 DUP3 PUSH2 0x14B2 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1350 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x138D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x139B PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 MLOAD DUP7 ADD PUSH2 0x13C3 DUP9 DUP3 PUSH2 0x1690 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x13EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13F8 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 POP DUP3 ADD DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x1420 DUP9 DUP3 PUSH2 0x1547 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x140A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1455 PUSH2 0x1339 DUP3 PUSH2 0x1FCD JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x147A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF06 JUMPI DUP2 PUSH2 0x1490 DUP9 DUP3 PUSH2 0x14A6 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 CALLDATALOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x14C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x14D1 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x14ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x205F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 ADD DUP4 SGT PUSH2 0x1512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1520 PUSH2 0x1339 DUP3 PUSH2 0x1FEE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x153C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F8 DUP4 DUP3 DUP5 PUSH2 0x206B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x155A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1565 PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1573 DUP5 DUP5 PUSH2 0x1302 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1584 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x1598 DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x15AC DUP5 DUP3 DUP6 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x15C0 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x15D4 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x15E8 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x15FC DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x1611 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1627 DUP5 DUP3 DUP6 ADD PUSH2 0x14A6 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1655 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH2 0x160 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16AE PUSH2 0x180 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16BC DUP5 DUP5 PUSH2 0x130E JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x16CD DUP5 DUP5 DUP4 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x16E1 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x16F5 DUP5 DUP3 DUP6 ADD PUSH2 0x130E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x1709 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x171D DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 PUSH2 0x1731 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x1745 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x175A DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x1770 DUP5 DUP3 DUP6 ADD PUSH2 0x183F JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x179E DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE POP PUSH2 0x160 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1683 DUP5 DUP3 DUP6 ADD PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E8 PUSH1 0x60 PUSH2 0x1FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x17F6 DUP5 DUP5 PUSH2 0x14A6 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 PUSH2 0x1807 DUP5 DUP5 DUP4 ADD PUSH2 0x1302 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1833 DUP5 DUP3 DUP6 ADD PUSH2 0x14B2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1042 DUP3 MLOAD PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x185D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x137C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x189B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x18A7 DUP6 DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1903 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1880 DUP5 DUP3 DUP6 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1945 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18D0 DUP6 DUP3 DUP7 ADD PUSH2 0x1690 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x199D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A9 DUP9 DUP3 DUP10 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x19BA DUP9 DUP3 DUP10 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19E3 DUP9 DUP3 DUP10 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A0C DUP9 DUP3 DUP10 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A35 DUP9 DUP3 DUP10 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1A5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7E DUP10 DUP3 DUP11 ADD PUSH2 0x17CC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AA7 DUP10 DUP3 DUP11 ADD PUSH2 0x13D9 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x1AB8 DUP10 DUP3 DUP11 ADD PUSH2 0x1302 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AE1 DUP10 DUP3 DUP11 ADD PUSH2 0x14B2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B0A DUP10 DUP3 DUP11 ADD PUSH2 0x1436 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B33 DUP10 DUP3 DUP11 ADD PUSH2 0x131A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2038 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B49 DUP2 PUSH2 0x2043 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x2034 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x1B77 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x206B JUMP JUMPDEST PUSH2 0x1B80 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH32 0x4C454E4754485F36355F52455155495245440000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x494E56414C49445F415050524F56414C5F5349474E4154555245000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x46524F4D5F4C4553535F5448414E5F544F5F5245515549524544000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1C DUP2 MSTORE PUSH32 0x544F5F4C4553535F5448414E5F4C454E4754485F524551554952454400000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x17 DUP2 MSTORE PUSH32 0x494E56414C49445F465245455F4D454D4F52595F505452000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x10 DUP2 MSTORE PUSH32 0x415050524F56414C5F4558504952454400000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F33325F4C454E4754485F5245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5155495245440000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x15 DUP2 MSTORE PUSH32 0x5349474E41545552455F554E535550504F525445440000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xE DUP2 MSTORE PUSH32 0x494E56414C49445F4F524947494E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x21 DUP2 MSTORE PUSH32 0x475245415445525F5448414E5F5A45524F5F4C454E4754485F52455155495245 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH32 0x5349474E41545552455F494C4C4547414C000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1E DUP2 MSTORE PUSH32 0x4C454E4754485F475245415445525F5448414E5F305F52455155495245440000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x25 DUP2 MSTORE PUSH32 0x475245415445525F4F525F455155414C5F544F5F345F4C454E4754485F524551 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x5549524544000000000000000000000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B40 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x4F1 DUP3 DUP5 PUSH2 0x1B4F JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1B8D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1BED JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C1D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C4D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1C7D JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1CAD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D03 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DB9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4F1 DUP2 PUSH2 0x1E19 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1F69 DUP3 DUP8 PUSH2 0x1B4F JUMP JUMPDEST PUSH2 0x1F76 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1B40 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1F88 DUP2 DUP6 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1F9C DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F1 DUP3 PUSH2 0x2046 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2086 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x206E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 SGT 0xbe 0x4e SWAP15 0x28 0x1f CREATE2 SWAP12 PUSH12 0xE3D1C4C7AF6075C7D255EDC6 SIGNEXTEND 0xe4 0x29 0xd2 PC COINBASE 0xf9 DUP16 0x28 PUSH28 0x3E6C6578706572696D656E74616CF500370000000000000000000000 ", + "sourceMap": "837:227:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;837:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;988:2549:3;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1627:801:2;;;;;;;;;:::i;:::-;;2108:913:1;;;;;;;;;:::i;1323:33:10:-;;;:::i;:::-;;;;;;;;3713:2773:1;;;;;;;;;:::i;988:2549:3:-;1097:21;1174:1;1155:9;:16;:20;1134:97;;;;;;;;;;;;;;;;;;;;;;;;1296:22;1327:23;:9;:21;:23::i;:::-;1321:30;;;;-1:-1:-1;1449:29:3;1424:55;;;;1403:123;;;;;;;;;;;;;;1537:27;1581:16;1567:31;;;;;;;;;;1537:61;-1:-1:-1;1948:21:3;1931:13;:38;;;;;;;;;1927:1260;;;1985:27;;;;;;;;;;;1927:1260;2085:20;2068:13;:37;;;;;;;;;2064:1123;;;2146:16;;2166:2;2146:22;2121:99;;;;;;;;;;;;;;2234:7;2250:9;2260:1;2250:12;;;;;;;;;;;;;;;;;;;;;2244:19;;-1:-1:-1;2277:9:3;2289:24;:9;2311:1;2289:24;:21;:24;:::i;:::-;2277:36;-1:-1:-1;2327:9:3;2339:25;:9;2361:2;2339:25;:21;:25;:::i;:::-;2327:37;;2394:102;2421:4;2443:1;2462;2481;2394:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2394:102:3;;;;;;-1:-1:-1;2510:20:3;;-1:-1:-1;;;;;;2510:20:3;2064:1123;2607:21;2590:13;:38;;;;;;;;;2586:601;;;2669:16;;2689:2;2669:22;2644:99;;;;;;;;;;;;;;2757:7;2773:9;2783:1;2773:12;;;;;;;;;;;;;;;;;;;;;2767:19;;-1:-1:-1;2800:9:3;2812:24;:9;2834:1;2812:24;:21;:24;:::i;:::-;2800:36;-1:-1:-1;2850:9:3;2862:25;:9;2884:2;2862:25;:21;:25;:::i;:::-;2850:37;;2917:225;3048:4;2954:116;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2954:116:3;;;2944:127;;;;;;3089:1;3108;3127;2917:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2586:601:3;3499:31;;;;;;;;;;;988:2549;;;;;:::o;1627:801:2:-;2008:197;2053:11;2078:8;2100:20;2134:29;2177:18;2008:31;:197::i;:::-;2251:8;;2292:16;;2322:25;;;;2361:16;;;;;2251:170;;;;;:8;;;;;:27;;:170;;2292:16;;2322:25;;2391:20;;2251:170;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2251:170:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2251:170:2;;;;1627:801;;;;;:::o;2108:913:1:-;2511:30;2544:38;2565:11;:16;;;2544:20;:38::i;:::-;2511:71;;2669:1;2653:6;:13;:17;2649:366;;;2754:250;2808:11;2837:6;2861:8;2887:20;2925:29;2972:18;2754:36;:250::i;:::-;2108:913;;;;;;:::o;1323:33:10:-;;;;:::o;3713:2773:1:-;4182:9;:21;;;;4161:82;;;;;;;;;;;;;;4285:23;4311:31;4330:11;4311:18;:31::i;:::-;4445:16;;;4459:1;4445:16;;;;;;;;;4499:25;;4285:57;;-1:-1:-1;4445:16:1;4499:25;4534:1151;4554:21;;;4534:1151;;4635:44;4682:29;4712:1;4682:32;;;;;;;;;;;;;;;;;;4635:79;;4728:35;;:::i;:::-;-1:-1:-1;4766:266:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:15;5181:54;;5094:191;;;;;;;;;;;;;;5364:20;5387:36;5414:8;5387:26;:36::i;:::-;5364:59;;5437:29;5469:53;5486:12;5500:18;5519:1;5500:21;;;;;;;;;;;;;;;;;;5469:16;:53::i;:::-;5437:85;-1:-1:-1;5621:53:1;:23;5437:85;5621:53;:30;:53;:::i;:::-;5595:79;-1:-1:-1;;4577:3:1;;;;;-1:-1:-1;4534:1151:1;;-1:-1:-1;;4534:1151:1;;-1:-1:-1;5801:41:1;:23;5832:9;5801:41;:30;:41;:::i;:::-;5884:13;;5775:67;;-1:-1:-1;5861:20:1;5907:573;5927:17;;;5907:573;;6043:9;;6078:1;;6043:6;;6050:1;;6043:9;;;;;;;;;;;;;;:23;;;:37;;;6039:84;;;6100:8;;6039:84;6214:23;6240:6;6247:1;6240:9;;;;;;;;;;;;;;;;;;;:29;;;;-1:-1:-1;6283:20:1;6306:49;:23;6240:29;6306:49;:32;:49;:::i;:::-;6283:72;;6394:15;6369:100;;;;;;;;;;;;;;;;5907:573;;;5946:3;;5907:573;;;;3713:2773;;;;;;;;;;:::o;8315:448:22:-;8399:13;8460:1;8449;:8;:12;8428:92;;;;;;;;;;;;;;;;8570:8;;8568:1;;8570:12;;;;8568:15;;;;;;;;;;8682:8;;8678:16;;8707:17;;;-1:-1:-1;8568:15:22;;;;;;;8315:448::o;13292:490::-;13413:14;13476:5;13484:2;13476:10;13464:1;:8;:22;;13443:107;;;;;;;;;;;;;;;;-1:-1:-1;13729:13:22;13631:2;13729:13;13723:20;;13292:490::o;6698:1760:1:-;6794:30;6840:15;6858:18;:4;6840:15;6858:18;:15;:18;:::i;:::-;6840:36;-1:-1:-1;6903:31:1;;;6915:19;6903:31;;:87;;-1:-1:-1;6950:40:1;;;6962:28;6950:40;6903:87;:142;;;-1:-1:-1;7006:39:1;;;7018:27;7006:39;6903:142;6886:1543;;;7106:27;;:::i;:::-;7179:11;;7165:26;;7179:4;;7176:1;;7165:26;:10;:26;:::i;:::-;7137:102;;;;;;;;;;;;;;7262:23;;;7283:1;7262:23;;;;;;;;;7105:134;;-1:-1:-1;7262:23:1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7253:32;;7311:5;7299:6;7306:1;7299:9;;;;;;;;;;;;;;;;;;:17;-1:-1:-1;6886:1543:1;;;7350:38;;;7362:26;7350:38;;:101;;-1:-1:-1;7404:47:1;;;7416:35;7404:47;7350:101;:163;;;-1:-1:-1;7467:46:1;;;7479:34;7467:46;7350:163;:217;;;-1:-1:-1;7529:38:1;;;7541:26;7529:38;7350:217;:280;;;-1:-1:-1;7583:47:1;;;7595:35;7583:47;7350:280;:335;;;-1:-1:-1;7646:39:1;;;7658:27;7646:39;7350:335;:399;;;-1:-1:-1;7701:48:1;;;7713:36;7701:48;7350:399;7333:1096;;;7898:11;;7884:26;;7898:4;;7895:1;;7884:26;:10;:26;:::i;:::-;7856:104;;;;;;;;;;;;;;7845:115;;7333:1096;;;7981:33;;;7993:21;7981:33;7977:452;;;8075:31;;:::i;:::-;8108:32;;:::i;:::-;8186:11;;8172:26;;8186:4;;8183:1;;8172:26;:10;:26;:::i;:::-;8144:118;;;;;;;;;;;;;;8324:23;;;8345:1;8324:23;;;;;;;;;8074:188;;-1:-1:-1;8074:188:1;;-1:-1:-1;8324:23:1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8315:32;;8373:9;8361:6;8368:1;8361:9;;;;;;;;;;;;;;;;;;:21;8396:9;;8408:10;;8396:6;;8403:1;;8396:9;;;;;;;;;;;;;;:22;-1:-1:-1;;7977:452:1;-1:-1:-1;6698:1760:1;;;:::o;1602:406:11:-;1715:23;1916:53;1934:34;1956:11;1934:21;:34::i;:::-;1916:17;:53::i;2006:259:9:-;2126:20;2177:52;2195:33;2219:8;2195:23;:33::i;1089:2103:21:-;1438:19;;1587:4;1581:11;1209:16;;1438:12;;1510:2;:23;;;1676:45;;;;;;1438:19;1504:30;2076:32;;;;2055:102;;;;;;;;;;;;;;2411:18;2398:10;:31;2394:273;;;2445:78;2462:10;2474:20;2496:26;2445:16;:78::i;:::-;2580:10;2564:26;;2631:12;2607:36;;2546:111;2735:1;2713:23;;;;2776:2;2746:32;;;;2832:26;2809:20;:49;2788:70;;2881:18;2868:31;;2991:18;2977:12;2970:40;3072:10;3066:4;3059:24;3141:15;3102:12;3136:1;3115:18;:22;3102:36;;;;;;;;;;:54;;;;:36;;;;;;;;;;:54;-1:-1:-1;3173:12:21;;-1:-1:-1;;;;;1089:2103:21;;;;:::o;3431:1034::-;3543:12;3686:2;3671:12;3665:19;3661:28;3799:2;3785:12;3781:21;3911:12;3891:18;3887:37;3985:18;3972:453;4011:16;4008:1;4005:23;3972:453;;;4130:1;4124:8;4226:12;4218:6;4215:24;4212:2;;;4316:1;4305:12;;4377:16;4372:21;;4212:2;-1:-1:-1;4042:2:21;4035:10;3972:453;;;-1:-1:-1;;;;3431:1034:21;;;;:::o;15595:687:22:-;15715:13;15777:5;15785:1;15777:9;15765:1;:8;:21;;15744:105;;;;;;;;;;;;;;;;-1:-1:-1;16023:13:22;15926:2;16023:13;16017:20;16176:66;16164:79;;15595:687::o;6453:617::-;6587:19;6643:10;;;;6622:83;;;;;;;;;;;;;;6742:8;;6736:14;;;6715:89;;;;;;;;;;;;;;6905:4;6900:2;:9;6890:20;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;6890:20:22;87:34:-1;135:17;;-1:-1;6890:20:22;;6881:29;;6920:120;6941:23;:6;:21;:23::i;:::-;6999:4;6978:18;:1;:16;:18::i;:::-;:25;7017:6;:13;6920:7;:120::i;:::-;6453:617;;;;;:::o;2255:1419:11:-;2489:16;;;;;2530;;2580:25;;;;;3004:11;;2989:13;;;2979:37;;;;3088:9;;992:66;3111:26;;3237:15;;;3230:29;;;;3382:42;3363:62;;;3346:15;;;3339:87;;;;2469:17;3464:15;;3457:33;3631:3;3613:22;;;2255:1419::o;1856:924:10:-;1950:14;2007:18;2319:2;2313:9;2351:66;2336:82;;2468:1;2456:14;;2449:40;;;;2586:2;2574:15;;2567:35;;;;2738:2;2720:21;;;1856:924::o;2605:1613:9:-;2858:29;;;;;2916:17;;2969:24;;;;;2822:33;3043:38;;;;3537:27;;3506:29;;;3496:69;;;;3641:9;;1085:66;3664:26;;3758:15;;;3751:33;;;;3839:15;;;3832:40;3927:15;;;3920:49;4036:3;4024:16;;4017:55;4175:3;4157:22;;2605:1613;;;:::o;1808:4337:22:-;1958:2;1949:6;:11;1945:4194;;;2247:1;2237:6;2233:2;2229:15;2224:3;2220:25;2216:33;2298:4;2294:9;2285:6;2279:13;2275:29;2347:4;2340;2334:11;2330:22;2388:1;2385;2382:8;2376:4;2369:22;2186:219;;;;;;2509:4;2499:6;:14;2495:59;;;2533:7;;2495:59;3243:4;3234:6;:13;3230:2899;;;3569:2;3561:6;3557:15;3547:25;;3617:6;3609;3605:19;3667:6;3661:4;3657:17;3974:4;3968:11;4242:198;4260:4;4252:6;4249:16;4242:198;;;4308:13;;4295:27;;4369:2;4405:13;;;;4357:15;;;;4242:198;;;4529:18;;-1:-1:-1;3276:1289:22;;;4810:2;4802:6;4798:15;4788:25;;4858:6;4850;4846:19;4908:6;4902:4;4898:17;5218:6;5212:13;5797:191;5814:4;5808;5804:15;5797:191;;;5862:11;;5849:25;;5907:13;;;;;5953;;;;5797:191;;;6078:19;;-1:-1:-1;;4612:1503:22;1808:4337;;;:::o;1341:228::-;1520:2;1509:14;;1341:228::o;837:227:0:-;;;;;;;;;-1:-1:-1;837:227:0;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;130:122;;208:39;239:6;233:13;208:39;;275:693;;390:4;378:17;;374:27;-1:-1;364:2;;415:1;412;405:12;364:2;452:6;439:20;474:85;489:69;551:6;489:69;;;474:85;;;587:21;;;631:4;619:17;;;;465:94;;-1:-1;644:14;;619:17;739:1;724:238;749:6;746:1;743:13;724:238;;;832:3;819:17;811:6;807:30;856:42;894:3;882:10;856:42;;;844:55;;-1:-1;922:4;913:14;;;;941;;;;;771:1;764:9;724:238;;1008:735;;1144:4;1132:17;;1128:27;-1:-1;1118:2;;1169:1;1166;1159:12;1118:2;1199:6;1193:13;1221:95;1236:79;1308:6;1236:79;;1221:95;1344:21;;;1388:4;1376:17;;;;1212:104;;-1:-1;1401:14;;1376:17;1496:1;1481:256;1506:6;1503:1;1500:13;1481:256;;;1582:3;1576:10;1568:6;1564:23;1606:67;1669:3;1657:10;1606:67;;;1594:80;;-1:-1;1697:4;1688:14;;;;1716;;;;;1528:1;1521:9;1481:256;;1783:735;;1912:4;1900:17;;1896:27;-1:-1;1886:2;;1937:1;1934;1927:12;1886:2;1974:6;1961:20;1996:99;2011:83;2087:6;2011:83;;1996:99;2123:21;;;2167:4;2155:17;;;;1987:108;;-1:-1;2180:14;;2155:17;2275:1;2260:252;2285:6;2282:1;2279:13;2260:252;;;2368:3;2355:17;2347:6;2343:30;2392:56;2444:3;2432:10;2392:56;;;2380:69;;-1:-1;2472:4;2463:14;;;;2491;;;;;2307:1;2300:9;2260:252;;2544:707;;2654:4;2642:17;;2638:27;-1:-1;2628:2;;2679:1;2676;2669:12;2628:2;2716:6;2703:20;2738:80;2753:64;2810:6;2753:64;;2738:80;2729:89;;2835:5;2860:6;2853:5;2846:21;2890:4;2882:6;2878:17;2868:27;;2912:4;2907:3;2903:14;2896:21;;2965:6;3012:3;3004:4;2996:6;2992:17;2987:3;2983:27;2980:36;2977:2;;;3029:1;3026;3019:12;2977:2;3054:1;3039:206;3064:6;3061:1;3058:13;3039:206;;;3122:3;3144:37;3177:3;3165:10;3144:37;;;3132:50;;-1:-1;3205:4;3196:14;;;;3224;;;;;3086:1;3079:9;3039:206;;3259:118;;3326:46;3364:6;3351:20;3326:46;;3385:432;;3475:4;3463:17;;3459:27;-1:-1;3449:2;;3500:1;3497;3490:12;3449:2;3537:6;3524:20;3559:60;3574:44;3611:6;3574:44;;3559:60;3550:69;;3639:6;3632:5;3625:21;3675:4;3667:6;3663:17;3708:4;3701:5;3697:16;3743:3;3734:6;3729:3;3725:16;3722:25;3719:2;;;3760:1;3757;3750:12;3719:2;3770:41;3804:6;3799:3;3794;3770:41;;;3442:375;;;;;;;;3826:434;;3927:4;3915:17;;3911:27;-1:-1;3901:2;;3952:1;3949;3942:12;3901:2;3982:6;3976:13;4004:60;4019:44;4056:6;4019:44;;4004:60;3995:69;;4084:6;4077:5;4070:21;4120:4;4112:6;4108:17;4153:4;4146:5;4142:16;4188:3;4179:6;4174:3;4170:16;4167:25;4164:2;;;4205:1;4202;4195:12;4164:2;4215:39;4247:6;4242:3;4237;4215:39;;4745:2205;;4853:5;4841:9;4836:3;4832:19;4828:31;4825:2;;;4872:1;4869;4862:12;4825:2;4890:21;4905:5;4890:21;;;4881:30;-1:-1;4969:1;5000:49;5045:3;5025:9;5000:49;;;4976:74;;-1:-1;5119:2;5152:49;5197:3;5173:22;;;5152:49;;;5145:4;5138:5;5134:16;5127:75;5071:142;5278:2;5311:49;5356:3;5347:6;5336:9;5332:22;5311:49;;;5304:4;5297:5;5293:16;5286:75;5223:149;5431:2;5464:49;5509:3;5500:6;5489:9;5485:22;5464:49;;;5457:4;5450:5;5446:16;5439:75;5382:143;5587:3;5621:49;5666:3;5657:6;5646:9;5642:22;5621:49;;;5614:4;5607:5;5603:16;5596:75;5535:147;5744:3;5778:49;5823:3;5814:6;5803:9;5799:22;5778:49;;;5771:4;5764:5;5760:16;5753:75;5692:147;5893:3;5927:49;5972:3;5963:6;5952:9;5948:22;5927:49;;;5920:4;5913:5;5909:16;5902:75;5849:139;6042:3;6076:49;6121:3;6112:6;6101:9;6097:22;6076:49;;;6069:4;6062:5;6058:16;6051:75;5998:139;6204:3;6239:49;6284:3;6275:6;6264:9;6260:22;6239:49;;;6231:5;6224;6220:17;6213:76;6147:153;6350:3;6385:49;6430:3;6421:6;6410:9;6406:22;6385:49;;;6377:5;6370;6366:17;6359:76;6310:136;6534:3;6523:9;6519:19;6506:33;6559:18;6551:6;6548:30;6545:2;;;6591:1;6588;6581:12;6545:2;6627:54;6677:3;6668:6;6657:9;6653:22;6627:54;;;6619:5;6612;6608:17;6601:81;6456:237;6781:3;6770:9;6766:19;6753:33;6806:18;6798:6;6795:30;6792:2;;;6838:1;6835;6828:12;6792:2;6874:54;6924:3;6915:6;6904:9;6900:22;6874:54;;;6866:5;6859;6855:17;6848:81;6703:237;4819:2131;;;;;6985:2334;;7104:5;7092:9;7087:3;7083:19;7079:31;7076:2;;;7123:1;7120;7113:12;7076:2;7141:21;7156:5;7141:21;;;7132:30;-1:-1;7220:1;7251:60;7307:3;7287:9;7251:60;;;7227:85;;-1:-1;7381:2;7414:60;7470:3;7446:22;;;7414:60;;;7407:4;7400:5;7396:16;7389:86;7333:153;7551:2;7584:60;7640:3;7631:6;7620:9;7616:22;7584:60;;;7577:4;7570:5;7566:16;7559:86;7496:160;7715:2;7748:60;7804:3;7795:6;7784:9;7780:22;7748:60;;;7741:4;7734:5;7730:16;7723:86;7666:154;7882:3;7916:60;7972:3;7963:6;7952:9;7948:22;7916:60;;;7909:4;7902:5;7898:16;7891:86;7830:158;8050:3;8084:60;8140:3;8131:6;8120:9;8116:22;8084:60;;;8077:4;8070:5;8066:16;8059:86;7998:158;8210:3;8244:60;8300:3;8291:6;8280:9;8276:22;8244:60;;;8237:4;8230:5;8226:16;8219:86;8166:150;8370:3;8404:60;8460:3;8451:6;8440:9;8436:22;8404:60;;;8397:4;8390:5;8386:16;8379:86;8326:150;8543:3;8578:60;8634:3;8625:6;8614:9;8610:22;8578:60;;;8570:5;8563;8559:17;8552:87;8486:164;8700:3;8735:60;8791:3;8782:6;8771:9;8767:22;8735:60;;;8727:5;8720;8716:17;8709:87;8660:147;8888:3;8877:9;8873:19;8867:26;8913:18;8905:6;8902:30;8899:2;;;8945:1;8942;8935:12;8899:2;8981:65;9042:3;9033:6;9022:9;9018:22;8981:65;;;8973:5;8966;8962:17;8955:92;8817:241;9139:3;9128:9;9124:19;9118:26;9164:18;9156:6;9153:30;9150:2;;;9196:1;9193;9186:12;9150:2;9232:65;9293:3;9284:6;9273:9;9269:22;9232:65;;9378:719;;9501:4;9489:9;9484:3;9480:19;9476:30;9473:2;;;9519:1;9516;9509:12;9473:2;9537:20;9552:4;9537:20;;;9528:29;-1:-1;9607:1;9638:49;9683:3;9663:9;9638:49;;;9614:74;;-1:-1;9758:2;9791:49;9836:3;9812:22;;;9791:49;;;9784:4;9777:5;9773:16;9766:75;9709:143;9930:2;9919:9;9915:18;9902:32;9954:18;9946:6;9943:30;9940:2;;;9986:1;9983;9976:12;9940:2;10021:54;10071:3;10062:6;10051:9;10047:22;10021:54;;;10014:4;10007:5;10003:16;9996:80;9862:225;9467:630;;;;;10229:122;;10307:39;10338:6;10332:13;10307:39;;10358:422;;10513:2;10501:9;10492:7;10488:23;10484:32;10481:2;;;10529:1;10526;10519:12;10481:2;10564:24;;10608:18;10597:30;;10594:2;;;10640:1;10637;10630:12;10594:2;10660:104;10756:7;10747:6;10736:9;10732:22;10660:104;;;10650:114;10475:305;-1:-1;;;;10475:305;10787:470;;;10917:2;10905:9;10896:7;10892:23;10888:32;10885:2;;;10933:1;10930;10923:12;10885:2;10968:1;10985:53;11030:7;11010:9;10985:53;;;10975:63;;10947:97;11103:2;11092:9;11088:18;11075:32;11127:18;11119:6;11116:30;11113:2;;;11159:1;11156;11149:12;11113:2;11179:62;11233:7;11224:6;11213:9;11209:22;11179:62;;;11169:72;;11054:193;10879:378;;;;;;11264:380;;11398:2;11386:9;11377:7;11373:23;11369:32;11366:2;;;11414:1;11411;11404:12;11366:2;11449:24;;11493:18;11482:30;;11479:2;;;11525:1;11522;11515:12;11479:2;11545:83;11620:7;11611:6;11600:9;11596:22;11545:83;;11651:633;;;11821:2;11809:9;11800:7;11796:23;11792:32;11789:2;;;11837:1;11834;11827:12;11789:2;11872:24;;11916:18;11905:30;;11902:2;;;11948:1;11945;11938:12;11902:2;11968:83;12043:7;12034:6;12023:9;12019:22;11968:83;;;11958:93;;11851:206;12109:2;12098:9;12094:18;12088:25;12133:18;12125:6;12122:30;12119:2;;;12165:1;12162;12155:12;12119:2;12185:83;12260:7;12251:6;12240:9;12236:22;12185:83;;12291:1283;;;;;;12561:3;12549:9;12540:7;12536:23;12532:33;12529:2;;;12578:1;12575;12568:12;12529:2;12613:31;;12664:18;12653:30;;12650:2;;;12696:1;12693;12686:12;12650:2;12716:87;12795:7;12786:6;12775:9;12771:22;12716:87;;;12706:97;;12592:217;12840:2;12858:53;12903:7;12894:6;12883:9;12879:22;12858:53;;;12848:63;;12819:98;12976:2;12965:9;12961:18;12948:32;13000:18;12992:6;12989:30;12986:2;;;13032:1;13029;13022:12;12986:2;13052:62;13106:7;13097:6;13086:9;13082:22;13052:62;;;13042:72;;12927:193;13179:2;13168:9;13164:18;13151:32;13203:18;13195:6;13192:30;13189:2;;;13235:1;13232;13225:12;13189:2;13255:78;13325:7;13316:6;13305:9;13301:22;13255:78;;;13245:88;;13130:209;13398:3;13387:9;13383:19;13370:33;13423:18;13415:6;13412:30;13409:2;;;13455:1;13452;13445:12;13409:2;13475:83;13550:7;13541:6;13530:9;13526:22;13475:83;;;13465:93;;13349:215;12523:1051;;;;;;;;;13581:1583;;;;;;;13912:3;13900:9;13891:7;13887:23;13883:33;13880:2;;;13929:1;13926;13919:12;13880:2;13964:31;;14015:18;14004:30;;14001:2;;;14047:1;14044;14037:12;14001:2;14067:87;14146:7;14137:6;14126:9;14122:22;14067:87;;;14057:97;;13943:217;14219:2;14208:9;14204:18;14191:32;14243:18;14235:6;14232:30;14229:2;;;14275:1;14272;14265:12;14229:2;14295:97;14384:7;14375:6;14364:9;14360:22;14295:97;;;14285:107;;14170:228;14429:2;14447:53;14492:7;14483:6;14472:9;14468:22;14447:53;;;14437:63;;14408:98;14565:2;14554:9;14550:18;14537:32;14589:18;14581:6;14578:30;14575:2;;;14621:1;14618;14611:12;14575:2;14641:62;14695:7;14686:6;14675:9;14671:22;14641:62;;;14631:72;;14516:193;14768:3;14757:9;14753:19;14740:33;14793:18;14785:6;14782:30;14779:2;;;14825:1;14822;14815:12;14779:2;14845:78;14915:7;14906:6;14895:9;14891:22;14845:78;;;14835:88;;14719:210;14988:3;14977:9;14973:19;14960:33;15013:18;15005:6;15002:30;14999:2;;;15045:1;15042;15035:12;14999:2;15065:83;15140:7;15131:6;15120:9;15116:22;15065:83;;;15055:93;;14939:215;13874:1290;;;;;;;;;15171:120;15254:31;15279:5;15254:31;;;15249:3;15242:44;15236:55;;;15298:120;15381:31;15406:5;15381:31;;15425:307;;15535:38;15567:5;15535:38;;;15590:6;15585:3;15578:19;15602:63;15658:6;15651:4;15646:3;15642:14;15635:4;15628:5;15624:16;15602:63;;;15697:29;15719:6;15697:29;;;15677:50;;;15690:4;15677:50;;15515:217;-1:-1;;;15515:217;16046:306;16211:2;16199:15;;16248:66;16243:2;16234:12;;16227:88;16343:2;16334:12;;16192:160;16361:306;16526:2;16514:15;;16563:66;16558:2;16549:12;;16542:88;16658:2;16649:12;;16507:160;16676:306;16841:2;16829:15;;16878:66;16873:2;16864:12;;16857:88;16973:2;16964:12;;16822:160;16991:306;17156:2;17144:15;;17193:66;17188:2;17179:12;;17172:88;17288:2;17279:12;;17137:160;17306:306;17471:2;17459:15;;17508:66;17503:2;17494:12;;17487:88;17603:2;17594:12;;17452:160;17621:306;17786:2;17774:15;;17823:66;17818:2;17809:12;;17802:88;17918:2;17909:12;;17767:160;17936:407;18101:2;18089:15;;18138:66;18133:2;18124:12;;18117:88;18239:66;18234:2;18225:12;;18218:88;18334:2;18325:12;;18082:261;18352:306;18517:2;18505:15;;18554:66;18549:2;18540:12;;18533:88;18649:2;18640:12;;18498:160;18667:306;18832:2;18820:15;;18869:66;18864:2;18855:12;;18848:88;18964:2;18955:12;;18813:160;18982:407;19147:2;19135:15;;19184:66;19179:2;19170:12;;19163:88;19285:66;19280:2;19271:12;;19264:88;19380:2;19371:12;;19128:261;19398:306;19563:2;19551:15;;19600:66;19595:2;19586:12;;19579:88;19695:2;19686:12;;19544:160;19713:306;19878:2;19866:15;;19915:66;19910:2;19901:12;;19894:88;20010:2;20001:12;;19859:160;20028:407;20193:2;20181:15;;20230:66;20225:2;20216:12;;20209:88;20331:66;20326:2;20317:12;;20310:88;20426:2;20417:12;;20174:261;20570:213;20688:2;20673:18;;20702:71;20677:9;20746:6;20702:71;;20790:213;20908:2;20893:18;;20922:71;20897:9;20966:6;20922:71;;21010:407;21201:2;21215:47;;;21186:18;;21276:131;21186:18;21276:131;;21424:407;21615:2;21629:47;;;21600:18;;21690:131;21600:18;21690:131;;21838:407;22029:2;22043:47;;;22014:18;;22104:131;22014:18;22104:131;;22252:407;22443:2;22457:47;;;22428:18;;22518:131;22428:18;22518:131;;22666:407;22857:2;22871:47;;;22842:18;;22932:131;22842:18;22932:131;;23080:407;23271:2;23285:47;;;23256:18;;23346:131;23256:18;23346:131;;23494:407;23685:2;23699:47;;;23670:18;;23760:131;23670:18;23760:131;;23908:407;24099:2;24113:47;;;24084:18;;24174:131;24084:18;24174:131;;24322:407;24513:2;24527:47;;;24498:18;;24588:131;24498:18;24588:131;;24736:407;24927:2;24941:47;;;24912:18;;25002:131;24912:18;25002:131;;25150:407;25341:2;25355:47;;;25326:18;;25416:131;25326:18;25416:131;;25564:407;25755:2;25769:47;;;25740:18;;25830:131;25740:18;25830:131;;25978:407;26169:2;26183:47;;;26154:18;;26244:131;26154:18;26244:131;;26392:707;26626:3;26611:19;;26641:71;26615:9;26685:6;26641:71;;;26723:72;26791:2;26780:9;26776:18;26767:6;26723:72;;;26843:9;26837:4;26833:20;26828:2;26817:9;26813:18;26806:48;26868:72;26935:4;26926:6;26868:72;;;26860:80;;26988:9;26982:4;26978:20;26973:2;26962:9;26958:18;26951:48;27013:76;27084:4;27075:6;27013:76;;;27005:84;26597:502;-1:-1;;;;;;26597:502;27106:256;27168:2;27162:9;27194:17;;;27269:18;27254:34;;27290:22;;;27251:62;27248:2;;;27326:1;27323;27316:12;27248:2;27342;27335:22;27146:216;;-1:-1;27146:216;27369:263;;27533:18;27525:6;27522:30;27519:2;;;27565:1;27562;27555:12;27519:2;-1:-1;27594:4;27582:17;;;27612:15;;27456:176;28468:254;;28607:18;28599:6;28596:30;28593:2;;;28639:1;28636;28629:12;28593:2;-1:-1;28712:4;28683;28660:17;;;;28679:9;28656:33;28702:15;;28530:192;28994:87;29064:12;;29048:33;29186:105;;29255:31;29280:5;29255:31;;29298:79;29367:5;29350:27;29384:128;29464:42;29453:54;;29436:76;29890:145;29971:6;29966:3;29961;29948:30;-1:-1;30027:1;30009:16;;30002:27;29941:94;30044:268;30109:1;30116:101;30130:6;30127:1;30124:13;30116:101;;;30197:11;;;30191:18;30178:11;;;30171:39;30152:2;30145:10;30116:101;;;30232:6;30229:1;30226:13;30223:2;;;30297:1;30288:6;30283:3;30279:16;30272:27;30223:2;30093:219;;;;;30320:97;30408:2;30388:14;30404:7;30384:28;;30368:49" + } + } + }, + "sources": { + "src/Coordinator.sol": { + "id": 0 + }, + "src/libs/LibConstants.sol": { + "id": 8 + }, + "src/interfaces/ITransactions.sol": { + "id": 7 + }, + "src/MixinSignatureValidator.sol": { + "id": 3 + }, + "@0x/contracts-utils/contracts/src/LibBytes.sol": { + "id": 22 + }, + "src/mixins/MSignatureValidator.sol": { + "id": 13 + }, + "src/interfaces/ISignatureValidator.sol": { + "id": 6 + }, + "src/MixinCoordinatorApprovalVerifier.sol": { + "id": 1 + }, + "@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol": { + "id": 19 + }, + "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol": { + "id": 20 + }, + "@0x/contracts-exchange-libs/contracts/src/LibEIP712.sol": { + "id": 18 + }, + "@0x/contracts-utils/contracts/src/LibAddressArray.sol": { + "id": 21 + }, + "src/libs/LibCoordinatorApproval.sol": { + "id": 9 + }, + "src/libs/LibEIP712Domain.sol": { + "id": 10 + }, + "src/libs/LibZeroExTransaction.sol": { + "id": 11 + }, + "src/mixins/MCoordinatorApprovalVerifier.sol": { + "id": 12 + }, + "src/interfaces/ICoordinatorApprovalVerifier.sol": { + "id": 4 + }, + "src/MixinCoordinatorCore.sol": { + "id": 2 + }, + "src/interfaces/ICoordinatorCore.sol": { + "id": 5 + } + }, + "sourceCodes": { + "src/Coordinator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"./libs/LibConstants.sol\";\nimport \"./MixinSignatureValidator.sol\";\nimport \"./MixinCoordinatorApprovalVerifier.sol\";\nimport \"./MixinCoordinatorCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract Coordinator is\n LibConstants,\n MixinSignatureValidator,\n MixinCoordinatorApprovalVerifier,\n MixinCoordinatorCore\n{\n constructor (address _exchange)\n public\n LibConstants(_exchange)\n {}\n}\n", + "src/libs/LibConstants.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"../interfaces/ITransactions.sol\";\n\n\ncontract LibConstants {\n\n // solhint-disable-next-line var-name-mixedcase\n ITransactions internal EXCHANGE;\n\n constructor (address _exchange)\n public\n {\n EXCHANGE = ITransactions(_exchange);\n }\n}\n", + "src/interfaces/ITransactions.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\npragma solidity ^0.5.3;\n\n\ncontract ITransactions {\n\n /// @dev Executes an exchange method call in the context of signer.\n /// @param salt Arbitrary number to ensure uniqueness of transaction hash.\n /// @param signerAddress Address of transaction signer.\n /// @param data AbiV2 encoded calldata.\n /// @param signature Proof of signer transaction by signer.\n function executeTransaction(\n uint256 salt,\n address signerAddress,\n bytes calldata data,\n bytes calldata signature\n )\n external;\n}\n", + "src/MixinSignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"@0x/contracts-utils/contracts/src/LibBytes.sol\";\nimport \"./mixins/MSignatureValidator.sol\";\n\n\ncontract MixinSignatureValidator is\n MSignatureValidator\n{\n using LibBytes for bytes;\n\n /// @dev Recovers the address of a signer given a hash and signature.\n /// @param hash Any 32 byte hash.\n /// @param signature Proof that the hash has been signed by signer.\n function getSignerAddress(bytes32 hash, bytes memory signature)\n public\n pure\n returns (address signerAddress)\n {\n require(\n signature.length > 0,\n \"LENGTH_GREATER_THAN_0_REQUIRED\"\n );\n\n // Pop last byte off of signature byte array.\n uint8 signatureTypeRaw = uint8(signature.popLastByte());\n\n // Ensure signature is supported\n require(\n signatureTypeRaw < uint8(SignatureType.NSignatureTypes),\n \"SIGNATURE_UNSUPPORTED\"\n );\n\n SignatureType signatureType = SignatureType(signatureTypeRaw);\n\n // Always illegal signature.\n // This is always an implicit option since a signer can create a\n // signature array with invalid type or length. We may as well make\n // it an explicit option. This aids testing and analysis. It is\n // also the initialization value for the enum type.\n if (signatureType == SignatureType.Illegal) {\n revert(\"SIGNATURE_ILLEGAL\");\n\n // Signature using EIP712\n } else if (signatureType == SignatureType.EIP712) {\n require(\n signature.length == 65,\n \"LENGTH_65_REQUIRED\"\n );\n uint8 v = uint8(signature[0]);\n bytes32 r = signature.readBytes32(1);\n bytes32 s = signature.readBytes32(33);\n signerAddress = ecrecover(\n hash,\n v,\n r,\n s\n );\n return signerAddress;\n\n // Signed using web3.eth_sign\n } else if (signatureType == SignatureType.EthSign) {\n require(\n signature.length == 65,\n \"LENGTH_65_REQUIRED\"\n );\n uint8 v = uint8(signature[0]);\n bytes32 r = signature.readBytes32(1);\n bytes32 s = signature.readBytes32(33);\n signerAddress = ecrecover(\n keccak256(abi.encodePacked(\n \"\\x19Ethereum Signed Message:\\n32\",\n hash\n )),\n v,\n r,\n s\n );\n return signerAddress;\n }\n\n // Anything else is illegal (We do not return false because\n // the signature may actually be valid, just not in a format\n // that we currently support. In this case returning false\n // may lead the caller to incorrectly believe that the\n // signature was invalid.)\n revert(\"SIGNATURE_UNSUPPORTED\");\n }\n}\n", + "@0x/contracts-utils/contracts/src/LibBytes.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\nlibrary LibBytes {\n\n using LibBytes for bytes;\n\n /// @dev Gets the memory address for a byte array.\n /// @param input Byte array to lookup.\n /// @return memoryAddress Memory address of byte array. This\n /// points to the header of the byte array which contains\n /// the length.\n function rawAddress(bytes memory input)\n internal\n pure\n returns (uint256 memoryAddress)\n {\n assembly {\n memoryAddress := input\n }\n return memoryAddress;\n }\n \n /// @dev Gets the memory address for the contents of a byte array.\n /// @param input Byte array to lookup.\n /// @return memoryAddress Memory address of the contents of the byte array.\n function contentAddress(bytes memory input)\n internal\n pure\n returns (uint256 memoryAddress)\n {\n assembly {\n memoryAddress := add(input, 32)\n }\n return memoryAddress;\n }\n\n /// @dev Copies `length` bytes from memory location `source` to `dest`.\n /// @param dest memory address to copy bytes to.\n /// @param source memory address to copy bytes from.\n /// @param length number of bytes to copy.\n function memCopy(\n uint256 dest,\n uint256 source,\n uint256 length\n )\n internal\n pure\n {\n if (length < 32) {\n // Handle a partial word by reading destination and masking\n // off the bits we are interested in.\n // This correctly handles overlap, zero lengths and source == dest\n assembly {\n let mask := sub(exp(256, sub(32, length)), 1)\n let s := and(mload(source), not(mask))\n let d := and(mload(dest), mask)\n mstore(dest, or(s, d))\n }\n } else {\n // Skip the O(length) loop when source == dest.\n if (source == dest) {\n return;\n }\n\n // For large copies we copy whole words at a time. The final\n // word is aligned to the end of the range (instead of after the\n // previous) to handle partial words. So a copy will look like this:\n //\n // ####\n // ####\n // ####\n // ####\n //\n // We handle overlap in the source and destination range by\n // changing the copying direction. This prevents us from\n // overwriting parts of source that we still need to copy.\n //\n // This correctly handles source == dest\n //\n if (source > dest) {\n assembly {\n // We subtract 32 from `sEnd` and `dEnd` because it\n // is easier to compare with in the loop, and these\n // are also the addresses we need for copying the\n // last bytes.\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n\n // Remember the last 32 bytes of source\n // This needs to be done here and not after the loop\n // because we may have overwritten the last bytes in\n // source already due to overlap.\n let last := mload(sEnd)\n\n // Copy whole words front to back\n // Note: the first check is always true,\n // this could have been a do-while loop.\n // solhint-disable-next-line no-empty-blocks\n for {} lt(source, sEnd) {} {\n mstore(dest, mload(source))\n source := add(source, 32)\n dest := add(dest, 32)\n }\n \n // Write the last 32 bytes\n mstore(dEnd, last)\n }\n } else {\n assembly {\n // We subtract 32 from `sEnd` and `dEnd` because those\n // are the starting points when copying a word at the end.\n length := sub(length, 32)\n let sEnd := add(source, length)\n let dEnd := add(dest, length)\n\n // Remember the first 32 bytes of source\n // This needs to be done here and not after the loop\n // because we may have overwritten the first bytes in\n // source already due to overlap.\n let first := mload(source)\n\n // Copy whole words back to front\n // We use a signed comparisson here to allow dEnd to become\n // negative (happens when source and dest < 32). Valid\n // addresses in local memory will never be larger than\n // 2**255, so they can be safely re-interpreted as signed.\n // Note: the first check is always true,\n // this could have been a do-while loop.\n // solhint-disable-next-line no-empty-blocks\n for {} slt(dest, dEnd) {} {\n mstore(dEnd, mload(sEnd))\n sEnd := sub(sEnd, 32)\n dEnd := sub(dEnd, 32)\n }\n \n // Write the first 32 bytes\n mstore(dest, first)\n }\n }\n }\n }\n\n /// @dev Returns a slices from a byte array.\n /// @param b The byte array to take a slice from.\n /// @param from The starting index for the slice (inclusive).\n /// @param to The final index for the slice (exclusive).\n /// @return result The slice containing bytes at indices [from, to)\n function slice(\n bytes memory b,\n uint256 from,\n uint256 to\n )\n internal\n pure\n returns (bytes memory result)\n {\n require(\n from <= to,\n \"FROM_LESS_THAN_TO_REQUIRED\"\n );\n require(\n to <= b.length,\n \"TO_LESS_THAN_LENGTH_REQUIRED\"\n );\n \n // Create a new bytes structure and copy contents\n result = new bytes(to - from);\n memCopy(\n result.contentAddress(),\n b.contentAddress() + from,\n result.length\n );\n return result;\n }\n \n /// @dev Returns a slice from a byte array without preserving the input.\n /// @param b The byte array to take a slice from. Will be destroyed in the process.\n /// @param from The starting index for the slice (inclusive).\n /// @param to The final index for the slice (exclusive).\n /// @return result The slice containing bytes at indices [from, to)\n /// @dev When `from == 0`, the original array will match the slice. In other cases its state will be corrupted.\n function sliceDestructive(\n bytes memory b,\n uint256 from,\n uint256 to\n )\n internal\n pure\n returns (bytes memory result)\n {\n require(\n from <= to,\n \"FROM_LESS_THAN_TO_REQUIRED\"\n );\n require(\n to <= b.length,\n \"TO_LESS_THAN_LENGTH_REQUIRED\"\n );\n \n // Create a new bytes structure around [from, to) in-place.\n assembly {\n result := add(b, from)\n mstore(result, sub(to, from))\n }\n return result;\n }\n\n /// @dev Pops the last byte off of a byte array by modifying its length.\n /// @param b Byte array that will be modified.\n /// @return The byte that was popped off.\n function popLastByte(bytes memory b)\n internal\n pure\n returns (bytes1 result)\n {\n require(\n b.length > 0,\n \"GREATER_THAN_ZERO_LENGTH_REQUIRED\"\n );\n\n // Store last byte.\n result = b[b.length - 1];\n\n assembly {\n // Decrement length of byte array.\n let newLen := sub(mload(b), 1)\n mstore(b, newLen)\n }\n return result;\n }\n\n /// @dev Pops the last 20 bytes off of a byte array by modifying its length.\n /// @param b Byte array that will be modified.\n /// @return The 20 byte address that was popped off.\n function popLast20Bytes(bytes memory b)\n internal\n pure\n returns (address result)\n {\n require(\n b.length >= 20,\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Store last 20 bytes.\n result = readAddress(b, b.length - 20);\n\n assembly {\n // Subtract 20 from byte array length.\n let newLen := sub(mload(b), 20)\n mstore(b, newLen)\n }\n return result;\n }\n\n /// @dev Tests equality of two byte arrays.\n /// @param lhs First byte array to compare.\n /// @param rhs Second byte array to compare.\n /// @return True if arrays are the same. False otherwise.\n function equals(\n bytes memory lhs,\n bytes memory rhs\n )\n internal\n pure\n returns (bool equal)\n {\n // Keccak gas cost is 30 + numWords * 6. This is a cheap way to compare.\n // We early exit on unequal lengths, but keccak would also correctly\n // handle this.\n return lhs.length == rhs.length && keccak256(lhs) == keccak256(rhs);\n }\n\n /// @dev Reads an address from a position in a byte array.\n /// @param b Byte array containing an address.\n /// @param index Index in byte array of address.\n /// @return address from byte array.\n function readAddress(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (address result)\n {\n require(\n b.length >= index + 20, // 20 is length of address\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Add offset to index:\n // 1. Arrays are prefixed by 32-byte length parameter (add 32 to index)\n // 2. Account for size difference between address length and 32-byte storage word (subtract 12 from index)\n index += 20;\n\n // Read address from array memory\n assembly {\n // 1. Add index to address of bytes array\n // 2. Load 32-byte word from memory\n // 3. Apply 20-byte mask to obtain address\n result := and(mload(add(b, index)), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n return result;\n }\n\n /// @dev Writes an address into a specific position in a byte array.\n /// @param b Byte array to insert address into.\n /// @param index Index in byte array of address.\n /// @param input Address to put into byte array.\n function writeAddress(\n bytes memory b,\n uint256 index,\n address input\n )\n internal\n pure\n {\n require(\n b.length >= index + 20, // 20 is length of address\n \"GREATER_OR_EQUAL_TO_20_LENGTH_REQUIRED\"\n );\n\n // Add offset to index:\n // 1. Arrays are prefixed by 32-byte length parameter (add 32 to index)\n // 2. Account for size difference between address length and 32-byte storage word (subtract 12 from index)\n index += 20;\n\n // Store address into array memory\n assembly {\n // The address occupies 20 bytes and mstore stores 32 bytes.\n // First fetch the 32-byte word where we'll be storing the address, then\n // apply a mask so we have only the bytes in the word that the address will not occupy.\n // Then combine these bytes with the address and store the 32 bytes back to memory with mstore.\n\n // 1. Add index to address of bytes array\n // 2. Load 32-byte word from memory\n // 3. Apply 12-byte mask to obtain extra bytes occupying word of memory where we'll store the address\n let neighbors := and(\n mload(add(b, index)),\n 0xffffffffffffffffffffffff0000000000000000000000000000000000000000\n )\n \n // Make sure input address is clean.\n // (Solidity does not guarantee this)\n input := and(input, 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Store the neighbors and address into memory\n mstore(add(b, index), xor(input, neighbors))\n }\n }\n\n /// @dev Reads a bytes32 value from a position in a byte array.\n /// @param b Byte array containing a bytes32 value.\n /// @param index Index in byte array of bytes32 value.\n /// @return bytes32 value from byte array.\n function readBytes32(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes32 result)\n {\n require(\n b.length >= index + 32,\n \"GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 256 bit length parameter\n index += 32;\n\n // Read the bytes32 from array memory\n assembly {\n result := mload(add(b, index))\n }\n return result;\n }\n\n /// @dev Writes a bytes32 into a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input bytes32 to put into byte array.\n function writeBytes32(\n bytes memory b,\n uint256 index,\n bytes32 input\n )\n internal\n pure\n {\n require(\n b.length >= index + 32,\n \"GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 256 bit length parameter\n index += 32;\n\n // Read the bytes32 from array memory\n assembly {\n mstore(add(b, index), input)\n }\n }\n\n /// @dev Reads a uint256 value from a position in a byte array.\n /// @param b Byte array containing a uint256 value.\n /// @param index Index in byte array of uint256 value.\n /// @return uint256 value from byte array.\n function readUint256(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (uint256 result)\n {\n result = uint256(readBytes32(b, index));\n return result;\n }\n\n /// @dev Writes a uint256 into a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input uint256 to put into byte array.\n function writeUint256(\n bytes memory b,\n uint256 index,\n uint256 input\n )\n internal\n pure\n {\n writeBytes32(b, index, bytes32(input));\n }\n\n /// @dev Reads an unpadded bytes4 value from a position in a byte array.\n /// @param b Byte array containing a bytes4 value.\n /// @param index Index in byte array of bytes4 value.\n /// @return bytes4 value from byte array.\n function readBytes4(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes4 result)\n {\n require(\n b.length >= index + 4,\n \"GREATER_OR_EQUAL_TO_4_LENGTH_REQUIRED\"\n );\n\n // Arrays are prefixed by a 32 byte length field\n index += 32;\n\n // Read the bytes4 from array memory\n assembly {\n result := mload(add(b, index))\n // Solidity does not require us to clean the trailing bytes.\n // We do it anyway\n result := and(result, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)\n }\n return result;\n }\n\n /// @dev Reads nested bytes from a specific position.\n /// @dev NOTE: the returned value overlaps with the input value.\n /// Both should be treated as immutable.\n /// @param b Byte array containing nested bytes.\n /// @param index Index of nested bytes.\n /// @return result Nested bytes.\n function readBytesWithLength(\n bytes memory b,\n uint256 index\n )\n internal\n pure\n returns (bytes memory result)\n {\n // Read length of nested bytes\n uint256 nestedBytesLength = readUint256(b, index);\n index += 32;\n\n // Assert length of is valid, given\n // length of nested bytes\n require(\n b.length >= index + nestedBytesLength,\n \"GREATER_OR_EQUAL_TO_NESTED_BYTES_LENGTH_REQUIRED\"\n );\n \n // Return a pointer to the byte array as it exists inside `b`\n assembly {\n result := add(b, index)\n }\n return result;\n }\n\n /// @dev Inserts bytes at a specific position in a byte array.\n /// @param b Byte array to insert into.\n /// @param index Index in byte array of .\n /// @param input bytes to insert.\n function writeBytesWithLength(\n bytes memory b,\n uint256 index,\n bytes memory input\n )\n internal\n pure\n {\n // Assert length of is valid, given\n // length of input\n require(\n b.length >= index + 32 + input.length, // 32 bytes to store length\n \"GREATER_OR_EQUAL_TO_NESTED_BYTES_LENGTH_REQUIRED\"\n );\n\n // Copy into \n memCopy(\n b.contentAddress() + index,\n input.rawAddress(), // includes length of \n input.length + 32 // +32 bytes to store length\n );\n }\n\n /// @dev Performs a deep copy of a byte array onto another byte array of greater than or equal length.\n /// @param dest Byte array that will be overwritten with source bytes.\n /// @param source Byte array to copy onto dest bytes.\n function deepCopyBytes(\n bytes memory dest,\n bytes memory source\n )\n internal\n pure\n {\n uint256 sourceLen = source.length;\n // Dest length must be >= source length, or some bytes would not be copied.\n require(\n dest.length >= sourceLen,\n \"GREATER_OR_EQUAL_TO_SOURCE_BYTES_LENGTH_REQUIRED\"\n );\n memCopy(\n dest.contentAddress(),\n source.contentAddress(),\n sourceLen\n );\n }\n}\n", + "src/mixins/MSignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"../interfaces/ISignatureValidator.sol\";\n\n\ncontract MSignatureValidator is\n ISignatureValidator\n{\n // Allowed signature types.\n enum SignatureType {\n Illegal, // 0x00, default value\n EIP712, // 0x01\n EthSign, // 0x02\n NSignatureTypes // 0x03, number of signature types. Always leave at end.\n }\n}\n", + "src/interfaces/ISignatureValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract ISignatureValidator {\n\n /// @dev Recovers the address of a signer given a hash and signature.\n /// @param hash Any 32 byte hash.\n /// @param signature Proof that the hash has been signed by signer.\n function getSignerAddress(bytes32 hash, bytes memory signature)\n public\n pure\n returns (address signerAddress);\n}\n", + "src/MixinCoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol\";\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"@0x/contracts-utils/contracts/src/LibBytes.sol\";\nimport \"@0x/contracts-utils/contracts/src/LibAddressArray.sol\";\nimport \"./libs/LibCoordinatorApproval.sol\";\nimport \"./libs/LibZeroExTransaction.sol\";\nimport \"./mixins/MSignatureValidator.sol\";\nimport \"./mixins/MCoordinatorApprovalVerifier.sol\";\n\n\n// solhint-disable avoid-tx-origin\ncontract MixinCoordinatorApprovalVerifier is\n LibExchangeSelectors,\n LibCoordinatorApproval,\n LibZeroExTransaction,\n MSignatureValidator,\n MCoordinatorApprovalVerifier\n{\n using LibBytes for bytes;\n using LibAddressArray for address[];\n\n /// @dev Validates that the 0x transaction has been approved by all of the feeRecipients\n /// that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function assertValidCoordinatorApprovals(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view\n {\n // Get the orders from the the Exchange calldata in the 0x transaction\n LibOrder.Order[] memory orders = decodeFillDataOrders(transaction.data);\n\n // No approval is required for non-fill methods\n if (orders.length > 0) {\n // Revert if approval is invalid for transaction orders\n assertValidTransactionOrdersApproval(\n transaction,\n orders,\n txOrigin,\n transactionSignature,\n approvalExpirationTimeSeconds,\n approvalSignatures\n );\n }\n }\n\n /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param orders Array of order structs containing order specifications.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order.\n function assertValidTransactionOrdersApproval(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n LibOrder.Order[] memory orders,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view\n {\n // Verify that Ethereum tx signer is the same as the approved txOrigin\n require(\n tx.origin == txOrigin,\n \"INVALID_ORIGIN\"\n );\n\n // Hash 0x transaction\n bytes32 transactionHash = getTransactionHash(transaction);\n\n // Create empty list of approval signers\n address[] memory approvalSignerAddresses = new address[](0);\n\n uint256 signaturesLength = approvalSignatures.length;\n for (uint256 i = 0; i != signaturesLength; i++) {\n // Create approval message\n uint256 currentApprovalExpirationTimeSeconds = approvalExpirationTimeSeconds[i];\n CoordinatorApproval memory approval = CoordinatorApproval({\n txOrigin: txOrigin,\n transactionHash: transactionHash,\n transactionSignature: transactionSignature,\n approvalExpirationTimeSeconds: currentApprovalExpirationTimeSeconds\n });\n\n // Ensure approval has not expired\n require(\n // solhint-disable-next-line not-rely-on-time\n currentApprovalExpirationTimeSeconds > block.timestamp,\n \"APPROVAL_EXPIRED\"\n );\n\n // Hash approval message and recover signer address\n bytes32 approvalHash = getCoordinatorApprovalHash(approval);\n address approvalSignerAddress = getSignerAddress(approvalHash, approvalSignatures[i]);\n \n // Add approval signer to list of signers\n approvalSignerAddresses = approvalSignerAddresses.append(approvalSignerAddress);\n }\n \n // Ethereum transaction signer gives implicit signature of approval\n approvalSignerAddresses = approvalSignerAddresses.append(tx.origin);\n \n uint256 ordersLength = orders.length;\n for (uint256 i = 0; i != ordersLength; i++) {\n // Do not check approval if the order's senderAddress is null\n if (orders[i].senderAddress == address(0)) {\n continue;\n }\n\n // Ensure feeRecipient of order has approved this 0x transaction\n address approverAddress = orders[i].feeRecipientAddress;\n bool isOrderApproved = approvalSignerAddresses.contains(approverAddress);\n require(\n isOrderApproved,\n \"INVALID_APPROVAL_SIGNATURE\"\n );\n }\n }\n\n /// @dev Decodes the orders from Exchange calldata representing any fill method.\n /// @param data Exchange calldata representing a fill method.\n /// @return The orders from the Exchange calldata.\n function decodeFillDataOrders(bytes memory data)\n internal\n pure\n returns (LibOrder.Order[] memory orders)\n {\n bytes4 selector = data.readBytes4(0);\n if (\n selector == FILL_ORDER_SELECTOR ||\n selector == FILL_ORDER_NO_THROW_SELECTOR ||\n selector == FILL_OR_KILL_ORDER_SELECTOR\n ) {\n // Decode single order\n (LibOrder.Order memory order) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order)\n );\n orders = new LibOrder.Order[](1);\n orders[0] = order;\n } else if (\n selector == BATCH_FILL_ORDERS_SELECTOR ||\n selector == BATCH_FILL_ORDERS_NO_THROW_SELECTOR ||\n selector == BATCH_FILL_OR_KILL_ORDERS_SELECTOR ||\n selector == MARKET_BUY_ORDERS_SELECTOR ||\n selector == MARKET_BUY_ORDERS_NO_THROW_SELECTOR ||\n selector == MARKET_SELL_ORDERS_SELECTOR ||\n selector == MARKET_SELL_ORDERS_NO_THROW_SELECTOR\n ) {\n // Decode all orders\n // solhint-disable indent\n (orders) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order[])\n );\n } else if (selector == MATCH_ORDERS_SELECTOR) {\n // Decode left and right orders\n (LibOrder.Order memory leftOrder, LibOrder.Order memory rightOrder) = abi.decode(\n data.slice(4, data.length),\n (LibOrder.Order, LibOrder.Order)\n );\n\n // Create array of orders\n orders = new LibOrder.Order[](2);\n orders[0] = leftOrder;\n orders[1] = rightOrder;\n }\n return orders;\n }\n}\n", + "@0x/contracts-exchange-libs/contracts/src/LibExchangeSelectors.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibExchangeSelectors {\n\n // solhint-disable max-line-length\n // allowedValidators\n bytes4 constant internal ALLOWED_VALIDATORS_SELECTOR = 0x7b8e3514;\n bytes4 constant internal ALLOWED_VALIDATORS_SELECTOR_GENERATOR = bytes4(keccak256(\"allowedValidators(address,address)\"));\n\n // assetProxies\n bytes4 constant internal ASSET_PROXIES_SELECTOR = 0x3fd3c997;\n bytes4 constant internal ASSET_PROXIES_SELECTOR_GENERATOR = bytes4(keccak256(\"assetProxies(bytes4)\"));\n\n // batchCancelOrders\n bytes4 constant internal BATCH_CANCEL_ORDERS_SELECTOR = 0x4ac14782;\n bytes4 constant internal BATCH_CANCEL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchCancelOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])\"));\n\n // batchFillOrKillOrders\n bytes4 constant internal BATCH_FILL_OR_KILL_ORDERS_SELECTOR = 0x4d0ae546;\n bytes4 constant internal BATCH_FILL_OR_KILL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrKillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // batchFillOrders\n bytes4 constant internal BATCH_FILL_ORDERS_SELECTOR = 0x297bb70b;\n bytes4 constant internal BATCH_FILL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // batchFillOrdersNoThrow\n bytes4 constant internal BATCH_FILL_ORDERS_NO_THROW_SELECTOR = 0x50dde190;\n bytes4 constant internal BATCH_FILL_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"batchFillOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256[],bytes[])\"));\n\n // cancelOrder\n bytes4 constant internal CANCEL_ORDER_SELECTOR = 0xd46b02c3;\n bytes4 constant internal CANCEL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\"));\n\n // cancelOrdersUpTo\n bytes4 constant internal CANCEL_ORDERS_UP_TO_SELECTOR = 0x4f9559b1;\n bytes4 constant internal CANCEL_ORDERS_UP_TO_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelOrdersUpTo(uint256)\"));\n\n // cancelled\n bytes4 constant internal CANCELLED_SELECTOR = 0x2ac12622;\n bytes4 constant internal CANCELLED_SELECTOR_GENERATOR = bytes4(keccak256(\"cancelled(bytes32)\"));\n\n // currentContextAddress\n bytes4 constant internal CURRENT_CONTEXT_ADDRESS_SELECTOR = 0xeea086ba;\n bytes4 constant internal CURRENT_CONTEXT_ADDRESS_SELECTOR_GENERATOR = bytes4(keccak256(\"currentContextAddress()\"));\n\n // executeTransaction\n bytes4 constant internal EXECUTE_TRANSACTION_SELECTOR = 0xbfc8bfce;\n bytes4 constant internal EXECUTE_TRANSACTION_SELECTOR_GENERATOR = bytes4(keccak256(\"executeTransaction(uint256,address,bytes,bytes)\"));\n\n // fillOrKillOrder\n bytes4 constant internal FILL_OR_KILL_ORDER_SELECTOR = 0x64a3bc15;\n bytes4 constant internal FILL_OR_KILL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrKillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // fillOrder\n bytes4 constant internal FILL_ORDER_SELECTOR = 0xb4be83d5;\n bytes4 constant internal FILL_ORDER_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // fillOrderNoThrow\n bytes4 constant internal FILL_ORDER_NO_THROW_SELECTOR = 0x3e228bae;\n bytes4 constant internal FILL_ORDER_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"fillOrderNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes)\"));\n\n // filled\n bytes4 constant internal FILLED_SELECTOR = 0x288cdc91;\n bytes4 constant internal FILLED_SELECTOR_GENERATOR = bytes4(keccak256(\"filled(bytes32)\"));\n\n // getAssetProxy\n bytes4 constant internal GET_ASSET_PROXY_SELECTOR = 0x60704108;\n bytes4 constant internal GET_ASSET_PROXY_SELECTOR_GENERATOR = bytes4(keccak256(\"getAssetProxy(bytes4)\"));\n\n // getOrderInfo\n bytes4 constant internal GET_ORDER_INFO_SELECTOR = 0xc75e0a81;\n bytes4 constant internal GET_ORDER_INFO_SELECTOR_GENERATOR = bytes4(keccak256(\"getOrderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\"));\n\n // getOrdersInfo\n bytes4 constant internal GET_ORDERS_INFO_SELECTOR = 0x7e9d74dc;\n bytes4 constant internal GET_ORDERS_INFO_SELECTOR_GENERATOR = bytes4(keccak256(\"getOrdersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])\"));\n\n // isValidSignature\n bytes4 constant internal IS_VALID_SIGNATURE_SELECTOR = 0x93634702;\n bytes4 constant internal IS_VALID_SIGNATURE_SELECTOR_GENERATOR = bytes4(keccak256(\"isValidSignature(bytes32,address,bytes)\"));\n\n // marketBuyOrders\n bytes4 constant internal MARKET_BUY_ORDERS_SELECTOR = 0xe5fa431b;\n bytes4 constant internal MARKET_BUY_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"marketBuyOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketBuyOrdersNoThrow\n bytes4 constant internal MARKET_BUY_ORDERS_NO_THROW_SELECTOR = 0xa3e20380;\n bytes4 constant internal MARKET_BUY_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"marketBuyOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketSellOrders\n bytes4 constant internal MARKET_SELL_ORDERS_SELECTOR = 0x7e1d9808;\n bytes4 constant internal MARKET_SELL_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"marketSellOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // marketSellOrdersNoThrow\n bytes4 constant internal MARKET_SELL_ORDERS_NO_THROW_SELECTOR = 0xdd1c7d18;\n bytes4 constant internal MARKET_SELL_ORDERS_NO_THROW_SELECTOR_GENERATOR = bytes4(keccak256(\"marketSellOrdersNoThrow((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],uint256,bytes[])\"));\n\n // matchOrders\n bytes4 constant internal MATCH_ORDERS_SELECTOR = 0x3c28d861;\n bytes4 constant internal MATCH_ORDERS_SELECTOR_GENERATOR = bytes4(keccak256(\"matchOrders((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes,bytes)\"));\n\n // orderEpoch\n bytes4 constant internal ORDER_EPOCH_SELECTOR = 0xd9bfa73e;\n bytes4 constant internal ORDER_EPOCH_SELECTOR_GENERATOR = bytes4(keccak256(\"orderEpoch(address,address)\"));\n\n // owner\n bytes4 constant internal OWNER_SELECTOR = 0x8da5cb5b;\n bytes4 constant internal OWNER_SELECTOR_GENERATOR = bytes4(keccak256(\"owner()\"));\n\n // preSign\n bytes4 constant internal PRE_SIGN_SELECTOR = 0x3683ef8e;\n bytes4 constant internal PRE_SIGN_SELECTOR_GENERATOR = bytes4(keccak256(\"preSign(bytes32,address,bytes)\"));\n\n // preSigned\n bytes4 constant internal PRE_SIGNED_SELECTOR = 0x82c174d0;\n bytes4 constant internal PRE_SIGNED_SELECTOR_GENERATOR = bytes4(keccak256(\"preSigned(bytes32,address)\"));\n\n // registerAssetProxy\n bytes4 constant internal REGISTER_ASSET_PROXY_SELECTOR = 0xc585bb93;\n bytes4 constant internal REGISTER_ASSET_PROXY_SELECTOR_GENERATOR = bytes4(keccak256(\"registerAssetProxy(address)\"));\n\n // setSignatureValidatorApproval\n bytes4 constant internal SET_SIGNATURE_VALIDATOR_APPROVAL_SELECTOR = 0x77fcce68;\n bytes4 constant internal SET_SIGNATURE_VALIDATOR_APPROVAL_SELECTOR_GENERATOR = bytes4(keccak256(\"setSignatureValidatorApproval(address,bool)\"));\n\n // transactions\n bytes4 constant internal TRANSACTIONS_SELECTOR = 0x642f2eaf;\n bytes4 constant internal TRANSACTIONS_SELECTOR_GENERATOR = bytes4(keccak256(\"transactions(bytes32)\"));\n\n // transferOwnership\n bytes4 constant internal TRANSFER_OWNERSHIP_SELECTOR = 0xf2fde38b;\n bytes4 constant internal TRANSFER_OWNERSHIP_SELECTOR_GENERATOR = bytes4(keccak256(\"transferOwnership(address)\"));\n}", + "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712.sol\";\n\n\ncontract LibOrder is\n LibEIP712\n{\n // Hash for the EIP712 Order Schema\n bytes32 constant internal EIP712_ORDER_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"Order(\",\n \"address makerAddress,\",\n \"address takerAddress,\",\n \"address feeRecipientAddress,\",\n \"address senderAddress,\",\n \"uint256 makerAssetAmount,\",\n \"uint256 takerAssetAmount,\",\n \"uint256 makerFee,\",\n \"uint256 takerFee,\",\n \"uint256 expirationTimeSeconds,\",\n \"uint256 salt,\",\n \"bytes makerAssetData,\",\n \"bytes takerAssetData\",\n \")\"\n ));\n\n // A valid order remains fillable until it is expired, fully filled, or cancelled.\n // An order's state is unaffected by external factors, like account balances.\n enum OrderStatus {\n INVALID, // Default value\n INVALID_MAKER_ASSET_AMOUNT, // Order does not have a valid maker asset amount\n INVALID_TAKER_ASSET_AMOUNT, // Order does not have a valid taker asset amount\n FILLABLE, // Order is fillable\n EXPIRED, // Order has already expired\n FULLY_FILLED, // Order is fully filled\n CANCELLED // Order has been cancelled\n }\n\n // solhint-disable max-line-length\n struct Order {\n address makerAddress; // Address that created the order. \n address takerAddress; // Address that is allowed to fill the order. If set to 0, any address is allowed to fill the order. \n address feeRecipientAddress; // Address that will recieve fees when order is filled. \n address senderAddress; // Address that is allowed to call Exchange contract methods that affect this order. If set to 0, any address is allowed to call these methods.\n uint256 makerAssetAmount; // Amount of makerAsset being offered by maker. Must be greater than 0. \n uint256 takerAssetAmount; // Amount of takerAsset being bid on by maker. Must be greater than 0. \n uint256 makerFee; // Amount of ZRX paid to feeRecipient by maker when order is filled. If set to 0, no transfer of ZRX from maker to feeRecipient will be attempted.\n uint256 takerFee; // Amount of ZRX paid to feeRecipient by taker when order is filled. If set to 0, no transfer of ZRX from taker to feeRecipient will be attempted.\n uint256 expirationTimeSeconds; // Timestamp in seconds at which order expires. \n uint256 salt; // Arbitrary number to facilitate uniqueness of the order's hash. \n bytes makerAssetData; // Encoded data that can be decoded by a specified proxy contract when transferring makerAsset. The last byte references the id of this proxy.\n bytes takerAssetData; // Encoded data that can be decoded by a specified proxy contract when transferring takerAsset. The last byte references the id of this proxy.\n }\n // solhint-enable max-line-length\n\n struct OrderInfo {\n uint8 orderStatus; // Status that describes order's validity and fillability.\n bytes32 orderHash; // EIP712 hash of the order (see LibOrder.getOrderHash).\n uint256 orderTakerAssetFilledAmount; // Amount of order that has already been filled.\n }\n\n /// @dev Calculates Keccak-256 hash of the order.\n /// @param order The order structure.\n /// @return Keccak-256 EIP712 hash of the order.\n function getOrderHash(Order memory order)\n internal\n view\n returns (bytes32 orderHash)\n {\n orderHash = hashEIP712Message(hashOrder(order));\n return orderHash;\n }\n\n /// @dev Calculates EIP712 hash of the order.\n /// @param order The order structure.\n /// @return EIP712 hash of the order.\n function hashOrder(Order memory order)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_ORDER_SCHEMA_HASH;\n bytes32 makerAssetDataHash = keccak256(order.makerAssetData);\n bytes32 takerAssetDataHash = keccak256(order.takerAssetData);\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_ORDER_SCHEMA_HASH,\n // bytes32(order.makerAddress),\n // bytes32(order.takerAddress),\n // bytes32(order.feeRecipientAddress),\n // bytes32(order.senderAddress),\n // order.makerAssetAmount,\n // order.takerAssetAmount,\n // order.makerFee,\n // order.takerFee,\n // order.expirationTimeSeconds,\n // order.salt,\n // keccak256(order.makerAssetData),\n // keccak256(order.takerAssetData)\n // ));\n\n assembly {\n // Calculate memory addresses that will be swapped out before hashing\n let pos1 := sub(order, 32)\n let pos2 := add(order, 320)\n let pos3 := add(order, 352)\n\n // Backup\n let temp1 := mload(pos1)\n let temp2 := mload(pos2)\n let temp3 := mload(pos3)\n \n // Hash in place\n mstore(pos1, schemaHash)\n mstore(pos2, makerAssetDataHash)\n mstore(pos3, takerAssetDataHash)\n result := keccak256(pos1, 416)\n \n // Restore\n mstore(pos1, temp1)\n mstore(pos2, temp2)\n mstore(pos3, temp3)\n }\n return result;\n }\n}\n", + "@0x/contracts-exchange-libs/contracts/src/LibEIP712.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibEIP712 {\n\n // EIP191 header for EIP712 prefix\n string constant internal EIP191_HEADER = \"\\x19\\x01\";\n\n // EIP712 Domain Name value\n string constant internal EIP712_DOMAIN_NAME = \"0x Protocol\";\n\n // EIP712 Domain Version value\n string constant internal EIP712_DOMAIN_VERSION = \"2\";\n\n // Hash of the EIP712 Domain Separator Schema\n bytes32 constant internal EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"EIP712Domain(\",\n \"string name,\",\n \"string version,\",\n \"address verifyingContract\",\n \")\"\n ));\n\n // Hash of the EIP712 Domain Separator data\n // solhint-disable-next-line var-name-mixedcase\n bytes32 public EIP712_DOMAIN_HASH;\n\n constructor ()\n public\n {\n EIP712_DOMAIN_HASH = keccak256(abi.encodePacked(\n EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH,\n keccak256(bytes(EIP712_DOMAIN_NAME)),\n keccak256(bytes(EIP712_DOMAIN_VERSION)),\n uint256(address(this))\n ));\n }\n\n /// @dev Calculates EIP712 encoding for a hash struct in this EIP712 Domain.\n /// @param hashStruct The EIP712 hash struct.\n /// @return EIP712 hash applied to this EIP712 Domain.\n function hashEIP712Message(bytes32 hashStruct)\n internal\n view\n returns (bytes32 result)\n {\n bytes32 eip712DomainHash = EIP712_DOMAIN_HASH;\n\n // Assembly for more efficient computing:\n // keccak256(abi.encodePacked(\n // EIP191_HEADER,\n // EIP712_DOMAIN_HASH,\n // hashStruct \n // ));\n\n assembly {\n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000) // EIP191 header\n mstore(add(memPtr, 2), eip712DomainHash) // EIP712 domain hash\n mstore(add(memPtr, 34), hashStruct) // Hash of struct\n\n // Compute hash\n result := keccak256(memPtr, 66)\n }\n return result;\n }\n}\n", + "@0x/contracts-utils/contracts/src/LibAddressArray.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibBytes.sol\";\n\n\nlibrary LibAddressArray {\n\n /// @dev Append a new address to an array of addresses.\n /// The `addressArray` may need to be reallocated to make space\n /// for the new address. Because of this we return the resulting\n /// memory location of `addressArray`.\n /// @param addressArray Array of addresses.\n /// @param addressToAppend Address to append.\n /// @return Array of addresses: [... addressArray, addressToAppend]\n function append(address[] memory addressArray, address addressToAppend) \n internal\n pure\n returns (address[] memory)\n {\n // Get stats on address array and free memory\n uint256 freeMemPtr = 0;\n uint256 addressArrayBeginPtr = 0;\n uint256 addressArrayEndPtr = 0;\n uint256 addressArrayLength = addressArray.length;\n uint256 addressArrayMemSizeInBytes = 32 + (32 * addressArrayLength);\n assembly {\n freeMemPtr := mload(0x40)\n addressArrayBeginPtr := addressArray\n addressArrayEndPtr := add(addressArray, addressArrayMemSizeInBytes)\n }\n\n // Cases for `freeMemPtr`:\n // `freeMemPtr` == `addressArrayEndPtr`: Nothing occupies memory after `addressArray`\n // `freeMemPtr` > `addressArrayEndPtr`: Some value occupies memory after `addressArray`\n // `freeMemPtr` < `addressArrayEndPtr`: Memory has not been managed properly.\n require(\n freeMemPtr >= addressArrayEndPtr,\n \"INVALID_FREE_MEMORY_PTR\"\n );\n\n // If free memory begins at the end of `addressArray`\n // then we can append `addressToAppend` directly.\n // Otherwise, we must copy the array to free memory\n // before appending new values to it.\n if (freeMemPtr > addressArrayEndPtr) {\n LibBytes.memCopy(freeMemPtr, addressArrayBeginPtr, addressArrayMemSizeInBytes);\n assembly {\n addressArray := freeMemPtr\n addressArrayBeginPtr := addressArray\n }\n }\n\n // Append `addressToAppend`\n addressArrayLength += 1;\n addressArrayMemSizeInBytes += 32;\n addressArrayEndPtr = addressArrayBeginPtr + addressArrayMemSizeInBytes;\n freeMemPtr = addressArrayEndPtr;\n assembly {\n // Store new array length\n mstore(addressArray, addressArrayLength)\n\n // Update `freeMemPtr`\n mstore(0x40, freeMemPtr)\n }\n addressArray[addressArrayLength - 1] = addressToAppend;\n return addressArray;\n }\n\n /// @dev Checks if an address array contains the target address.\n /// @param addressArray Array of addresses.\n /// @param target Address to search for in array.\n /// @return True if the addressArray contains the target.\n function contains(address[] memory addressArray, address target)\n internal\n pure\n returns (bool success)\n {\n assembly {\n\n // Calculate byte length of array\n let arrayByteLen := mul(mload(addressArray), 32)\n // Calculate beginning of array contents\n let arrayContentsStart := add(addressArray, 32)\n // Calclulate end of array contents\n let arrayContentsEnd := add(arrayContentsStart, arrayByteLen)\n\n // Loop through array\n for {let i:= arrayContentsStart} lt(i, arrayContentsEnd) {i := add(i, 32)} {\n\n // Load array element\n let arrayElement := mload(i)\n\n // Return true if array element equals target\n if eq(target, arrayElement) {\n // Set success to true\n success := 1\n // Break loop\n i := arrayContentsEnd\n }\n }\n }\n return success;\n }\n\n /// @dev Finds the index of an address within an array.\n /// @param addressArray Array of addresses.\n /// @param target Address to search for in array.\n /// @return Existence and index of the target in the array.\n function indexOf(address[] memory addressArray, address target)\n internal\n pure\n returns (bool success, uint256 index)\n {\n assembly {\n\n // Calculate byte length of array\n let arrayByteLen := mul(mload(addressArray), 32)\n // Calculate beginning of array contents\n let arrayContentsStart := add(addressArray, 32)\n // Calclulate end of array contents\n let arrayContentsEnd := add(arrayContentsStart, arrayByteLen)\n\n // Loop through array\n for {let i:= arrayContentsStart} lt(i, arrayContentsEnd) {i := add(i, 32)} {\n\n // Load array element\n let arrayElement := mload(i)\n\n // Return true if array element equals target\n if eq(target, arrayElement) {\n // Set success and index\n success := 1\n index := div(i, 32)\n // Break loop\n i := arrayContentsEnd\n }\n }\n }\n return (success, index);\n }\n}\n", + "src/libs/LibCoordinatorApproval.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712Domain.sol\";\n\n\ncontract LibCoordinatorApproval is\n LibEIP712Domain\n{\n // Hash for the EIP712 Coordinator approval message\n // keccak256(abi.encodePacked(\n // \"CoordinatorApproval(\",\n // \"address txOrigin,\",\n // \"bytes32 transactionHash,\",\n // \"bytes transactionSignature,\",\n // \"uint256 approvalExpirationTimeSeconds\",\n // \")\"\n // ));\n bytes32 constant internal EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH = 0x2fbcdbaa76bc7589916958ae919dfbef04d23f6bbf26de6ff317b32c6cc01e05;\n\n struct CoordinatorApproval {\n address txOrigin; // Required signer of Ethereum transaction that is submitting approval.\n bytes32 transactionHash; // EIP712 hash of the transaction, using the domain separator of this contract.\n bytes transactionSignature; // Signature of the 0x transaction.\n uint256 approvalExpirationTimeSeconds; // Timestamp in seconds for which the signature expires.\n }\n\n /// @dev Calculated the EIP712 hash of the Coordinator approval mesasage using the domain separator of this contract.\n /// @param approval Coordinator approval message containing the transaction hash, transaction signature, and expiration of the approval.\n /// @return EIP712 hash of the Coordinator approval message with the domain separator of this contract.\n function getCoordinatorApprovalHash(CoordinatorApproval memory approval)\n internal\n view\n returns (bytes32 approvalHash)\n {\n approvalHash = hashEIP712Message(hashCoordinatorApproval(approval));\n return approvalHash;\n }\n\n /// @dev Calculated the EIP712 hash of the Coordinator approval mesasage with no domain separator.\n /// @param approval Coordinator approval message containing the transaction hash, transaction signature, and expiration of the approval.\n /// @return EIP712 hash of the Coordinator approval message with no domain separator.\n function hashCoordinatorApproval(CoordinatorApproval memory approval)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH;\n bytes memory transactionSignature = approval.transactionSignature;\n address txOrigin = approval.txOrigin;\n bytes32 transactionHash = approval.transactionHash;\n uint256 approvalExpirationTimeSeconds = approval.approvalExpirationTimeSeconds;\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH,\n // approval.transactionHash,\n // keccak256(approval.transactionSignature)\n // approval.expiration,\n // ));\n\n assembly {\n // Compute hash of transaction signature\n let transactionSignatureHash := keccak256(add(transactionSignature, 32), mload(transactionSignature))\n \n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, schemaHash) // hash of schema\n mstore(add(memPtr, 32), txOrigin) // txOrigin\n mstore(add(memPtr, 64), transactionHash) // transactionHash\n mstore(add(memPtr, 96), transactionSignatureHash) // transactionSignatureHash\n mstore(add(memPtr, 128), approvalExpirationTimeSeconds) // approvalExpirationTimeSeconds\n // Compute hash\n result := keccak256(memPtr, 160)\n }\n return result;\n }\n}\n", + "src/libs/LibEIP712Domain.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\n\ncontract LibEIP712Domain {\n\n // EIP191 header for EIP712 prefix\n string constant internal EIP191_HEADER = \"\\x19\\x01\";\n\n // EIP712 Domain Name value\n string constant internal EIP712_DOMAIN_NAME = \"0x Protocol Coordinator\";\n\n // EIP712 Domain Version value\n string constant internal EIP712_DOMAIN_VERSION = \"1.0.0\";\n\n // Hash of the EIP712 Domain Separator Schema\n bytes32 constant internal EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH = keccak256(abi.encodePacked(\n \"EIP712Domain(\",\n \"string name,\",\n \"string version,\",\n \"address verifyingContract\",\n \")\"\n ));\n\n // Hash of the EIP712 Domain Separator data\n // solhint-disable-next-line var-name-mixedcase\n bytes32 public EIP712_DOMAIN_HASH;\n\n constructor ()\n public\n {\n EIP712_DOMAIN_HASH = keccak256(abi.encodePacked(\n EIP712_DOMAIN_SEPARATOR_SCHEMA_HASH,\n keccak256(bytes(EIP712_DOMAIN_NAME)),\n keccak256(bytes(EIP712_DOMAIN_VERSION)),\n uint256(address(this))\n ));\n }\n\n /// @dev Calculates EIP712 encoding for a hash struct in this EIP712 Domain.\n /// @param hashStruct The EIP712 hash struct.\n /// @return EIP712 hash applied to this EIP712 Domain.\n function hashEIP712Message(bytes32 hashStruct)\n internal\n view\n returns (bytes32 result)\n {\n bytes32 eip712DomainHash = EIP712_DOMAIN_HASH;\n\n // Assembly for more efficient computing:\n // keccak256(abi.encodePacked(\n // EIP191_HEADER,\n // EIP712_DOMAIN_HASH,\n // hashStruct \n // ));\n\n assembly {\n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000) // EIP191 header\n mstore(add(memPtr, 2), eip712DomainHash) // EIP712 domain hash\n mstore(add(memPtr, 34), hashStruct) // Hash of struct\n\n // Compute hash\n result := keccak256(memPtr, 66)\n }\n return result;\n }\n}\n", + "src/libs/LibZeroExTransaction.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\n\nimport \"./LibEIP712Domain.sol\";\n\n\ncontract LibZeroExTransaction is\n LibEIP712Domain\n{\n // Hash for the EIP712 0x transaction schema\n // keccak256(abi.encodePacked(\n // \"ZeroExTransaction(\",\n // \"uint256 salt,\",\n // \"address signerAddress,\",\n // \"bytes data\",\n // \")\"\n // ));\n bytes32 constant internal EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH = 0x213c6f636f3ea94e701c0adf9b2624aa45a6c694f9a292c094f9a81c24b5df4c;\n\n struct ZeroExTransaction {\n uint256 salt; // Arbitrary number to ensure uniqueness of transaction hash.\n address signerAddress; // Address of transaction signer.\n bytes data; // AbiV2 encoded calldata.\n }\n\n /// @dev Calculates the EIP712 hash of a 0x transaction using the domain separator of this contract.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @return EIP712 hash of the transaction with the domain separator of this contract.\n function getTransactionHash(ZeroExTransaction memory transaction)\n internal\n view\n returns (bytes32 transactionHash)\n {\n // Note: this transaction hash will differ from the hash produced by the Exchange contract because it utilizes a different domain hash.\n transactionHash = hashEIP712Message(hashZeroExTransaction(transaction));\n return transactionHash;\n }\n\n /// @dev Calculates EIP712 hash of the 0x transaction with no domain separator.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @return EIP712 hash of the transaction with no domain separator.\n function hashZeroExTransaction(ZeroExTransaction memory transaction)\n internal\n pure\n returns (bytes32 result)\n {\n bytes32 schemaHash = EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH;\n bytes memory data = transaction.data;\n uint256 salt = transaction.salt;\n address signerAddress = transaction.signerAddress;\n\n // Assembly for more efficiently computing:\n // keccak256(abi.encodePacked(\n // EIP712_ZEROEX_TRANSACTION_SCHEMA_HASH,\n // transaction.salt,\n // uint256(transaction.signerAddress),\n // keccak256(transaction.data)\n // ));\n\n assembly {\n // Compute hash of data\n let dataHash := keccak256(add(data, 32), mload(data))\n \n // Load free memory pointer\n let memPtr := mload(64)\n\n mstore(memPtr, schemaHash) // hash of schema\n mstore(add(memPtr, 32), salt) // salt\n mstore(add(memPtr, 64), and(signerAddress, 0xffffffffffffffffffffffffffffffffffffffff)) // signerAddress\n mstore(add(memPtr, 96), dataHash) // hash of data\n\n // Compute hash\n result := keccak256(memPtr, 128)\n }\n return result;\n }\n}\n", + "src/mixins/MCoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"../interfaces/ICoordinatorApprovalVerifier.sol\";\n\n\ncontract MCoordinatorApprovalVerifier is\n ICoordinatorApprovalVerifier\n{\n /// @dev Decodes the orders from Exchange calldata representing any fill method.\n /// @param data Exchange calldata representing a fill method.\n /// @return The orders from the Exchange calldata.\n function decodeFillDataOrders(bytes memory data)\n internal\n pure\n returns (LibOrder.Order[] memory orders);\n}\n", + "src/interfaces/ICoordinatorApprovalVerifier.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"@0x/contracts-exchange-libs/contracts/src/LibOrder.sol\";\nimport \"../libs/LibZeroExTransaction.sol\";\n\n\ncontract ICoordinatorApprovalVerifier {\n\n /// @dev Validates that the 0x transaction has been approved by all of the feeRecipients\n /// that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function assertValidCoordinatorApprovals(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view;\n\n /// @dev Validates that the feeRecipients of a batch of order have approved a 0x transaction.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param orders Array of order structs containing order specifications.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order.\n function assertValidTransactionOrdersApproval(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n LibOrder.Order[] memory orders,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n view;\n}\n", + "src/MixinCoordinatorCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"./libs/LibZeroExTransaction.sol\";\nimport \"./libs/LibConstants.sol\";\nimport \"./mixins/MCoordinatorApprovalVerifier.sol\";\nimport \"./interfaces/ICoordinatorCore.sol\";\n\n\ncontract MixinCoordinatorCore is\n LibConstants,\n MCoordinatorApprovalVerifier,\n ICoordinatorCore\n{\n /// @dev Executes a 0x transaction that has been signed by the feeRecipients that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function executeTransaction(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public\n {\n // Validate that the 0x transaction has been approves by each feeRecipient\n assertValidCoordinatorApprovals(\n transaction,\n txOrigin,\n transactionSignature,\n approvalExpirationTimeSeconds,\n approvalSignatures\n );\n\n // Execute the transaction\n EXCHANGE.executeTransaction(\n transaction.salt,\n transaction.signerAddress,\n transaction.data,\n transactionSignature\n );\n }\n}\n", + "src/interfaces/ICoordinatorCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.3;\npragma experimental \"ABIEncoderV2\";\n\nimport \"../libs/LibZeroExTransaction.sol\";\n\n\ncontract ICoordinatorCore {\n\n /// @dev Executes a 0x transaction that has been signed by the feeRecipients that correspond to each order in the transaction's Exchange calldata.\n /// @param transaction 0x transaction containing salt, signerAddress, and data.\n /// @param txOrigin Required signer of Ethereum transaction calling this function.\n /// @param transactionSignature Proof that the transaction has been signed by the signer.\n /// @param approvalExpirationTimeSeconds Array of expiration times in seconds for which each corresponding approval signature expires.\n /// @param approvalSignatures Array of signatures that correspond to the feeRecipients of each order in the transaction's Exchange calldata.\n function executeTransaction(\n LibZeroExTransaction.ZeroExTransaction memory transaction,\n address txOrigin,\n bytes memory transactionSignature,\n uint256[] memory approvalExpirationTimeSeconds,\n bytes[] memory approvalSignatures\n )\n public;\n}\n" + }, + "sourceTreeHashHex": "0xcb9dc4e3588f7417807cc8b901a358efbad1d37ae61794e3031c8f00ac09d41e", + "compiler": { + "name": "solc", + "version": "0.5.3+commit.10d17f24.Linux.g++", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode.object", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.object", + "evm.deployedBytecode.sourceMap" + ] + } + }, + "evmVersion": "byzantium", + "remappings": [ + "@0x/contracts-utils=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-utils", + "@0x/contracts-exchange-libs=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-exchange-libs" + ] + } + }, + "networks": {} +} \ No newline at end of file diff --git a/python-packages/contract_artifacts/src/zero_ex/contract_artifacts/artifacts/CoordinatorRegistry.json b/python-packages/contract_artifacts/src/zero_ex/contract_artifacts/artifacts/CoordinatorRegistry.json new file mode 100644 index 0000000000..837e3b7046 --- /dev/null +++ b/python-packages/contract_artifacts/src/zero_ex/contract_artifacts/artifacts/CoordinatorRegistry.json @@ -0,0 +1,122 @@ +{ + "schemaVersion": "2.0.0", + "contractName": "CoordinatorRegistry", + "compilerOutput": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "name": "setCoordinatorEndpoint", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "coordinatorOperator", + "type": "address" + } + ], + "name": "getCoordinatorEndpoint", + "outputs": [ + { + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "coordinatorOperator", + "type": "address" + }, + { + "indexed": false, + "name": "coordinatorEndpoint", + "type": "string" + } + ], + "name": "CoordinatorEndpointSet", + "type": "event" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b506104b5806100206000396000f3fe608060405234801561001057600080fd5b5060043610610052577c010000000000000000000000000000000000000000000000000000000060003504635b2388be81146100575780636c90fedb1461006c575b600080fd5b61006a6100653660046102ff565b610095565b005b61007f61007a3660046102d9565b6100f0565b60405161008c91906103d8565b60405180910390f35b3360008181526020819052604090206100af9084846101c4565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e8184846040516100e3939291906103ae565b60405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156101b85780601f1061018d576101008083540402835291602001916101b8565b820191906000526020600020905b81548152906001019060200180831161019b57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610223578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610250565b82800160010185558215610250579182015b82811115610250578235825591602001919060010190610235565b5061025c929150610260565b5090565b61027a91905b8082111561025c5760008155600101610266565b90565b600061028982356103ed565b9392505050565b600080601f830184136102a257600080fd5b50813567ffffffffffffffff8111156102ba57600080fd5b6020830191508360018202830111156102d257600080fd5b9250929050565b6000602082840312156102eb57600080fd5b60006102f7848461027d565b949350505050565b6000806020838503121561031257600080fd5b823567ffffffffffffffff81111561032957600080fd5b61033585828601610290565b92509250509250929050565b61034a816103ed565b82525050565b6000828452602084019350610366838584610417565b61036f83610453565b9093019392505050565b6000610384826103e9565b808452610398816020860160208601610423565b6103a181610453565b9093016020019392505050565b604081016103bc8286610341565b81810360208301526103cf818486610350565b95945050505050565b602080825281016102898184610379565b5190565b60006103f8826103fe565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561043e578181015183820152602001610426565b8381111561044d576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a72305820d8fc8bc6ec7167e671f9f87937212d93c49d5fbe171bbdfa06c846e5ac76151b6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B5 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x52 JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x5B2388BE DUP2 EQ PUSH2 0x57 JUMPI DUP1 PUSH4 0x6C90FEDB EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH2 0x65 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x95 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xAF SWAP1 DUP5 DUP5 PUSH2 0x1C4 JUMP JUMPDEST POP PUSH32 0xD060052768902F3EECB84B8EAE9D3A2608A1A9E60811A33968B46B8D552F266E DUP2 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x18D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1B8 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x19B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x223 JUMPI DUP3 DUP1 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x250 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x250 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x250 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x235 JUMP JUMPDEST POP PUSH2 0x25C SWAP3 SWAP2 POP PUSH2 0x260 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x27A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x266 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x289 DUP3 CALLDATALOAD PUSH2 0x3ED JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1F DUP4 ADD DUP5 SGT PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F7 DUP5 DUP5 PUSH2 0x27D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x335 DUP6 DUP3 DUP7 ADD PUSH2 0x290 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x34A DUP2 PUSH2 0x3ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x366 DUP4 DUP6 DUP5 PUSH2 0x417 JUMP JUMPDEST PUSH2 0x36F DUP4 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x384 DUP3 PUSH2 0x3E9 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x398 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x423 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3BC DUP3 DUP7 PUSH2 0x341 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3CF DUP2 DUP5 DUP7 PUSH2 0x350 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x289 DUP2 DUP5 PUSH2 0x379 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8 DUP3 PUSH2 0x3FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x426 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0xd8 0xfc DUP12 0xc6 0xec PUSH18 0x67E671F9F87937212D93C49D5FBE171BBDFA MOD 0xc8 0x46 0xe5 0xac PUSH23 0x151B6C6578706572696D656E74616CF500370000000000 ", + "sourceMap": "720:148:14:-;;;791:75;8:9:-1;5:2;;;30:1;27;20:12;5:2;791:75:14;720:148;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "0x608060405234801561001057600080fd5b5060043610610052577c010000000000000000000000000000000000000000000000000000000060003504635b2388be81146100575780636c90fedb1461006c575b600080fd5b61006a6100653660046102ff565b610095565b005b61007f61007a3660046102d9565b6100f0565b60405161008c91906103d8565b60405180910390f35b3360008181526020819052604090206100af9084846101c4565b507fd060052768902f3eecb84b8eae9d3a2608a1a9e60811a33968b46b8d552f266e8184846040516100e3939291906103ae565b60405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156101b85780601f1061018d576101008083540402835291602001916101b8565b820191906000526020600020905b81548152906001019060200180831161019b57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610223578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610250565b82800160010185558215610250579182015b82811115610250578235825591602001919060010190610235565b5061025c929150610260565b5090565b61027a91905b8082111561025c5760008155600101610266565b90565b600061028982356103ed565b9392505050565b600080601f830184136102a257600080fd5b50813567ffffffffffffffff8111156102ba57600080fd5b6020830191508360018202830111156102d257600080fd5b9250929050565b6000602082840312156102eb57600080fd5b60006102f7848461027d565b949350505050565b6000806020838503121561031257600080fd5b823567ffffffffffffffff81111561032957600080fd5b61033585828601610290565b92509250509250929050565b61034a816103ed565b82525050565b6000828452602084019350610366838584610417565b61036f83610453565b9093019392505050565b6000610384826103e9565b808452610398816020860160208601610423565b6103a181610453565b9093016020019392505050565b604081016103bc8286610341565b81810360208301526103cf818486610350565b95945050505050565b602080825281016102898184610379565b5190565b60006103f8826103fe565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b8381101561043e578181015183820152602001610426565b8381111561044d576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169056fea265627a7a72305820d8fc8bc6ec7167e671f9f87937212d93c49d5fbe171bbdfa06c846e5ac76151b6c6578706572696d656e74616cf50037", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x52 JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x5B2388BE DUP2 EQ PUSH2 0x57 JUMPI DUP1 PUSH4 0x6C90FEDB EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH2 0x65 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x95 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2D9 JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C SWAP2 SWAP1 PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xAF SWAP1 DUP5 DUP5 PUSH2 0x1C4 JUMP JUMPDEST POP PUSH32 0xD060052768902F3EECB84B8EAE9D3A2608A1A9E60811A33968B46B8D552F266E DUP2 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1B8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x18D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1B8 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x19B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x223 JUMPI DUP3 DUP1 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x250 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x250 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x250 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x235 JUMP JUMPDEST POP PUSH2 0x25C SWAP3 SWAP2 POP PUSH2 0x260 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x27A SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x266 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x289 DUP3 CALLDATALOAD PUSH2 0x3ED JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1F DUP4 ADD DUP5 SGT PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F7 DUP5 DUP5 PUSH2 0x27D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x335 DUP6 DUP3 DUP7 ADD PUSH2 0x290 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x34A DUP2 PUSH2 0x3ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x366 DUP4 DUP6 DUP5 PUSH2 0x417 JUMP JUMPDEST PUSH2 0x36F DUP4 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x384 DUP3 PUSH2 0x3E9 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x398 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x423 JUMP JUMPDEST PUSH2 0x3A1 DUP2 PUSH2 0x453 JUMP JUMPDEST SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3BC DUP3 DUP7 PUSH2 0x341 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3CF DUP2 DUP5 DUP7 PUSH2 0x350 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x289 DUP2 DUP5 PUSH2 0x379 JUMP JUMPDEST MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8 DUP3 PUSH2 0x3FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x426 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0xd8 0xfc DUP12 0xc6 0xec PUSH18 0x67E671F9F87937212D93C49D5FBE171BBDFA MOD 0xc8 0x46 0xe5 0xac PUSH23 0x151B6C6578706572696D656E74616CF500370000000000 ", + "sourceMap": "720:148:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;720:148:14;;;;;;;;;;;;;;;;;;;;;;;;1086:287:15;;;;;;;;;:::i;:::-;;1502:212;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1086:287;1204:10;1174:27;1224:41;;;;;;;;;;:63;;1268:19;;1224:63;:::i;:::-;;1302:64;1325:19;1346;;1302:64;;;;;;;;;;;;;;;;;1086:287;;;:::o;1502:212::-;1666:41;;;:20;:41;;;;;;;;;;;;1659:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:33;;1659:48;;;1666:41;1659:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1502:212;;;:::o;720:148:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;720:148:14;;;-1:-1:-1;720:148:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;57:66;-1:-1;;;57:66;145:336;;;253:4;241:17;;237:27;-1:-1;227:2;;278:1;275;268:12;227:2;-1:-1;298:20;;338:18;327:30;;324:2;;;370:1;367;360:12;324:2;404:4;396:6;392:17;380:29;;454:3;447;439:6;435:16;425:8;421:31;418:40;415:2;;;471:1;468;461:12;415:2;220:261;;;;;;489:241;;593:2;581:9;572:7;568:23;564:32;561:2;;;609:1;606;599:12;561:2;644:1;661:53;706:7;686:9;661:53;;;651:63;555:175;-1:-1;;;;555:175;737:367;;;861:2;849:9;840:7;836:23;832:32;829:2;;;877:1;874;867:12;829:2;912:31;;963:18;952:30;;949:2;;;995:1;992;985:12;949:2;1023:65;1080:7;1071:6;1060:9;1056:22;1023:65;;;1005:83;;;;891:203;823:281;;;;;;1111:120;1194:31;1219:5;1194:31;;;1189:3;1182:44;1176:55;;;1261:273;;1381:6;1376:3;1369:19;1405:4;1400:3;1396:14;1389:21;;1435:43;1471:6;1466:3;1459:5;1435:43;;;1499:29;1521:6;1499:29;;;1490:39;;;;1363:171;-1:-1;;;1363:171;1541:310;;1653:39;1686:5;1653:39;;;1709:6;1704:3;1697:19;1721:63;1777:6;1770:4;1765:3;1761:14;1754:4;1747:5;1743:16;1721:63;;;1816:29;1838:6;1816:29;;;1796:50;;;1809:4;1796:50;;1633:218;-1:-1;;;1633:218;1858:432;2034:2;2019:18;;2048:71;2023:9;2092:6;2048:71;;;2167:9;2161:4;2157:20;2152:2;2141:9;2137:18;2130:48;2192:88;2275:4;2266:6;2258;2192:88;;;2184:96;2005:285;-1:-1;;;;;2005:285;2297:301;2435:2;2449:47;;;2420:18;;2510:78;2420:18;2574:6;2510:78;;2605:92;2680:12;;2664:33;2704:105;;2773:31;2798:5;2773:31;;;2762:42;2756:53;-1:-1;;2756:53;2816:128;2896:42;2885:54;;2868:76;3064:145;3145:6;3140:3;3135;3122:30;-1:-1;3201:1;3183:16;;3176:27;3115:94;3218:268;3283:1;3290:101;3304:6;3301:1;3298:13;3290:101;;;3371:11;;;3365:18;3352:11;;;3345:39;3326:2;3319:10;3290:101;;;3406:6;3403:1;3400:13;3397:2;;;3471:1;3462:6;3457:3;3453:16;3446:27;3397:2;3267:219;;;;;3494:97;3582:2;3562:14;3578:7;3558:28;;3542:49" + } + } + }, + "sources": { + "src/registry/CoordinatorRegistry.sol": { + "id": 14 + }, + "src/registry/MixinCoordinatorRegistryCore.sol": { + "id": 15 + }, + "src/registry/interfaces/ICoordinatorRegistryCore.sol": { + "id": 16 + } + }, + "sourceCodes": { + "src/registry/CoordinatorRegistry.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\nimport \"./MixinCoordinatorRegistryCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract CoordinatorRegistry is\n MixinCoordinatorRegistryCore\n{\n constructor ()\n public\n MixinCoordinatorRegistryCore()\n {}\n}\n", + "src/registry/MixinCoordinatorRegistryCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\nimport \"./interfaces/ICoordinatorRegistryCore.sol\";\n\n\n// solhint-disable no-empty-blocks\ncontract MixinCoordinatorRegistryCore is\n ICoordinatorRegistryCore\n{\n // mapping from `coordinatorOperator` -> `coordinatorEndpoint`\n mapping (address => string) internal coordinatorEndpoints;\n\n /// @dev Called by a Coordinator operator to set the endpoint of their Coordinator.\n /// @param coordinatorEndpoint endpoint of the Coordinator.\n function setCoordinatorEndpoint(string calldata coordinatorEndpoint) external {\n address coordinatorOperator = msg.sender;\n coordinatorEndpoints[coordinatorOperator] = coordinatorEndpoint;\n emit CoordinatorEndpointSet(coordinatorOperator, coordinatorEndpoint);\n }\n\n /// @dev Gets the endpoint for a Coordinator.\n /// @param coordinatorOperator operator of the Coordinator endpoint.\n function getCoordinatorEndpoint(address coordinatorOperator)\n external\n view\n returns (string memory coordinatorEndpoint)\n {\n return coordinatorEndpoints[coordinatorOperator];\n }\n}\n", + "src/registry/interfaces/ICoordinatorRegistryCore.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.5.3;\npragma experimental ABIEncoderV2;\n\n\n// solhint-disable no-empty-blocks\ncontract ICoordinatorRegistryCore\n{\n /// @dev Emitted when a Coordinator endpoint is set.\n event CoordinatorEndpointSet(\n address coordinatorOperator,\n string coordinatorEndpoint\n );\n\n /// @dev Called by a Coordinator operator to set the endpoint of their Coordinator.\n /// @param coordinatorEndpoint endpoint of the Coordinator.\n function setCoordinatorEndpoint(string calldata coordinatorEndpoint) external;\n\n /// @dev Gets the endpoint for a Coordinator.\n /// @param coordinatorOperator operator of the Coordinator endpoint.\n function getCoordinatorEndpoint(address coordinatorOperator)\n external\n view\n returns (string memory coordinatorEndpoint);\n}\n" + }, + "sourceTreeHashHex": "0x73b5157724c2624755d003dcb560ff5732c8ae78d44b1b99ec064e8b909f8f8c", + "compiler": { + "name": "solc", + "version": "0.5.3+commit.10d17f24.Linux.g++", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode.object", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.object", + "evm.deployedBytecode.sourceMap" + ] + } + }, + "evmVersion": "byzantium", + "remappings": [ + "@0x/contracts-utils=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-utils", + "@0x/contracts-exchange-libs=/Users/fabioberger/Documents/projects/0x_project/0x-monorepo-one/contracts/coordinator/node_modules/@0x/contracts-exchange-libs" + ] + } + }, + "networks": {} +} \ No newline at end of file diff --git a/python-packages/contract_demo/setup.py b/python-packages/contract_demo/setup.py deleted file mode 100755 index a7afbd30c8..0000000000 --- a/python-packages/contract_demo/setup.py +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/env python - -"""setuptools module for 0x-contract-demo package.""" - -import distutils.command.build_py -from distutils.command.clean import clean -import subprocess # nosec -from shutil import rmtree -from os import environ, path -from sys import argv - -from setuptools import setup -from setuptools.command.test import test as TestCommand - - -class TestCommandExtension(TestCommand): - """Run pytest tests.""" - - def run_tests(self): - """Invoke pytest.""" - import pytest - - exit(pytest.main()) - - -class LintCommand(distutils.command.build_py.build_py): - """Custom setuptools command class for running linters.""" - - description = "Run linters" - - def run(self): - """Run linter shell commands.""" - lint_commands = [ - # formatter: - "black --line-length 79 --check --diff test setup.py".split(), - # style guide checker (formerly pep8): - "pycodestyle test setup.py".split(), - # docstring style checker: - "pydocstyle test setup.py".split(), - # static type checker: - "mypy test setup.py".split(), - # security issue checker: - "bandit -r ./setup.py".split(), - # general linter: - "pylint test setup.py".split(), - # pylint takes relatively long to run, so it runs last, to enable - # fast failures. - ] - - # tell mypy where to find interface stubs for 3rd party libs - environ["MYPYPATH"] = path.join( - path.dirname(path.realpath(argv[0])), "stubs" - ) - - for lint_command in lint_commands: - print( - "Running lint command `", " ".join(lint_command).strip(), "`" - ) - subprocess.check_call(lint_command) # nosec - - -class CleanCommandExtension(clean): - """Custom command to do custom cleanup.""" - - def run(self): - """Run the regular clean, followed by our custom commands.""" - super().run() - rmtree(".mypy_cache", ignore_errors=True) - rmtree(".tox", ignore_errors=True) - rmtree(".pytest_cache", ignore_errors=True) - - -class GanacheCommand(distutils.command.build_py.build_py): - """Custom command to publish to pypi.org.""" - - description = "Run ganache daemon to support tests." - - def run(self): - """Run ganache.""" - cmd_line = "docker run -d -p 8545:8545 0xorg/ganache-cli:2.2.2".split() - subprocess.call(cmd_line) # nosec - - -class PublishDocsCommand(distutils.command.build_py.build_py): - """Custom command to publish docs to S3.""" - - description = ( - "Publish docs to " - + "http://0x-contract-addresses-py.s3-website-us-east-1.amazonaws.com/" - ) - - def run(self): - """Run npm package `discharge` to build & upload docs.""" - subprocess.check_call("discharge deploy".split()) # nosec - - -setup( - name="0x-contract-demo", - version="1.0.0", - description="Demonstration of calling 0x contracts", - url=( - "https://github.com/0xProject/0x-monorepo/tree/development" - + "/python-packages/contract_demo" - ), - author="F. Eugene Aumson", - author_email="feuGeneA@users.noreply.github.com", - cmdclass={ - "clean": CleanCommandExtension, - "lint": LintCommand, - "test": TestCommandExtension, - "ganache": GanacheCommand, - "publish_docs": PublishDocsCommand, - }, - install_requires=[ - "0x-contract-addresses", - "0x-contract-artifacts", - "0x-order-utils", - "0x-web3", # TEMPORARY! pending resolution of our web3.py PR#1147 - "mypy_extensions", - ], - extras_require={ - "dev": [ - "bandit", - "black", - "coverage", - "coveralls", - "mypy", - "mypy_extensions", - "pycodestyle", - "pydocstyle", - "pylint", - "pytest", - "sphinx", - "tox", - ] - }, - python_requires=">=3.6, <4", - license="Apache 2.0", - zip_safe=False, # required per mypy - command_options={ - "build_sphinx": { - "source_dir": ("setup.py", "test"), - "build_dir": ("setup.py", "build/docs"), - } - }, -) diff --git a/python-packages/contract_demo/stubs/eth_utils/__init__.pyi b/python-packages/contract_demo/stubs/eth_utils/__init__.pyi deleted file mode 100644 index 4a83338cad..0000000000 --- a/python-packages/contract_demo/stubs/eth_utils/__init__.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from typing import Union - -def to_checksum_address(value: Union[str, bytes]) -> str: - ... diff --git a/python-packages/contract_demo/stubs/web3/__init__.pyi b/python-packages/contract_demo/stubs/web3/__init__.pyi deleted file mode 100644 index 21482d598a..0000000000 --- a/python-packages/contract_demo/stubs/web3/__init__.pyi +++ /dev/null @@ -1,2 +0,0 @@ -class Web3: - ... diff --git a/python-packages/contract_demo/test/__init__.py b/python-packages/contract_demo/test/__init__.py deleted file mode 100644 index 600f143bf1..0000000000 --- a/python-packages/contract_demo/test/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Demonstrations of calling 0x smart contracts.""" diff --git a/python-packages/contract_demo/test/test_exchange.py b/python-packages/contract_demo/test/test_exchange.py deleted file mode 100644 index e47fcc78fd..0000000000 --- a/python-packages/contract_demo/test/test_exchange.py +++ /dev/null @@ -1,117 +0,0 @@ -"""Test calling methods on the Exchange contract.""" - -from eth_utils import to_checksum_address -from web3 import Web3 -from web3.utils import datatypes - -from zero_ex.contract_addresses import NETWORK_TO_ADDRESSES, NetworkId -import zero_ex.contract_artifacts -from zero_ex.json_schemas import assert_valid -from zero_ex.order_utils import ( - Order, - OrderInfo, - order_to_jsdict, - generate_order_hash_hex, -) - - -def test_get_order_info(): - """Demonstrate Exchange.getOrderInfo().""" - order: Order = { - "makerAddress": "0x0000000000000000000000000000000000000000", - "takerAddress": "0x0000000000000000000000000000000000000000", - "feeRecipientAddress": "0x0000000000000000000000000000000000000000", - "senderAddress": "0x0000000000000000000000000000000000000000", - "makerAssetAmount": 1000000000000000000, - "takerAssetAmount": 1000000000000000000, - "makerFee": 0, - "takerFee": 0, - "expirationTimeSeconds": 12345, - "salt": 12345, - "makerAssetData": (b"\x00") * 20, - "takerAssetData": (b"\x00") * 20, - } - - web3_instance = Web3(Web3.HTTPProvider("http://127.0.0.1:8545")) - - # false positive from pylint: disable=no-member - contract_address = NETWORK_TO_ADDRESSES[ - NetworkId(int(web3_instance.net.version)) - ].exchange - - assert_valid( - order_to_jsdict(order, exchange_address=contract_address), - "/orderSchema", - ) - - # false positive from pylint: disable=no-member - exchange: datatypes.Contract = web3_instance.eth.contract( - address=to_checksum_address(contract_address), - abi=zero_ex.contract_artifacts.abi_by_name("Exchange"), - ) - - order_info = OrderInfo(*exchange.call().getOrderInfo(order)) - - assert isinstance(order_info.order_status, int) - assert order_info.order_status == 4 - - assert isinstance(order_info.order_hash, bytes) - assert order_info.order_hash.hex() == generate_order_hash_hex( - order, - exchange_address=NETWORK_TO_ADDRESSES[NetworkId.GANACHE].exchange, - ) - - assert isinstance(order_info.order_taker_asset_filled_amount, int) - assert order_info.order_taker_asset_filled_amount == 0 - - -def test_get_orders_info(): - """Demonstrate Exchange.getOrderInfo().""" - order: Order = { - "makerAddress": "0x0000000000000000000000000000000000000000", - "takerAddress": "0x0000000000000000000000000000000000000000", - "feeRecipientAddress": "0x0000000000000000000000000000000000000000", - "senderAddress": "0x0000000000000000000000000000000000000000", - "makerAssetAmount": 1000000000000000000, - "takerAssetAmount": 1000000000000000000, - "makerFee": 0, - "takerFee": 0, - "expirationTimeSeconds": 12345, - "salt": 12345, - "makerAssetData": (b"\x00") * 20, - "takerAssetData": (b"\x00") * 20, - } - - web3_instance = Web3(Web3.HTTPProvider("http://127.0.0.1:8545")) - - # false positive from pylint: disable=no-member - contract_address = NETWORK_TO_ADDRESSES[ - NetworkId(int(web3_instance.net.version)) - ].exchange - - assert_valid( - order_to_jsdict(order, exchange_address=contract_address), - "/orderSchema", - ) - - # false positive from pylint: disable=no-member - exchange: datatypes.Contract = web3_instance.eth.contract( - address=to_checksum_address(contract_address), - abi=zero_ex.contract_artifacts.abi_by_name("Exchange"), - ) - - orders_info = exchange.call().getOrdersInfo([order]) - - for order_info in orders_info: - order_info = OrderInfo(*order_info) - assert isinstance(order_info.order_status, int) - assert order_info.order_status == 4 - - assert isinstance(order_info.order_hash, bytes) - assert order_info.order_hash.hex() == generate_order_hash_hex( - order, - exchange_address=NETWORK_TO_ADDRESSES[NetworkId.GANACHE].exchange, - ) - - assert isinstance(order_info.order_taker_asset_filled_amount, int) - assert order_info.order_taker_asset_filled_amount == 0 diff --git a/python-packages/contract_demo/.discharge.json b/python-packages/contract_wrappers/.discharge.json similarity index 88% rename from python-packages/contract_demo/.discharge.json rename to python-packages/contract_wrappers/.discharge.json index 9d811ae3e6..62c1e576ae 100644 --- a/python-packages/contract_demo/.discharge.json +++ b/python-packages/contract_wrappers/.discharge.json @@ -1,5 +1,5 @@ { - "domain": "0x-contract-demo-py", + "domain": "0x-contract-wrappers-py", "build_command": "python setup.py build_sphinx", "upload_directory": "build/docs/html", "index_key": "index.html", diff --git a/python-packages/contract_wrappers/.pylintrc b/python-packages/contract_wrappers/.pylintrc new file mode 100644 index 0000000000..85011fdcfe --- /dev/null +++ b/python-packages/contract_wrappers/.pylintrc @@ -0,0 +1,4 @@ +[MESSAGES CONTROL] +disable=C0330,line-too-long,fixme,too-few-public-methods,too-many-ancestors,too-many-arguments +# C0330 is "bad hanging indent". we use indents per `black`. +min-similarity-lines=10 diff --git a/python-packages/contract_wrappers/README.md b/python-packages/contract_wrappers/README.md new file mode 100644 index 0000000000..cba99b9939 --- /dev/null +++ b/python-packages/contract_wrappers/README.md @@ -0,0 +1,45 @@ +## 0x-contract-wrappers + +0x contract wrappers for those developing on top of 0x protocol. + +Read the [documentation](http://0x-contract-wrappers-py.s3-website-us-east-1.amazonaws.com/) + +## Installing + +```bash +pip install 0x-contract-wrappers +``` + +## Contributing + +We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository. + +Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started. + +### Install Code and Dependencies + +Ensure that you have installed Python >=3.6 and Docker. Then: + +```bash +pip install -e .[dev] +``` + +### Test + +Tests depend on a running ganache instance and with the 0x contracts deployed in it. For convenience, a docker container is provided that has ganache-cli and a snapshot containing the necessary contracts. A shortcut is provided to run that docker container: `./setup.py ganache`. With that running, the tests can be run with `./setup.py test`. + +### Clean + +`./setup.py clean --all` + +### Lint + +`./setup.py lint` + +### Build Documentation + +`./setup.py build_sphinx` + +### More + +See `./setup.py --help-commands` for more info. diff --git a/python-packages/contract_wrappers/setup.py b/python-packages/contract_wrappers/setup.py new file mode 100755 index 0000000000..55551a7c87 --- /dev/null +++ b/python-packages/contract_wrappers/setup.py @@ -0,0 +1,226 @@ +#!/usr/bin/env python + +"""setuptools module for contract_wrappers package.""" + +import subprocess # nosec +from shutil import rmtree +from os import environ, path +from pathlib import Path +from sys import argv + +from distutils.command.clean import clean +import distutils.command.build_py +from setuptools import find_packages, setup +from setuptools.command.test import test as TestCommand + + +class TestCommandExtension(TestCommand): + """Run pytest tests.""" + + def run_tests(self): + """Invoke pytest.""" + import pytest + + exit(pytest.main(["--doctest-modules"])) + + +class LintCommand(distutils.command.build_py.build_py): + """Custom setuptools command class for running linters.""" + + description = "Run linters" + + def run(self): + """Run linter shell commands.""" + lint_commands = [ + # formatter: + "black --line-length 79 --check --diff src test setup.py".split(), + # style guide checker (formerly pep8): + "pycodestyle src test setup.py".split(), + # docstring style checker: + "pydocstyle src test setup.py".split(), + # static type checker: + "mypy src test setup.py".split(), + # security issue checker: + "bandit -r src ./setup.py".split(), + # general linter: + "pylint src test setup.py".split(), + # pylint takes relatively long to run, so it runs last, to enable + # fast failures. + ] + + # tell mypy where to find interface stubs for 3rd party libs + environ["MYPYPATH"] = path.join( + path.dirname(path.realpath(argv[0])), "stubs" + ) + + # HACK(gene): until eth_utils fixes + # https://github.com/ethereum/eth-utils/issues/140 , we need to simply + # create an empty file `py.typed` in the eth_abi package directory. + import eth_utils + + eth_utils_dir = path.dirname(path.realpath(eth_utils.__file__)) + Path(path.join(eth_utils_dir, "py.typed")).touch() + + for lint_command in lint_commands: + print( + "Running lint command `", " ".join(lint_command).strip(), "`" + ) + subprocess.check_call(lint_command) # nosec + + +class CleanCommandExtension(clean): + """Custom command to do custom cleanup.""" + + def run(self): + """Run the regular clean, followed by our custom commands.""" + super().run() + rmtree("dist", ignore_errors=True) + rmtree(".mypy_cache", ignore_errors=True) + rmtree(".tox", ignore_errors=True) + rmtree(".pytest_cache", ignore_errors=True) + rmtree("src/0x_contract_wrappers.egg-info", ignore_errors=True) + + +class TestPublishCommand(distutils.command.build_py.build_py): + """Custom command to publish to test.pypi.org.""" + + description = ( + "Publish dist/* to test.pypi.org. Run sdist & bdist_wheel first." + ) + + def run(self): + """Run twine to upload to test.pypi.org.""" + subprocess.check_call( # nosec + ( + "twine upload --repository-url https://test.pypi.org/legacy/" + + " --verbose dist/*" + ).split() + ) + + +class PublishCommand(distutils.command.build_py.build_py): + """Custom command to publish to pypi.org.""" + + description = "Publish dist/* to pypi.org. Run sdist & bdist_wheel first." + + def run(self): + """Run twine to upload to pypi.org.""" + subprocess.check_call("twine upload dist/*".split()) # nosec + + +class PublishDocsCommand(distutils.command.build_py.build_py): + """Custom command to publish docs to S3.""" + + description = ( + "Publish docs to " + + "http://0x-contract-wrappers-py.s3-website-us-east-1.amazonaws.com/" + ) + + def run(self): + """Run npm package `discharge` to build & upload docs.""" + subprocess.check_call("discharge deploy".split()) # nosec + + +class GanacheCommand(distutils.command.build_py.build_py): + """Custom command to publish to pypi.org.""" + + description = "Run ganache daemon to support tests." + + def run(self): + """Run ganache.""" + cmd_line = ( + "docker run -d -p 8545:8545 0xorg/ganache-cli:2.2.2" + ).split() + subprocess.call(cmd_line) # nosec + + +with open("README.md", "r") as file_handle: + README_MD = file_handle.read() + + +setup( + name="0x-contract-wrappers", + version="1.0.1", + description="Python wrappers for 0x smart contracts", + long_description=README_MD, + long_description_content_type="text/markdown", + url=( + "https://github.com/0xproject/0x-monorepo/tree/development" + + "/python-packages/contract_wrappers" + ), + author="F. Eugene Aumson", + author_email="feuGeneA@users.noreply.github.com", + cmdclass={ + "clean": CleanCommandExtension, + "lint": LintCommand, + "test": TestCommandExtension, + "test_publish": TestPublishCommand, + "publish": PublishCommand, + "publish_docs": PublishDocsCommand, + "ganache": GanacheCommand, + }, + install_requires=[ + "0x-contract-addresses", + "0x-contract-artifacts", + "0x-json-schemas", + "0x-order-utils", + "0x-web3", + "attrs", + "eth_utils", + "hypothesis>=3.31.2", # HACK! this is web3's dependency! + # above works around https://github.com/ethereum/web3.py/issues/1179 + "mypy_extensions", + ], + extras_require={ + "dev": [ + "bandit", + "black", + "coverage", + "coveralls", + "mypy", + "mypy_extensions", + "pycodestyle", + "pydocstyle", + "pylint", + "pytest", + "sphinx", + "sphinx-autodoc-typehints", + "tox", + "twine", + ] + }, + python_requires=">=3.6, <4", + package_data={"zero_ex.contract_wrappers": ["py.typed"]}, + package_dir={"": "src"}, + license="Apache 2.0", + keywords=( + "ethereum cryptocurrency 0x decentralized blockchain dex exchange" + ), + namespace_packages=["zero_ex"], + packages=find_packages("src"), + classifiers=[ + "Development Status :: 2 - Pre-Alpha", + "Intended Audience :: Developers", + "Intended Audience :: Financial and Insurance Industry", + "License :: OSI Approved :: Apache Software License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Office/Business :: Financial", + "Topic :: Other/Nonlisted Topic", + "Topic :: Security :: Cryptography", + "Topic :: Software Development :: Libraries", + "Topic :: Utilities", + ], + zip_safe=False, # required per mypy + command_options={ + "build_sphinx": { + "source_dir": ("setup.py", "src"), + "build_dir": ("setup.py", "build/docs"), + } + }, +) diff --git a/python-packages/contract_wrappers/src/conf.py b/python-packages/contract_wrappers/src/conf.py new file mode 100644 index 0000000000..38c0695294 --- /dev/null +++ b/python-packages/contract_wrappers/src/conf.py @@ -0,0 +1,56 @@ +"""Configuration file for the Sphinx documentation builder.""" + +# Reference: http://www.sphinx-doc.org/en/master/config + +from typing import List + +import pkg_resources + + +# pylint: disable=invalid-name +# because these variables are not named in upper case, as globals should be. + +project = "0x-contract-wrappers" +# pylint: disable=redefined-builtin +copyright = "2019, ZeroEx, Intl." +author = "Michael Huang" +version = pkg_resources.get_distribution("0x-contract-wrappers").version +release = "" # The full version, including alpha/beta/rc tags + +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.doctest", + "sphinx.ext.intersphinx", + "sphinx.ext.coverage", + "sphinx.ext.viewcode", + "sphinx_autodoc_typehints", +] + +templates_path = ["doc_templates"] + +source_suffix = ".rst" +# eg: source_suffix = [".rst", ".md"] + +master_doc = "index" # The master toctree document. + +language = None + +exclude_patterns: List[str] = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + +html_theme = "alabaster" + +html_static_path = ["doc_static"] +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". + +# Output file base name for HTML help builder. +htmlhelp_basename = "contract_wrapperspydoc" + +# -- Extension configuration: + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {"https://docs.python.org/": None} diff --git a/python-packages/contract_demo/test/doc_static/.gitkeep b/python-packages/contract_wrappers/src/doc_static/.gitkeep similarity index 100% rename from python-packages/contract_demo/test/doc_static/.gitkeep rename to python-packages/contract_wrappers/src/doc_static/.gitkeep diff --git a/python-packages/contract_demo/stubs/__init__.pyi b/python-packages/contract_wrappers/src/doc_templates/.gitkeep similarity index 100% rename from python-packages/contract_demo/stubs/__init__.pyi rename to python-packages/contract_wrappers/src/doc_templates/.gitkeep diff --git a/python-packages/contract_wrappers/src/index.rst b/python-packages/contract_wrappers/src/index.rst new file mode 100644 index 0000000000..38750dbb12 --- /dev/null +++ b/python-packages/contract_wrappers/src/index.rst @@ -0,0 +1,40 @@ +Python zero_ex.contract_wrappers +================================================ + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + +.. automodule:: zero_ex.contract_wrappers + :members: + :inherited-members: + + +zero_ex.contract_wrappers.Exchange +---------------------------------- + +.. autoclass:: zero_ex.contract_wrappers.Exchange + :members: + :inherited-members: + + +zero_ex.contract_wrappers.ERC20Token +------------------------------------- + +.. autoclass:: zero_ex.contract_wrappers.ERC20Token + :members: + :inherited-members: + + +zero_ex.contract_wrappers.TxParams +---------------------------------- + +.. autoclass:: zero_ex.contract_wrappers.TxParams + :members: + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/python-packages/contract_wrappers/src/zero_ex/__init__.py b/python-packages/contract_wrappers/src/zero_ex/__init__.py new file mode 100644 index 0000000000..e90d833db6 --- /dev/null +++ b/python-packages/contract_wrappers/src/zero_ex/__init__.py @@ -0,0 +1,2 @@ +"""0x Python API.""" +__import__("pkg_resources").declare_namespace(__name__) diff --git a/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/__init__.py b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/__init__.py new file mode 100644 index 0000000000..b34f070df4 --- /dev/null +++ b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/__init__.py @@ -0,0 +1,352 @@ +"""Python wrappers for interacting with 0x smart contracts. + +The smart contract wrappers have simplified interfaces, +and perform client-side validation on transactions and throw +helpful error messages. + +Installing +========== +Install the 0x-contract-wrappers with pip: + +``pip install 0x-contract-wrappers`` + +Demo +==== +We will demonstrate some basic steps to help you get started trading on 0x. + +Importing packages +------------------ + +The first step to interact with the 0x smart contract is to import +the following relevant packages: + +>>> import random +>>> from eth_utils import to_checksum_address +>>> from zero_ex.contract_addresses import NETWORK_TO_ADDRESSES, NetworkId +>>> from zero_ex.contract_wrappers import ( +... ERC20Token, Exchange, TxParams +... ) +>>> from zero_ex.order_utils import( +... sign_hash, generate_order_hash_hex) + +Provider +-------- + +We need a web3 provider to allow us to talk to the blockchain. You can +read more about providers +`here `__. In our +case, we are using our local node (ganache), we will connect to our provider +at http://localhost:8545. + +>>> from web3 import HTTPProvider, Web3 +>>> provider = HTTPProvider("http://localhost:8545") +>>> # Create a web3 instance from the provider +>>> web3_instance = Web3(provider) + +Declaring Decimals and Addresses +--------------------------------- + +Since we are dealing with a few contracts, we will specify them now to +reduce the syntax load. Fortunately for us, the 0x python packages comes +with a couple of contract addresses that can be useful to have on hand. +One thing that is important to remember is that there are no decimals in +the Ethereum virtual machine (EVM), which means you always need to keep +track of how many "decimals" each token possesses. Since we will sell some +ZRX for some ETH and since they both have 18 decimals, we can use a shared +constant. Let us first get the addresses of the WETH and ZRX tokens on +the test network Ganache: + +>>> weth_address = NETWORK_TO_ADDRESSES[NetworkId.GANACHE].ether_token +>>> zrx_address = NETWORK_TO_ADDRESSES[NetworkId.GANACHE].zrx_token + +Approvals and WETH Balance +-------------------------- + +To trade on 0x, the participants (maker and taker) require a small +amount of initial set up. They need to approve the 0x smart contracts +to move funds on their behalf. In order to give 0x protocol smart contract +access to funds, we need to set allowances (you can read about allowances +`here `__). +In our demo the taker asset is WETH (or Wrapped ETH, you can read about WETH +`here `__)., +as ETH is not an ERC20 token it must first be converted into WETH to be +used by 0x. Concretely, "converting" ETH to WETH means that we will deposit +some ETH in a smart contract acting as a ERC20 wrapper. In exchange of +depositing ETH, we will get some ERC20 compliant tokens called WETH at a +1:1 conversion rate. For example, depositing 10 ETH will give us back 10 WETH +and we can revert the process at any time. + +In this demo, we will use test accounts on Ganache, which are accessible +through the Web3 instance. The first account will be the maker, and the second +account will be the taker. + +>>> import pprint +>>> # Instantiate an instance of the erc20_wrapper with the provider +>>> erc20_wrapper = ERC20Token(provider) +>>> # Get accounts from the web 3 instance +>>> accounts = web3_instance.eth.accounts +>>> pprint.pprint(accounts) +['0x5409ED021D9299bf6814279A6A1411A7e866A631', + '0x6Ecbe1DB9EF729CBe972C83Fb886247691Fb6beb', + '0xE36Ea790bc9d7AB70C55260C66D52b1eca985f84', + '0xE834EC434DABA538cd1b9Fe1582052B880BD7e63', + '0x78dc5D2D739606d31509C31d654056A45185ECb6', + '0xA8dDa8d7F5310E4A9E24F8eBA77E091Ac264f872', + '0x06cEf8E666768cC40Cc78CF93d9611019dDcB628', + '0x4404ac8bd8F9618D27Ad2f1485AA1B2cFD82482D', + '0x7457d5E02197480Db681D3fdF256c7acA21bDc12', + '0x91c987bf62D25945dB517BDAa840A6c661374402'] + +>>> maker = accounts[0] +>>> taker = accounts[1] + +Now we need to allow the 0x ERC20 Proxy to move WETH on behalf of our +maker and taker accounts. Let's let our maker and taker here approve +the 0x ERC20 Proxy an allowance of 100 WETH. + +>>> # Multiplying by 10 ** 18 to account for decimals +>>> ALLOWANCE = (100) * 10 ** 18 +>>> erc20_proxy = NETWORK_TO_ADDRESSES[NetworkId.GANACHE].erc20_proxy + +>>> # Set allowance to the erc20_proxy from maker account +>>> tx = erc20_wrapper.approve( +... weth_address, +... erc20_proxy, +... ALLOWANCE, +... tx_params=TxParams(from_=maker), +... ) +>>> # Check the allowance given to the 0x ERC20 Proxy +>>> maker_allowance = erc20_wrapper.allowance( +... weth_address, +... maker, +... erc20_proxy, +... ) +>>> (maker_allowance) // 10 ** 18 +100 + +>>> # Set allowance to the erc20_proxy from taker account +>>> tx = erc20_wrapper.approve( +... weth_address, +... erc20_proxy, +... ALLOWANCE, +... tx_params=TxParams(from_=taker), +... ) +>>> # Check the allowance given to the 0x ERC20 Proxy +>>> taker_allowance = erc20_wrapper.allowance( +... weth_address, +... taker, +... erc20_proxy, +... ) +>>> (taker_allowance) // 10 ** 18 +100 + +To give our accounts some initial WETH balance, we'll need +to *wrap* some ETH to get WETH. The WETH token contract +contains two extra methods, not included in the ERC20 token +standard, so we will grab the ABI for the WETH Token contract +and call the deposit method to wrap our ETH. Here is how we do so. + +>>> from zero_ex.contract_artifacts import abi_by_name +>>> # Converting 0.5 ETH to base unit wei +>>> deposit_amount = int(0.5 * 10 ** 18) + +>>> # Let's have our maker wrap 1 ETH for 1 WETH +>>> tx = erc20_wrapper.execute_method( +... address=weth_address, +... abi=abi_by_name("WETH9"), +... method="deposit", +... tx_params=TxParams(from_=maker, value=deposit_amount)) +>>> # Checking our maker's WETH balance +>>> maker_balance = erc20_wrapper.balance_of( +... token_address=weth_address, owner_address=maker) +>>> (maker_balance) / 10 ** 18 # doctest: +SKIP +0.5 + +>>> # Let's have our taker wrap 0.5 ETH as well +>>> tx = erc20_wrapper.execute_method( +... address=weth_address, +... abi=abi_by_name("WETH9"), +... method="deposit", +... tx_params=TxParams(from_=taker, value=deposit_amount)) +>>> # Checking our taker's WETH balance +>>> taker_balance = erc20_wrapper.balance_of( +... token_address=weth_address, owner_address=taker) +>>> (taker_balance) / 10 ** 18 # doctest: +SKIP +0.5 + +Now we can trade our WETH tokens on 0x! + +Signing an order +---------------- + +Here is an example of a JSON order previously generated by our maker +to sell 0.1 WETH. To confirm his intent to sell and recieve the described +token amounts in this order, our maker must first sign the order by +creating a signature with the given order data. + +>>> maker +'0x5409ED021D9299bf6814279A6A1411A7e866A631' + +>>> example_order = { +... 'makerAddress': '0x5409ed021d9299bf6814279a6a1411a7e866a631', +... 'takerAddress': '0x0000000000000000000000000000000000000000', +... 'senderAddress': '0x0000000000000000000000000000000000000000', +... 'exchangeAddress': '0x48bacb9266a570d521063ef5dd96e61686dbe788', +... 'feeRecipientAddress': '0x0000000000000000000000000000000000000000', +... 'makerAssetData': bytes.fromhex( +... 'f47261b0000000000000000000000000' +... 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), +... 'takerAssetData': bytes.fromhex( +... 'f47261b0000000000000000000000000' +... 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), +... 'salt': random.randint(1, 100000000000000000), +... 'makerFee': 0, +... 'takerFee': 0, +... 'makerAssetAmount': 100000000000000000, +... 'takerAssetAmount': 100000000000000000, +... 'expirationTimeSeconds': 999999999999999999999} + +Please checkout our demo `here +`__ +if you would like to see how you can create an 0x order +with our python packages. + +To sign this order, we first need to generate the order hash. + +>>> order_hash = generate_order_hash_hex( +... example_order, example_order["exchangeAddress"]) + +Now our maker can sign this order hash with our web3 provider and +the `sign_hash` function from the order utils package. + +>>> maker_signature = sign_hash( +... provider, to_checksum_address(maker), order_hash) + +Now our maker can either deliver his signature and example order +directly to the taker, or he can choose to broadcast the order +with his signature to a 0x-relayer. + +Filling an order +---------------- + +We finally have a valid order! We can now have our taker try +to fill the example order. The *takerAssetAmount* is simply the +amount of tokens (in our case WETH) the taker wants to fill. +For this demonstration, we will be completely filling the order. +Orders may also be partially filled. + +Now let's fill the example order: + +>>> # Instantiate an instance of the exchange_wrapper with +>>> # the provider +>>> zero_ex_exchange = Exchange(provider) +>>> tx_hash = zero_ex_exchange.fill_order( +... order=example_order, +... taker_amount=example_order["takerAssetAmount"], +... signature=maker_signature, +... tx_params=TxParams(from_=taker)) + +Once the transaction is mined, we can get the details of +our exchange through the exchange wrapper. + +>>> fill_event = zero_ex_exchange.get_fill_event(tx_hash) +>>> taker_filled_amount = fill_event[0].args.takerAssetFilledAmount +>>> taker_filled_amount / 10 ** 18 +0.1 + +Cancelling an order +-------------------- + +Now we will show how to cancel an order if the maker no +long wishes to exchange his WETH tokens. We will use a second example +order to demonstrate. + +>>> example_order_2 = { +... 'makerAddress': '0x5409ed021d9299bf6814279a6a1411a7e866a631', +... 'takerAddress': '0x0000000000000000000000000000000000000000', +... 'exchangeAddress': '0x4f833a24e1f95d70f028921e27040ca56e09ab0b', +... 'senderAddress': '0x0000000000000000000000000000000000000000', +... 'feeRecipientAddress': '0x0000000000000000000000000000000000000000', +... 'makerAssetData': bytes.fromhex( +... 'f47261b0000000000000000000000000' +... 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), +... 'takerAssetData': bytes.fromhex( +... 'f47261b0000000000000000000000000' +... 'e41d2489571d322189246dafa5ebde1f4699f498'), +... 'salt': random.randint(1, 100000000000000000), +... 'makerFee': 0, +... 'takerFee': 0, +... 'makerAssetAmount': 1000000000000000000, +... 'takerAssetAmount': 500000000000000000000, +... 'expirationTimeSeconds': 999999999999999999999} +>>> tx_hash = zero_ex_exchange.cancel_order( +... order=example_order_2, tx_params=TxParams(from_=maker)) + +Once the transaction is mined, we can get the details of +our cancellation through the exchange wrapper. + +>>> cancel_event = zero_ex_exchange.get_cancel_event(tx_hash); +>>> cancelled_order_hash = cancel_event[0].args.orderHash.hex() + +Batching orders +---------------- + +The 0x exchange contract can also process multiple orders at +the same time. Here is an example where the taker fills +two orders in one transaction. + +>>> order_1 = { +... 'makerAddress': '0x5409ed021d9299bf6814279a6a1411a7e866a631', +... 'takerAddress': '0x0000000000000000000000000000000000000000', +... 'senderAddress': '0x0000000000000000000000000000000000000000', +... 'feeRecipientAddress': '0x0000000000000000000000000000000000000000', +... 'makerAssetData': bytes.fromhex( +... 'f47261b0000000000000000000000000' +... 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), +... 'takerAssetData': bytes.fromhex( +... 'f47261b0000000000000000000000000' +... 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), +... 'salt': random.randint(1, 100000000000000000), +... 'makerFee': 0, +... 'takerFee': 0, +... 'makerAssetAmount': 100, +... 'takerAssetAmount': 100, +... 'expirationTimeSeconds': 1000000000000000000} +>>> order_hash_1 = generate_order_hash_hex( +... order_1, zero_ex_exchange.address) +>>> signature_1 = sign_hash( +... provider, to_checksum_address(maker), order_hash_1) +>>> order_2 = { +... 'makerAddress': '0x5409ed021d9299bf6814279a6a1411a7e866a631', +... 'takerAddress': '0x0000000000000000000000000000000000000000', +... 'senderAddress': '0x0000000000000000000000000000000000000000', +... 'feeRecipientAddress': '0x0000000000000000000000000000000000000000', +... 'makerAssetData': bytes.fromhex( +... 'f47261b0000000000000000000000000' +... 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), +... 'takerAssetData': bytes.fromhex( +... 'f47261b0000000000000000000000000' +... 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), +... 'salt': random.randint(1, 100000000000000000), +... 'makerFee': 0, +... 'takerFee': 0, +... 'makerAssetAmount': 200, +... 'takerAssetAmount': 200, +... 'expirationTimeSeconds': 2000000000000000000} +>>> order_hash_2 = generate_order_hash_hex( +... order_2, zero_ex_exchange.address) +>>> signature_2 = sign_hash( +... provider, to_checksum_address(maker), order_hash_2) + +Fill order_1 and order_2 together: + +>>> tx_hash = zero_ex_exchange.batch_fill_orders( +... orders=[order_1, order_2], +... taker_amounts=[1, 2], +... signatures=[signature_1, signature_2], +... tx_params=TxParams(from_=taker)) +""" + +from .tx_params import TxParams +from .erc20_wrapper import ERC20Token +from .exchange_wrapper import Exchange diff --git a/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/_base_contract_wrapper.py b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/_base_contract_wrapper.py new file mode 100644 index 0000000000..b5986d630b --- /dev/null +++ b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/_base_contract_wrapper.py @@ -0,0 +1,129 @@ +"""Base wrapper class for accessing ethereum smart contracts.""" + +from typing import Optional, Union + +from eth_utils import to_checksum_address +from web3 import Web3 +from web3.providers.base import BaseProvider + +from .tx_params import TxParams + + +class BaseContractWrapper: + """Base class for wrapping ethereum smart contracts. + + It provides functionality for instantiating a contract instance, + calling view functions, and calling functions which require + transactions. + + :param provider: instance of :class:`web3.providers.base.BaseProvider` + :param account_address: default None, str of account address + :param private_key: default None, str of private_key + """ + + def __init__( + self, + provider: BaseProvider, + account_address: str = None, + private_key: str = None, + ): + """Create an instance of BaseContractWrapper.""" + self._provider = provider + self._account_address = account_address + self._private_key = private_key + self._web3 = Web3(provider) + self._web3_eth = self._web3.eth # pylint: disable=no-member + + self._can_send_tx = False + if self._web3_eth.defaultAccount or self._web3_eth.accounts: + self._can_send_tx = True + else: + middleware_stack = getattr(self._web3, "middleware_stack") + if middleware_stack.get("sign_and_send_raw_middleware"): + self._can_send_tx = True + elif private_key: + self._private_key = private_key + self._web3_eth.defaultAccount = to_checksum_address( + self._web3_eth.account.privateKeyToAccount( + private_key + ).address + ) + self._can_send_tx = True + + def _contract_instance(self, address: str, abi: dict): + """Get a contract instance. + + :param address: string address of contract + :param abi: dict contract ABI + + :returns: instance of contract + """ + return self._web3_eth.contract( + address=to_checksum_address(address), abi=abi + ) + + def _validate_and_checksum_address(self, address: str): + if not self._web3.isAddress(address): + raise TypeError("Invalid address provided: {}".format(address)) + return to_checksum_address(address) + + def _invoke_function_call(self, func, tx_params, view_only): + if view_only: + return func.call() + if not self._can_send_tx: + raise Exception( + "Cannot send transaction because no local private_key" + " or account found." + ) + if not tx_params: + tx_params = TxParams() + if not tx_params.from_: + tx_params.from_ = ( + self._web3_eth.defaultAccount or self._web3_eth.accounts[0] + ) + tx_params.from_ = self._validate_and_checksum_address(tx_params.from_) + if self._private_key: + res = self._sign_and_send_raw_direct(func, tx_params) + else: + res = func.transact(tx_params.as_dict()) + return res + + def _sign_and_send_raw_direct(self, func, tx_params): + transaction = func.buildTransaction(tx_params.as_dict()) + signed_tx = self._web3_eth.account.signTransaction( + transaction, private_key=self._private_key + ) + return self._web3_eth.sendRawTransaction(signed_tx.rawTransaction) + + def execute_method( + self, + address: str, + abi: dict, + method: str, + args: Optional[Union[list, tuple]] = None, + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> str: + """Execute the method on a contract instance. + + :param address: string of contract address + :param abi: dict of contract ABI + :param method: string name of method to call + :param args: default None, list or tuple of arguments for the method + :param tx_params: default None, :class:`TxParams` transaction params + :param view_only: default False, boolean of whether the transaction + should only be validated. + + :returns: str of transaction hash + """ + contract_instance = self._contract_instance(address=address, abi=abi) + if args is None: + args = [] + if hasattr(contract_instance.functions, method): + func = getattr(contract_instance.functions, method)(*args) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + raise Exception( + "No method {} found on contract {}.".format(address, method) + ) diff --git a/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/erc20_wrapper.py b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/erc20_wrapper.py new file mode 100644 index 0000000000..9763e40390 --- /dev/null +++ b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/erc20_wrapper.py @@ -0,0 +1,224 @@ +"""Wrapper for Ethereum ERC20 Token smart contract.""" + +from typing import Optional, Tuple, Union + +from hexbytes import HexBytes +from web3.datastructures import AttributeDict +from web3.providers.base import BaseProvider + +from zero_ex.contract_artifacts import abi_by_name + +from ._base_contract_wrapper import BaseContractWrapper +from .tx_params import TxParams + + +class ERC20Token(BaseContractWrapper): + """Wrapper class for Ethereum ERC20 smart contract. + + :param provider: instance of :class:`web3.providers.base.BaseProvider` + :param account_address: default None, str of account address + :param private_key: default None, str of private_key + """ + + def __init__( + self, + provider: BaseProvider, + account_address: str = None, + private_key: str = None, + ): + """Get an instance of wrapper for ERC20 smart contract.""" + super(ERC20Token, self).__init__( + provider=provider, + account_address=account_address, + private_key=private_key, + ) + + def _erc20(self, token_address): + """Get an instance of the ERC20 smart contract at a specific address. + + :param token_address: string address of token smart contract + + :returns: ERC20 contract object + """ + return self._contract_instance( + address=token_address, abi=abi_by_name("ERC20Token") + ) + + def transfer( + self, + token_address: str, + to_address: str, + value: int, + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Transfer the balance from owner's account to another account. + + :param token_address: string address of token smart contract + :param to_address: string address of receiver + :param value: integer amount to send in Wei base unit + :param tx_params: default None, dict of transaction options + :param view_only: default False, boolean of whether to transact or + view only + + :returns: transaction hash + """ + token_address = self._validate_and_checksum_address(token_address) + to_address = self._validate_and_checksum_address(to_address) + # safeguard against fractional inputs + value = int(value) + func = self._erc20(token_address).functions.transfer(to_address, value) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def approve( + self, + token_address: str, + spender_address: str, + value: int, + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Approve a `spender_address` to spend up to `value` your account. + + :param token_address: string address of token smart contract + :param spender_address: string address of receiver + :param value: integer amount of allowance in Wei base unit + :param tx_params: default None, dict of transaction options + :param view_only: default False, boolean of whether to transact or + view only + + :returns: transaction hash + """ + token_address = self._validate_and_checksum_address(token_address) + spender_address = self._validate_and_checksum_address(spender_address) + # safeguard against fractional inputs + value = int(value) + func = self._erc20(token_address).functions.approve( + spender_address, value + ) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def transfer_from( + self, + token_address: str, + authorized_address: str, + to_address: str, + value: int, + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Transfer tokens from `authorized_address` to another address. + + Note that the `authorized_address` must have called with `approve` + with your address as the `spender_address`. + + :param token_address: string address of token smart contract + :param authorized_address: string address you have been authorized to + to transfer tokens from + :param to_address: string address of receiver + :param value: integer amount to send in Wei base unit + :param tx_params: default None, dict of transaction options + :param view_only: default False, boolean of whether to transact or + view only + + :returns: transaction hash + """ + token_address = self._validate_and_checksum_address(token_address) + authorized_address = self._validate_and_checksum_address( + authorized_address + ) + to_address = self._validate_and_checksum_address(to_address) + # safeguard against fractional inputs + value = int(value) + func = self._erc20(token_address).functions.transferFrom( + authorized_address, to_address, value + ) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def total_supply(self, token_address: str) -> int: + """Get total supply of a given ERC20 Token. + + :param token_address: string address of token smart contract + + :returns: integer amount of tokens in Wei + """ + token_address = self._validate_and_checksum_address(token_address) + func = self._erc20(token_address).functions.totalSupply() + return self._invoke_function_call( + func=func, tx_params=None, view_only=True + ) + + def balance_of(self, token_address: str, owner_address: str) -> int: + """Get token balance of a given owner address. + + :param token_address: string address of token smart contract + :param owner_address: string address of owner to check balance for + + :returns: integer amount of tokens in Wei the owner has + """ + token_address = self._validate_and_checksum_address(token_address) + owner_address = self._validate_and_checksum_address(owner_address) + func = self._erc20(token_address).functions.balanceOf(owner_address) + return self._invoke_function_call( + func=func, tx_params=None, view_only=True + ) + + def allowance( + self, token_address: str, owner_address: str, spender_address: str + ) -> Union[HexBytes, bytes]: + """Get the amount of tokens approved for a spender. + + :param token_address: string address of token smart contract + :param owner_address: string address of owner of the tokens + :param spender_address: string address of spender to be checked + + :returns: integer amount of tokens in Wei spender is authorized + to spend + """ + token_address = self._validate_and_checksum_address(token_address) + owner_address = self._validate_and_checksum_address(owner_address) + spender_address = self._validate_and_checksum_address(spender_address) + func = self._erc20(token_address).functions.allowance( + owner_address, spender_address + ) + return self._invoke_function_call( + func=func, tx_params=None, view_only=True + ) + + def get_transfer_event( + self, token_address: str, tx_hash: Union[HexBytes, bytes] + ) -> Tuple[AttributeDict]: + """Get the result of a transfer from its transaction hash. + + :param token_address: string address of token smart contract + :param tx_hash: `HexBytes` hash of transfer transaction + """ + tx_receipt = self._web3_eth.getTransactionReceipt(tx_hash) + token_address = self._validate_and_checksum_address(token_address) + return ( + self._erc20(token_address) + .events.Transfer() + .processReceipt(tx_receipt) + ) + + def get_approval_event( + self, token_address: str, tx_hash: Union[HexBytes, bytes] + ) -> Tuple[AttributeDict]: + """Get the result of an approval event from its transaction hash. + + :param token_address: string address of token smart contract + :param tx_hash: `HexBytes` hash of approval transaction + """ + tx_receipt = self._web3_eth.getTransactionReceipt(tx_hash) + token_address = self._validate_and_checksum_address(token_address) + return ( + self._erc20(token_address) + .events.Approval() + .processReceipt(tx_receipt) + ) diff --git a/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/exchange_wrapper.py b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/exchange_wrapper.py new file mode 100644 index 0000000000..fbdf8d63cd --- /dev/null +++ b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/exchange_wrapper.py @@ -0,0 +1,324 @@ +"""Wrapper for 0x Exchange smart contract.""" + +from typing import List, Optional, Tuple, Union +from itertools import repeat + +from eth_utils import remove_0x_prefix +from hexbytes import HexBytes +from web3.providers.base import BaseProvider +from web3.datastructures import AttributeDict + +from zero_ex.contract_addresses import NETWORK_TO_ADDRESSES, NetworkId +from zero_ex.contract_artifacts import abi_by_name +from zero_ex.json_schemas import assert_valid +from zero_ex.order_utils import ( + Order, + generate_order_hash_hex, + is_valid_signature, + order_to_jsdict, +) + +from ._base_contract_wrapper import BaseContractWrapper +from .tx_params import TxParams + + +class CancelDisallowedError(Exception): + """Exception for when Cancel is not allowed.""" + + +class Exchange(BaseContractWrapper): + """Wrapper class for 0x Exchange smart contract. + + :param provider: instance of :class:`web3.providers.base.BaseProvider` + :param account_address: default None, str of account address + :param private_key: default None, str of private_key + """ + + def __init__( + self, + provider: BaseProvider, + account_address: str = None, + private_key: str = None, + ): + """Get an instance of the 0x Exchange smart contract wrapper.""" + super(Exchange, self).__init__( + provider=provider, + account_address=account_address, + private_key=private_key, + ) + self._web3_net = self._web3.net # pylint: disable=no-member + self.address = NETWORK_TO_ADDRESSES[ + NetworkId(int(self._web3_net.version)) + ].exchange + self._exchange = self._contract_instance( + address=self.address, abi=abi_by_name("Exchange") + ) + + def fill_order( + self, + order: Order, + taker_amount: int, + signature: str, + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Fill a signed order with given amount of taker asset. + + This is the most basic way to fill an order. All of the other methods + call fillOrder under the hood with additional logic. This function + will attempt to fill the amount specified by the caller. However, if + the remaining fillable amount is less than the amount specified, the + remaining amount will be filled. Partial fills are allowed when + filling orders. + + See the specification docs for `fillOrder + `_. + + :param order: instance of :class:`zero_ex.order_utils.Order` + :param taker_amount: integer taker amount in Wei (1 Wei is 10e-18 ETH) + :param signature: str or hexstr or bytes of order hash signature + :param tx_params: default None, :class:`TxParams` transaction params + :param view_only: default False, boolean of whether to transact or + view only + + :returns: `HexBytes` transaction hash + """ + assert_valid(order_to_jsdict(order, self.address), "/orderSchema") + is_valid_signature( + self._provider, + generate_order_hash_hex(order, self.address), + signature, + order["makerAddress"], + ) + # safeguard against fractional inputs + taker_fill_amount = int(taker_amount) + normalized_signature = bytes.fromhex(remove_0x_prefix(signature)) + func = self._exchange.functions.fillOrder( + order, taker_fill_amount, normalized_signature + ) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def batch_fill_orders( + self, + orders: List[Order], + taker_amounts: List[int], + signatures: List[str], + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Call `fillOrder` sequentially for orders, amounts and signatures. + + :param orders: list of instances of :class:`zero_ex.order_utils.Order` + :param taker_amounts: list of integer taker amounts in Wei + :param signatures: list of str|hexstr|bytes of order hash signature + :param tx_params: default None, :class:`TxParams` transaction params + :param view_only: default False, boolean of whether to transact or + view only + + :returns: `HexBytes` transaction hash + """ + order_jsdicts = [ + order_to_jsdict(order, self.address) for order in orders + ] + map(assert_valid, order_jsdicts, repeat("/orderSchema")) + # safeguard against fractional inputs + normalized_fill_amounts = [ + int(taker_fill_amount) for taker_fill_amount in taker_amounts + ] + normalized_signatures = [ + bytes.fromhex(remove_0x_prefix(signature)) + for signature in signatures + ] + func = self._exchange.functions.batchFillOrders( + orders, normalized_fill_amounts, normalized_signatures + ) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def fill_or_kill_order( + self, + order: Order, + taker_amount: int, + signature: str, + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Attemp to `fillOrder`, revert if fill is not exact amount. + + :param order: instance of :class:`zero_ex.order_utils.Order` + :param taker_amount: integer taker amount in Wei (1 Wei is 10e-18 ETH) + :param signature: str or hexstr or bytes of order hash signature + :param tx_params: default None, :class:`TxParams` transaction params + :param view_only: default False, boolean of whether to transact or + view only + + :returns: `HexBytes` transaction hash + """ + assert_valid(order_to_jsdict(order, self.address), "/orderSchema") + is_valid_signature( + self._provider, + generate_order_hash_hex(order, self.address), + signature, + order["makerAddress"], + ) + # safeguard against fractional inputs + taker_fill_amount = int(taker_amount) + normalized_signature = bytes.fromhex(remove_0x_prefix(signature)) + func = self._exchange.functions.fillOrKillOrder( + order, taker_fill_amount, normalized_signature + ) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def batch_fill_or_kill_orders( + self, + orders: List[Order], + taker_amounts: List[int], + signatures: List[str], + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Call `fillOrKillOrder` sequentially for orders. + + :param orders: list of instances of :class:`zero_ex.order_utils.Order` + :param taker_amounts: list of integer taker amounts in Wei + :param signatures: list of str|hexstr|bytes of order hash signature + :param tx_params: default None, :class:`TxParams` transaction params + :param view_only: default False, boolean of whether to transact or + view only + + :returns: `HexBytes` transaction hash + """ + order_jsdicts = [ + order_to_jsdict(order, self.address) for order in orders + ] + map(assert_valid, order_jsdicts, repeat("/orderSchema")) + # safeguard against fractional inputs + normalized_fill_amounts = [ + int(taker_fill_amount) for taker_fill_amount in taker_amounts + ] + normalized_signatures = [ + bytes.fromhex(remove_0x_prefix(signature)) + for signature in signatures + ] + func = self._exchange.functions.batchFillOrKillOrders( + orders, normalized_fill_amounts, normalized_signatures + ) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def cancel_order( + self, + order: Order, + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Cancel an order. + + See the specification docs for `cancelOrder + `_. + + :param order: instance of :class:`zero_ex.order_utils.Order` + :param tx_params: default None, :class:`TxParams` transaction params + :param view_only: default False, boolean of whether to transact or + view only + + :returns: `HexBytes` transaction hash + """ + assert_valid(order_to_jsdict(order, self.address), "/orderSchema") + maker_address = self._validate_and_checksum_address( + order["makerAddress"] + ) + + if tx_params and tx_params.from_: + self._raise_if_maker_not_canceller( + maker_address, + self._validate_and_checksum_address(tx_params.from_), + ) + elif self._web3_eth.defaultAccount: + self._raise_if_maker_not_canceller( + maker_address, self._web3_eth.defaultAccount + ) + func = self._exchange.functions.cancelOrder(order) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def batch_cancel_orders( + self, + orders: List[Order], + tx_params: Optional[TxParams] = None, + view_only: bool = False, + ) -> Union[HexBytes, bytes]: + """Call `cancelOrder` sequentially for provided orders. + + :param orders: list of instance of :class:`zero_ex.order_utils.Order` + :param tx_params: default None, :class:`TxParams` transaction params + :param view_only: default False, boolean of whether to transact or + view only + + :returns: `HexBytes` transaction hash + """ + order_jsdicts = [ + order_to_jsdict(order, self.address) for order in orders + ] + map(assert_valid, order_jsdicts, repeat("/orderSchema")) + maker_addresses = [ + self._validate_and_checksum_address(order["makerAddress"]) + for order in orders + ] + if tx_params and tx_params.from_: + map( + self._raise_if_maker_not_canceller, + maker_addresses, + repeat(tx_params.from_), + ) + elif self._web3_eth.defaultAccount: + map( + self._raise_if_maker_not_canceller, + maker_addresses, + repeat(self._web3_eth.defaultAccount), + ) + func = self._exchange.functions.batchCancelOrders(orders) + return self._invoke_function_call( + func=func, tx_params=tx_params, view_only=view_only + ) + + def get_fill_event( + self, tx_hash: Union[HexBytes, bytes] + ) -> Tuple[AttributeDict]: + """Get fill event for a fill transaction. + + :param tx_hash: `HexBytes` hash of fill transaction + + :returns: tuple of `FillResults`. + """ + tx_receipt = self._web3_eth.getTransactionReceipt(tx_hash) + return self._exchange.events.Fill().processReceipt(tx_receipt) + + def get_cancel_event( + self, tx_hash: Union[HexBytes, bytes] + ) -> Tuple[AttributeDict]: + """Get cancel event for cancel transaction. + + :param tx_hash: `HexBytes` hash of cancel transaction + """ + tx_receipt = self._web3_eth.getTransactionReceipt(tx_hash) + return self._exchange.events.Cancel().processReceipt(tx_receipt) + + @staticmethod + def _raise_if_maker_not_canceller(maker_address, canceller_address): + """Raise exception is maker is not same as canceller.""" + if maker_address != canceller_address: + raise CancelDisallowedError( + "Order with makerAddress {} can not be cancelled by {}".format( + maker_address, canceller_address + ) + ) diff --git a/python-packages/contract_demo/stubs/command/__init__.pyi b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/py.typed similarity index 100% rename from python-packages/contract_demo/stubs/command/__init__.pyi rename to python-packages/contract_wrappers/src/zero_ex/contract_wrappers/py.typed diff --git a/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/tx_params.py b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/tx_params.py new file mode 100644 index 0000000000..4b864898ec --- /dev/null +++ b/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/tx_params.py @@ -0,0 +1,39 @@ +"""Transaction parameters for use with contract wrappers.""" + +from typing import Optional + +import attr + + +@attr.s(kw_only=True) +class TxParams: + """Transaction parameters for use with contract wrappers. + + :param from_: default None, string of account address to initiate tx from + :param value: default None, integer of amount of ETH in Wei for transfer + :param gas: default None, integer maximum amount of ETH in Wei for gas + :param grasPrice: default None, integer price of unit of gas + :param nonce: default None, integer nonce for account + """ + + from_: Optional[str] = attr.ib(default=None) + value: Optional[int] = attr.ib( + default=None, converter=attr.converters.optional(int) + ) + gas: Optional[int] = attr.ib( + default=None, converter=attr.converters.optional(int) + ) + gasPrice: Optional[int] = attr.ib( + default=None, converter=attr.converters.optional(int) + ) + nonce: Optional[int] = attr.ib( + default=None, converter=attr.converters.optional(int) + ) + + def as_dict(self): + """Get transaction params as dict appropriate for web3.""" + res = {k: v for k, v in attr.asdict(self).items() if v is not None} + if "from_" in res: + res["from"] = res["from_"] + del res["from_"] + return res diff --git a/python-packages/contract_demo/stubs/distutils/__init__.pyi b/python-packages/contract_wrappers/stubs/distutils/__init__.pyi similarity index 100% rename from python-packages/contract_demo/stubs/distutils/__init__.pyi rename to python-packages/contract_wrappers/stubs/distutils/__init__.pyi diff --git a/python-packages/contract_demo/stubs/distutils/command/__init__.pyi b/python-packages/contract_wrappers/stubs/distutils/command/__init__.pyi similarity index 100% rename from python-packages/contract_demo/stubs/distutils/command/__init__.pyi rename to python-packages/contract_wrappers/stubs/distutils/command/__init__.pyi diff --git a/python-packages/contract_demo/stubs/command/clean.pyi b/python-packages/contract_wrappers/stubs/distutils/command/clean.pyi similarity index 100% rename from python-packages/contract_demo/stubs/command/clean.pyi rename to python-packages/contract_wrappers/stubs/distutils/command/clean.pyi diff --git a/python-packages/contract_wrappers/stubs/eth_account/__init__.pyi b/python-packages/contract_wrappers/stubs/eth_account/__init__.pyi new file mode 100644 index 0000000000..5caed9e96f --- /dev/null +++ b/python-packages/contract_wrappers/stubs/eth_account/__init__.pyi @@ -0,0 +1 @@ +class Account: ... diff --git a/python-packages/contract_wrappers/stubs/eth_account/local.pyi b/python-packages/contract_wrappers/stubs/eth_account/local.pyi new file mode 100644 index 0000000000..d0b3515699 --- /dev/null +++ b/python-packages/contract_wrappers/stubs/eth_account/local.pyi @@ -0,0 +1,3 @@ +class LocalAccount: + address: str + ... diff --git a/python-packages/contract_wrappers/stubs/eth_utils/__init__.pyi b/python-packages/contract_wrappers/stubs/eth_utils/__init__.pyi new file mode 100644 index 0000000000..90e1277eb0 --- /dev/null +++ b/python-packages/contract_wrappers/stubs/eth_utils/__init__.pyi @@ -0,0 +1,3 @@ +def to_checksum_address(address: str) -> str: ... + +def remove_0x_prefix(hex_string: str) -> str: ... \ No newline at end of file diff --git a/python-packages/contract_wrappers/stubs/hexbytes/__init__.pyi b/python-packages/contract_wrappers/stubs/hexbytes/__init__.pyi new file mode 100644 index 0000000000..bc88efe52a --- /dev/null +++ b/python-packages/contract_wrappers/stubs/hexbytes/__init__.pyi @@ -0,0 +1 @@ +class HexBytes: ... diff --git a/python-packages/contract_wrappers/stubs/pytest/__init__.pyi b/python-packages/contract_wrappers/stubs/pytest/__init__.pyi new file mode 100644 index 0000000000..d9209ab5b9 --- /dev/null +++ b/python-packages/contract_wrappers/stubs/pytest/__init__.pyi @@ -0,0 +1,9 @@ +from typing import Callable + +def fixture(scope: str) -> Callable: + ... + +class ExceptionInfo: + ... + +def raises(exception: Exception) -> ExceptionInfo: ... \ No newline at end of file diff --git a/python-packages/contract_demo/stubs/setuptools/__init__.pyi b/python-packages/contract_wrappers/stubs/setuptools/__init__.pyi similarity index 100% rename from python-packages/contract_demo/stubs/setuptools/__init__.pyi rename to python-packages/contract_wrappers/stubs/setuptools/__init__.pyi diff --git a/python-packages/contract_demo/stubs/pytest/__init__.pyi b/python-packages/contract_wrappers/stubs/setuptools/command/__init__.pyi similarity index 100% rename from python-packages/contract_demo/stubs/pytest/__init__.pyi rename to python-packages/contract_wrappers/stubs/setuptools/command/__init__.pyi diff --git a/python-packages/contract_demo/stubs/setuptools/command/test.pyi b/python-packages/contract_wrappers/stubs/setuptools/command/test.pyi similarity index 100% rename from python-packages/contract_demo/stubs/setuptools/command/test.pyi rename to python-packages/contract_wrappers/stubs/setuptools/command/test.pyi diff --git a/python-packages/contract_demo/stubs/setuptools/command/__init__.pyi b/python-packages/contract_wrappers/stubs/sha3/__init__.pyi similarity index 100% rename from python-packages/contract_demo/stubs/setuptools/command/__init__.pyi rename to python-packages/contract_wrappers/stubs/sha3/__init__.pyi diff --git a/python-packages/contract_wrappers/stubs/web3/__init__.pyi b/python-packages/contract_wrappers/stubs/web3/__init__.pyi new file mode 100644 index 0000000000..82e638b479 --- /dev/null +++ b/python-packages/contract_wrappers/stubs/web3/__init__.pyi @@ -0,0 +1,56 @@ +from typing import Any, Callable, Dict, List, Optional, Union + +from hexbytes import HexBytes +from eth_account.local import LocalAccount +from web3 import datastructures +from web3.utils import datatypes +from web3.providers.base import BaseProvider + + +class Web3: + class HTTPProvider(BaseProvider): + ... + + def __init__(self, provider: BaseProvider) -> None: ... + + @staticmethod + def sha3( + primitive: Optional[Union[bytes, int, None]] = None, + text: Optional[str] = None, + hexstr: Optional[str] = None + ) -> bytes: ... + + @staticmethod + def isAddress(address: str) -> bool: ... + + class middleware_stack: + @staticmethod + def get(key: str) -> Callable: ... + ... + + class net: + version: str + ... + + + class eth: + defaultAccount: str + accounts: List[str] + ... + + class account: + @staticmethod + def privateKeyToAccount(private_key: str) -> LocalAccount: ... + ... + + @staticmethod + def getTransactionReceipt(tx_hash: Union[HexBytes, bytes]) -> Any: ... + + @staticmethod + def contract(address: str, abi: Dict) -> datatypes.Contract: ... + ... + + @staticmethod + def isAddress(address: str) -> bool: ... + ... + ... diff --git a/python-packages/contract_wrappers/stubs/web3/datastructures.pyi b/python-packages/contract_wrappers/stubs/web3/datastructures.pyi new file mode 100644 index 0000000000..fac8f29268 --- /dev/null +++ b/python-packages/contract_wrappers/stubs/web3/datastructures.pyi @@ -0,0 +1,5 @@ +class NamedElementOnion: + ... + +class AttributeDict: + ... \ No newline at end of file diff --git a/python-packages/contract_wrappers/stubs/web3/exceptions.pyi b/python-packages/contract_wrappers/stubs/web3/exceptions.pyi new file mode 100644 index 0000000000..83abf973d1 --- /dev/null +++ b/python-packages/contract_wrappers/stubs/web3/exceptions.pyi @@ -0,0 +1,2 @@ +class BadFunctionCallOutput(Exception): + ... diff --git a/python-packages/contract_demo/stubs/web3/utils/__init__.pyi b/python-packages/contract_wrappers/stubs/web3/providers/__init__.pyi similarity index 100% rename from python-packages/contract_demo/stubs/web3/utils/__init__.pyi rename to python-packages/contract_wrappers/stubs/web3/providers/__init__.pyi diff --git a/python-packages/contract_wrappers/stubs/web3/providers/base.pyi b/python-packages/contract_wrappers/stubs/web3/providers/base.pyi new file mode 100644 index 0000000000..82ca9e3da1 --- /dev/null +++ b/python-packages/contract_wrappers/stubs/web3/providers/base.pyi @@ -0,0 +1,2 @@ +class BaseProvider: + ... diff --git a/python-packages/contract_wrappers/stubs/web3/utils/__init__.pyi b/python-packages/contract_wrappers/stubs/web3/utils/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/contract_demo/stubs/web3/utils/datatypes.pyi b/python-packages/contract_wrappers/stubs/web3/utils/datatypes.pyi similarity index 100% rename from python-packages/contract_demo/stubs/web3/utils/datatypes.pyi rename to python-packages/contract_wrappers/stubs/web3/utils/datatypes.pyi diff --git a/python-packages/contract_wrappers/test/__init__.py b/python-packages/contract_wrappers/test/__init__.py new file mode 100644 index 0000000000..30ad154b25 --- /dev/null +++ b/python-packages/contract_wrappers/test/__init__.py @@ -0,0 +1 @@ +"""Tests of zero_ex.contract_wrappers.""" diff --git a/python-packages/contract_wrappers/test/conftest.py b/python-packages/contract_wrappers/test/conftest.py new file mode 100644 index 0000000000..789ca639ed --- /dev/null +++ b/python-packages/contract_wrappers/test/conftest.py @@ -0,0 +1,79 @@ +"""Fixtures for pytest.""" + +import pytest +from eth_utils import remove_0x_prefix, to_checksum_address +from web3 import Web3 + +from zero_ex.order_utils import asset_data_utils +from zero_ex.contract_addresses import NETWORK_TO_ADDRESSES, NetworkId +from zero_ex.contract_artifacts import abi_by_name + + +@pytest.fixture(scope="module") +def ganache_provider(): + """Get a ganache web3 provider.""" + return Web3.HTTPProvider(endpoint_uri="http://127.0.0.1:8545") + + +@pytest.fixture(scope="module") +def web3_instance(ganache_provider): # pylint: disable=redefined-outer-name + """Get a web3 instance.""" + return Web3(ganache_provider) + + +@pytest.fixture(scope="module") +def web3_eth(web3_instance): # pylint: disable=redefined-outer-name + """Get web3 instance's eth member.""" + return web3_instance.eth # pylint: disable=no-member + + +@pytest.fixture(scope="module") +def accounts(web3_eth): # pylint: disable=redefined-outer-name + """Get the accounts associated with the test web3_eth instance.""" + return web3_eth.accounts + + +@pytest.fixture(scope="module") +def erc20_proxy_address(): + """Get the 0x ERC20 Proxy address.""" + return NETWORK_TO_ADDRESSES[NetworkId.GANACHE].erc20_proxy + + +@pytest.fixture(scope="module") +def weth_address(): + """Get address of Wrapped Ether (WETH) token for the Ganache network.""" + return NETWORK_TO_ADDRESSES[NetworkId.GANACHE].ether_token + + +@pytest.fixture(scope="module") +def weth_asset_data(weth_address): # pylint: disable=redefined-outer-name + """Get 0x asset data for Wrapped Ether (WETH) token.""" + return bytes.fromhex( + remove_0x_prefix( + asset_data_utils.encode_erc20_asset_data(weth_address) + ) + ) + + +@pytest.fixture(scope="module") +def weth_instance( + web3_eth, weth_address +): # pylint: disable=redefined-outer-name + """Get an instance of the WrapperEther contract.""" + return web3_eth.contract( + address=to_checksum_address(weth_address), abi=abi_by_name("WETH9") + ) + + +@pytest.fixture(scope="module") +def zrx_address(): + """Get address of ZRX token for Ganache network.""" + return NETWORK_TO_ADDRESSES[NetworkId.GANACHE].zrx_token + + +@pytest.fixture(scope="module") +def zrx_asset_data(zrx_address): # pylint: disable=redefined-outer-name + """Get 0x asset data for ZRX token.""" + return bytes.fromhex( + remove_0x_prefix(asset_data_utils.encode_erc20_asset_data(zrx_address)) + ) diff --git a/python-packages/contract_wrappers/test/test_base_contract_wrapper.py b/python-packages/contract_wrappers/test/test_base_contract_wrapper.py new file mode 100644 index 0000000000..8b5ca34dc5 --- /dev/null +++ b/python-packages/contract_wrappers/test/test_base_contract_wrapper.py @@ -0,0 +1,47 @@ +"""Tests for :class:`BaseContractWrapper`.""" + +import pytest +from eth_utils import to_checksum_address + +from zero_ex.contract_artifacts import abi_by_name +from zero_ex.contract_wrappers._base_contract_wrapper import ( + BaseContractWrapper, +) + + +@pytest.fixture(scope="module") +def contract_wrapper(ganache_provider): + """Get a BaseContractWrapper instance for testing.""" + return BaseContractWrapper(provider=ganache_provider) + + +def test_contract_wrapper__execute_method( + accounts, + contract_wrapper, # pylint: disable=redefined-outer-name + erc20_proxy_address, + weth_address, # pylint: disable=redefined-outer-name +): + """Test :function:`BaseContractWrapper.execute` method.""" + acc1_allowance = contract_wrapper.execute_method( + address=weth_address, + abi=abi_by_name("WETH9"), + method="allowance", + view_only=True, + args=( + to_checksum_address(accounts[3]), + to_checksum_address(erc20_proxy_address), + ), + ) + assert acc1_allowance == 0 + + with pytest.raises(Exception): + contract_wrapper.execute_method( + address=weth_address, + abi=abi_by_name("WETH9"), + method="send", + view_only=True, + args=[ + to_checksum_address(accounts[3]), + to_checksum_address(erc20_proxy_address), + ], + ) diff --git a/python-packages/contract_wrappers/test/test_erc20_wrapper.py b/python-packages/contract_wrappers/test/test_erc20_wrapper.py new file mode 100644 index 0000000000..ca3b1fbfc1 --- /dev/null +++ b/python-packages/contract_wrappers/test/test_erc20_wrapper.py @@ -0,0 +1,80 @@ +"""Tests for ERC20Token wrapper.""" + +from decimal import Decimal + +import pytest + +from zero_ex.contract_wrappers import ERC20Token, TxParams + + +MAX_ALLOWANCE = int("{:.0f}".format(Decimal(2) ** 256 - 1)) + + +@pytest.fixture(scope="module") +def erc20_wrapper(ganache_provider): + """Get an instance of ERC20Token wrapper class for testing.""" + return ERC20Token(ganache_provider) + + +def test_erc20_wrapper__balance_of( + accounts, + erc20_wrapper, # pylint: disable=redefined-outer-name + weth_address, + weth_instance, # pylint: disable=redefined-outer-name +): + """Test getting baance of an account for an ERC20 token.""" + acc1_original_weth_balance = erc20_wrapper.balance_of( + weth_address, accounts[0] + ) + acc2_original_weth_balance = erc20_wrapper.balance_of( + weth_address, accounts[1] + ) + + expected_difference = 1 * 10 ** 18 + + weth_instance.functions.deposit().transact( + {"from": accounts[0], "value": expected_difference} + ) + weth_instance.functions.deposit().transact( + {"from": accounts[1], "value": expected_difference} + ) + acc1_weth_balance = erc20_wrapper.balance_of(weth_address, accounts[0]) + acc2_weth_balance = erc20_wrapper.balance_of(weth_address, accounts[1]) + + assert ( + acc1_weth_balance - acc1_original_weth_balance == expected_difference + ) + assert ( + acc2_weth_balance - acc2_original_weth_balance == expected_difference + ) + + +def test_erc20_wrapper__approve( + accounts, + erc20_proxy_address, + erc20_wrapper, # pylint: disable=redefined-outer-name + weth_address, # pylint: disable=redefined-outer-name +): + """Test approving one account to spend balance from another account.""" + erc20_wrapper.approve( + weth_address, + erc20_proxy_address, + MAX_ALLOWANCE, + tx_params=TxParams(from_=accounts[0]), + ) + erc20_wrapper.approve( + weth_address, + erc20_proxy_address, + MAX_ALLOWANCE, + tx_params=TxParams(from_=accounts[1]), + ) + + acc_1_weth_allowance = erc20_wrapper.allowance( + weth_address, accounts[0], erc20_proxy_address + ) + acc_2_weth_allowance = erc20_wrapper.allowance( + weth_address, accounts[1], erc20_proxy_address + ) + + assert acc_1_weth_allowance == MAX_ALLOWANCE + assert acc_2_weth_allowance == MAX_ALLOWANCE diff --git a/python-packages/contract_wrappers/test/test_exchange_wrapper.py b/python-packages/contract_wrappers/test/test_exchange_wrapper.py new file mode 100644 index 0000000000..72f638e631 --- /dev/null +++ b/python-packages/contract_wrappers/test/test_exchange_wrapper.py @@ -0,0 +1,124 @@ +"""Test 0x Exchnage wrapper.""" + +import random + +import pytest +from eth_utils import remove_0x_prefix + +from zero_ex.contract_wrappers import Exchange, TxParams +from zero_ex.json_schemas import assert_valid +from zero_ex.order_utils import generate_order_hash_hex, Order, sign_hash + + +@pytest.fixture(scope="module") +def exchange_wrapper(ganache_provider): + """Get an Exchange wrapper instance.""" + return Exchange(provider=ganache_provider) + + +def create_test_order( + maker_address, + maker_asset_amount, + maker_asset_data, + taker_asset_amount, + taker_asset_data, +): + """Create a test order.""" + order: Order = { + "makerAddress": maker_address.lower(), + "takerAddress": "0x0000000000000000000000000000000000000000", + "feeRecipientAddress": "0x0000000000000000000000000000000000000000", + "senderAddress": "0x0000000000000000000000000000000000000000", + "makerAssetAmount": maker_asset_amount, + "takerAssetAmount": taker_asset_amount, + "makerFee": 0, + "takerFee": 0, + "expirationTimeSeconds": 100000000000000, + "salt": random.randint(1, 1000000000), + "makerAssetData": maker_asset_data, + "takerAssetData": taker_asset_data, + } + return order + + +def assert_fill_log(fill_log, maker, taker, order, order_hash): + """assert that the fill log matches the order details""" + assert fill_log.makerAddress == maker + assert fill_log.takerAddress == taker + assert fill_log.feeRecipientAddress == order["feeRecipientAddress"] + assert fill_log.senderAddress == taker + assert fill_log.orderHash == bytes.fromhex(remove_0x_prefix(order_hash)) + assert fill_log.makerAssetFilledAmount == order["makerAssetAmount"] + assert fill_log.takerAssetFilledAmount == order["takerAssetAmount"] + assert fill_log.makerFeePaid == order["makerFee"] + assert fill_log.takerFeePaid == order["takerFee"] + assert fill_log.makerAssetData == order["makerAssetData"] + assert fill_log.takerAssetData == order["takerAssetData"] + + +def test_exchange_wrapper__fill_order( + accounts, + exchange_wrapper, # pylint: disable=redefined-outer-name + ganache_provider, + weth_asset_data, +): + """Test filling an order.""" + taker = accounts[0] + maker = accounts[1] + exchange_address = exchange_wrapper.address + order = create_test_order(maker, 1, weth_asset_data, 1, weth_asset_data) + order_hash = generate_order_hash_hex( + order=order, exchange_address=exchange_address + ) + order_signature = sign_hash(ganache_provider, maker, order_hash) + + tx_hash = exchange_wrapper.fill_order( + order=order, + taker_amount=order["takerAssetAmount"], + signature=order_signature, + tx_params=TxParams(from_=taker), + ) + assert_valid(tx_hash.hex(), "/hexSchema") + + fill_event = exchange_wrapper.get_fill_event(tx_hash) + assert_fill_log(fill_event[0].args, maker, taker, order, order_hash) + + +# pylint: disable=too-many-locals +def test_exchange_wrapper__batch_fill_orders( + accounts, + exchange_wrapper, # pylint: disable=redefined-outer-name + ganache_provider, + weth_asset_data, +): + """Test filling a batch of orders.""" + taker = accounts[0] + maker = accounts[1] + exchange_address = exchange_wrapper.address + orders = [] + order_1 = create_test_order(maker, 1, weth_asset_data, 1, weth_asset_data) + order_2 = create_test_order(maker, 1, weth_asset_data, 1, weth_asset_data) + orders.append(order_1) + orders.append(order_2) + order_hashes = [ + generate_order_hash_hex(order=order, exchange_address=exchange_address) + for order in orders + ] + order_signatures = [ + sign_hash(ganache_provider, maker, order_hash) + for order_hash in order_hashes + ] + taker_amounts = [order["takerAssetAmount"] for order in orders] + tx_hash = exchange_wrapper.batch_fill_orders( + orders=orders, + taker_amounts=taker_amounts, + signatures=order_signatures, + tx_params=TxParams(from_=taker), + ) + assert_valid(tx_hash.hex(), "/hexSchema") + + fill_events = exchange_wrapper.get_fill_event(tx_hash) + for index, order in enumerate(orders): + assert_fill_log( + fill_events[index].args, maker, taker, order, order_hashes[index] + ) diff --git a/python-packages/contract_wrappers/tox.ini b/python-packages/contract_wrappers/tox.ini new file mode 100644 index 0000000000..cd847a5bb8 --- /dev/null +++ b/python-packages/contract_wrappers/tox.ini @@ -0,0 +1,25 @@ +# tox (https://tox.readthedocs.io/) is a tool for running tests +# in multiple virtualenvs. This configuration file will run the +# test suite on all supported python versions. To use it, "pip install tox" +# and then run "tox" from this directory. + +[tox] +envlist = py37 + +[testenv] +commands = + pip install -e .[dev] + python setup.py test + +[testenv:run_tests_against_test_deployment] +commands = + # install dependencies from real PyPI + pip install 0x-contract-addresses 0x-contract-artifacts 0x-json-schemas 0x-order-utils 0x-web3 attrs eth_utils hypothesis>=3.31.2 mypy_extensions pytest + # install package-under-test from test PyPI + pip install --index-url https://test.pypi.org/legacy/ 0x-contract-wrappers + pytest test + +[testenv:run_tests_against_deployment] +commands = + pip install 0x-contract-wrappers + pytest test diff --git a/python-packages/json_schemas/src/zero_ex/json_schemas/__init__.py b/python-packages/json_schemas/src/zero_ex/json_schemas/__init__.py index 10c564b99c..de7507016b 100644 --- a/python-packages/json_schemas/src/zero_ex/json_schemas/__init__.py +++ b/python-packages/json_schemas/src/zero_ex/json_schemas/__init__.py @@ -1,4 +1,31 @@ -"""JSON schemas and associated utilities.""" +"""JSON schemas and associated utilities. + +Validating a 0x Order +--------------------- + +Here is an example on how to validate a 0x order. + +>>> from zero_ex.json_schemas import assert_valid +>>> example_order = { +... 'makerAddress': '0x5409ed021d9299bf6814279a6a1411a7e866a631', +... 'takerAddress': '0x0000000000000000000000000000000000000000', +... 'senderAddress': '0x0000000000000000000000000000000000000000', +... 'exchangeAddress': '0x4f833a24e1f95d70f028921e27040ca56e09ab0b', +... 'feeRecipientAddress': +... '0x0000000000000000000000000000000000000000', +... 'makerAssetData': '0xf47261b0000000000000000000000000' +... 'c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', +... 'takerAssetData': '0xf47261b0000000000000000000000000' +... 'e41d2489571d322189246dafa5ebde1f4699f498', +... 'salt': 123456789, +... 'makerFee': 0, +... 'takerFee': 0, +... 'makerAssetAmount': 1000000000000000000, +... 'takerAssetAmount': 500000000000000000000, +... 'expirationTimeSeconds': 1553553429 +... } +>>> assert_valid(example_order, "/orderSchema") +""" from os import path import json diff --git a/python-packages/middlewares/.pylintrc b/python-packages/middlewares/.pylintrc new file mode 100644 index 0000000000..937bc6313b --- /dev/null +++ b/python-packages/middlewares/.pylintrc @@ -0,0 +1,3 @@ +[MESSAGES CONTROL] +disable=C0330,line-too-long,fixme,too-few-public-methods,too-many-ancestors +# C0330 is "bad hanging indent". we use indents per `black`. diff --git a/python-packages/middlewares/CHANGELOG.json b/python-packages/middlewares/CHANGELOG.json new file mode 100644 index 0000000000..497be22cfb --- /dev/null +++ b/python-packages/middlewares/CHANGELOG.json @@ -0,0 +1,11 @@ +[ + { + "version": "1.0.0", + "changes": [ + { + "note": "Initial publish", + "pr": 1713 + } + ] + } +] diff --git a/python-packages/contract_demo/README.md b/python-packages/middlewares/README.md similarity index 52% rename from python-packages/contract_demo/README.md rename to python-packages/middlewares/README.md index 3a0f964e30..a219fd1f5d 100644 --- a/python-packages/contract_demo/README.md +++ b/python-packages/middlewares/README.md @@ -1,8 +1,14 @@ -## 0x-contract-demo +## 0x-middlewares -A demonstration of calling 0x smart contracts from Python. +Web3 middlewares for 0x applications. -Read the [documentation](http://0x-contract-demo-py.s3-website-us-east-1.amazonaws.com/) +Read the [documentation](http://0x-middlewares-py.s3-website-us-east-1.amazonaws.com/) + +## Installing + +```bash +pip install 0x-middlewares +``` ## Contributing @@ -20,7 +26,8 @@ pip install -e .[dev] ### Test -Tests depend on a running ganache instance with the 0x contracts deployed in it. For convenience, a docker container is provided that has ganache-cli and a snapshot containing the necessary contracts. A shortcut is provided to run that docker container: `./setup.py ganache`. With that running, the tests can be run with `./setup.py test`. +Tests depend on running a local ethereum JSON-RPC server. For convenience, a docker container is provided that has ganache-cli. +A shortcut is provided to run that docker container: `./setup.py ganache`. With that running, the tests can be run with `./setup.py test`. ### Clean diff --git a/python-packages/middlewares/setup.py b/python-packages/middlewares/setup.py new file mode 100755 index 0000000000..fc3687dfd5 --- /dev/null +++ b/python-packages/middlewares/setup.py @@ -0,0 +1,214 @@ +#!/usr/bin/env python + +"""setuptools module for middlewares package.""" + +import subprocess # nosec +from shutil import rmtree +from os import environ, path +from sys import argv + +from distutils.command.clean import clean +import distutils.command.build_py +from setuptools import find_packages, setup +from setuptools.command.test import test as TestCommand + + +class TestCommandExtension(TestCommand): + """Run pytest tests.""" + + def run_tests(self): + """Invoke pytest.""" + import pytest + + exit(pytest.main(["--doctest-modules"])) + + +class LintCommand(distutils.command.build_py.build_py): + """Custom setuptools command class for running linters.""" + + description = "Run linters" + + def run(self): + """Run linter shell commands.""" + lint_commands = [ + # formatter: + "black --line-length 79 --check --diff src test setup.py".split(), + # style guide checker (formerly pep8): + "pycodestyle src test setup.py".split(), + # docstring style checker: + "pydocstyle src test setup.py".split(), + # static type checker: + "mypy src test setup.py".split(), + # security issue checker: + "bandit -r src ./setup.py".split(), + # general linter: + "pylint src test setup.py".split(), + # pylint takes relatively long to run, so it runs last, to enable + # fast failures. + ] + + # tell mypy where to find interface stubs for 3rd party libs + environ["MYPYPATH"] = path.join( + path.dirname(path.realpath(argv[0])), "stubs" + ) + + for lint_command in lint_commands: + print( + "Running lint command `", " ".join(lint_command).strip(), "`" + ) + subprocess.check_call(lint_command) # nosec + + +class CleanCommandExtension(clean): + """Custom command to do custom cleanup.""" + + def run(self): + """Run the regular clean, followed by our custom commands.""" + super().run() + rmtree("dist", ignore_errors=True) + rmtree(".mypy_cache", ignore_errors=True) + rmtree(".tox", ignore_errors=True) + rmtree(".pytest_cache", ignore_errors=True) + rmtree("src/0x_middlewares.egg-info", ignore_errors=True) + + +class TestPublishCommand(distutils.command.build_py.build_py): + """Custom command to publish to test.pypi.org.""" + + description = ( + "Publish dist/* to test.pypi.org." "Run sdist & bdist_wheel first." + ) + + def run(self): + """Run twine to upload to test.pypi.org.""" + subprocess.check_call( # nosec + ( + "twine upload --repository-url https://test.pypi.org/legacy/" + + " --verbose dist/*" + ).split() + ) + + +class PublishCommand(distutils.command.build_py.build_py): + """Custom command to publish to pypi.org.""" + + description = "Publish dist/* to pypi.org. Run sdist & bdist_wheel first." + + def run(self): + """Run twine to upload to pypi.org.""" + subprocess.check_call("twine upload dist/*".split()) # nosec + + +class PublishDocsCommand(distutils.command.build_py.build_py): + """Custom command to publish docs to S3.""" + + description = ( + "Publish docs to " + + "http://0x-middlewares-py.s3-website-us-east-1.amazonaws.com/" + ) + + def run(self): + """Run npm package `discharge` to build & upload docs.""" + subprocess.check_call("discharge deploy".split()) # nosec + + +class GanacheCommand(distutils.command.build_py.build_py): + """Custom command to publish to pypi.org.""" + + description = "Run ganache daemon to support tests." + + def run(self): + """Run ganache.""" + cmd_line = ( + "docker run -d -p 8545:8545 0xorg/ganache-cli:2.2.2" + ).split() + subprocess.call(cmd_line) # nosec + + +with open("README.md", "r") as file_handle: + README_MD = file_handle.read() + + +setup( + name="0x-middlewares", + version="1.0.1", + description="Web3 middlewares for 0x applications", + long_description=README_MD, + long_description_content_type="text/markdown", + url="https://github.com/0xproject/0x-monorepo/python-packages/middlewares", + author="Michael Huang", + author_email="michaelhly@users.noreply.github.com", + cmdclass={ + "clean": CleanCommandExtension, + "lint": LintCommand, + "test": TestCommandExtension, + "test_publish": TestPublishCommand, + "publish": PublishCommand, + "publish_docs": PublishDocsCommand, + "ganache": GanacheCommand, + }, + install_requires=[ + "eth-account", + "eth-keys", + "hexbytes", + "hypothesis>=3.31.2", # HACK! this is web3's dependency! + # above works around https://github.com/ethereum/web3.py/issues/1179 + "mypy_extensions", + ], + extras_require={ + "dev": [ + "0x-contract-addresses", + "0x-order-utils", + "0x-web3", + "bandit", + "black", + "coverage", + "coveralls", + "eth_utils", + "mypy", + "mypy_extensions", + "pycodestyle", + "pydocstyle", + "pylint", + "pytest", + "sphinx", + "sphinx-autodoc-typehints", + "tox", + "twine", + ] + }, + python_requires=">=3.6, <4", + package_data={"zero_ex.middlewares": ["py.typed"]}, + package_dir={"": "src"}, + license="Apache 2.0", + keywords=( + "ethereum cryptocurrency 0x decentralized blockchain dex exchange" + ), + namespace_packages=["zero_ex"], + packages=find_packages("src"), + classifiers=[ + "Development Status :: 2 - Pre-Alpha", + "Intended Audience :: Developers", + "Intended Audience :: Financial and Insurance Industry", + "License :: OSI Approved :: Apache Software License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Office/Business :: Financial", + "Topic :: Other/Nonlisted Topic", + "Topic :: Security :: Cryptography", + "Topic :: Software Development :: Libraries", + "Topic :: Utilities", + ], + zip_safe=False, # required per mypy + command_options={ + "build_sphinx": { + "source_dir": ("setup.py", "src"), + "build_dir": ("setup.py", "build/docs"), + } + }, +) diff --git a/python-packages/middlewares/src/conf.py b/python-packages/middlewares/src/conf.py new file mode 100644 index 0000000000..4bb5a2f9f1 --- /dev/null +++ b/python-packages/middlewares/src/conf.py @@ -0,0 +1,55 @@ +"""Configuration file for the Sphinx documentation builder.""" + +# Reference: http://www.sphinx-doc.org/en/master/config + +from typing import List +import pkg_resources + + +# pylint: disable=invalid-name +# because these variables are not named in upper case, as globals should be. + +project = "0x-middlewares" +# pylint: disable=redefined-builtin +copyright = "2019, ZeroEx, Intl." +author = "Michael Hwang" +version = pkg_resources.get_distribution("0x-middlewares").version +release = "" # The full version, including alpha/beta/rc tags + +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.doctest", + "sphinx.ext.intersphinx", + "sphinx.ext.coverage", + "sphinx.ext.viewcode", + "sphinx_autodoc_typehints", +] + +templates_path = ["doc_templates"] + +source_suffix = ".rst" +# eg: source_suffix = [".rst", ".md"] + +master_doc = "index" # The master toctree document. + +language = None + +exclude_patterns: List[str] = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + +html_theme = "alabaster" + +html_static_path = ["doc_static"] +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". + +# Output file base name for HTML help builder. +htmlhelp_basename = "middlewarespydoc" + +# -- Extension configuration: + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {"https://docs.python.org/": None} diff --git a/python-packages/middlewares/src/doc_static/.gitkeep b/python-packages/middlewares/src/doc_static/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/src/doc_templates/.gitkeep b/python-packages/middlewares/src/doc_templates/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/src/index.rst b/python-packages/middlewares/src/index.rst new file mode 100644 index 0000000000..9ef2efeccd --- /dev/null +++ b/python-packages/middlewares/src/index.rst @@ -0,0 +1,25 @@ +.. source for the sphinx-generated build/docs/web/index.html + +Python zero_ex.middlewares +========================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + +.. automodule:: zero_ex.middlewares + :members: + +zero_ex.middlewares.local_message_signer +---------------------------------------- + +.. automodule:: zero_ex.middlewares.local_message_signer + :members: + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/python-packages/middlewares/src/zero_ex/__init__.py b/python-packages/middlewares/src/zero_ex/__init__.py new file mode 100644 index 0000000000..e90d833db6 --- /dev/null +++ b/python-packages/middlewares/src/zero_ex/__init__.py @@ -0,0 +1,2 @@ +"""0x Python API.""" +__import__("pkg_resources").declare_namespace(__name__) diff --git a/python-packages/middlewares/src/zero_ex/middlewares/__init__.py b/python-packages/middlewares/src/zero_ex/middlewares/__init__.py new file mode 100644 index 0000000000..8b5b06dc56 --- /dev/null +++ b/python-packages/middlewares/src/zero_ex/middlewares/__init__.py @@ -0,0 +1 @@ +"""Web3 middlewares for 0x applications.""" diff --git a/python-packages/middlewares/src/zero_ex/middlewares/local_message_signer.py b/python-packages/middlewares/src/zero_ex/middlewares/local_message_signer.py new file mode 100644 index 0000000000..a570544f41 --- /dev/null +++ b/python-packages/middlewares/src/zero_ex/middlewares/local_message_signer.py @@ -0,0 +1,109 @@ +"""Middleware that captures all 'eth_sign' requests to the JSON-RPC-Server. + +An adaptation of the signing middleware from `web3.py +`_. +This middleware intercepts all 'eth_sign' requests to +an ethereum JSON RPC-Server and signs messages with a local private key. +""" + +from functools import singledispatch +from typing import Dict, List, Set, Tuple, Union +from eth_account import Account, messages +from eth_account.local import LocalAccount +from eth_keys.datatypes import PrivateKey +from hexbytes import HexBytes + + +@singledispatch +def _to_account(private_key_or_account): + """Get a `LocalAccount` instance from a private_key or a `LocalAccount`. + + Note that this function is overloaded based on the type on input. This + implementation is the base case where none of the supported types are + matched and we throw an exception. + """ + raise TypeError( + "key must be one of the types:" + "eth_keys.datatype.PrivateKey, " + "eth_account.local.LocalAccount, " + "or raw private key as a hex string or byte string. " + "Was of type {0}".format(type(private_key_or_account)) + ) + + +def _private_key_to_account(private_key): + """Get the account associated with the private key.""" + if isinstance(private_key, PrivateKey): + private_key = private_key.to_hex() + else: + private_key = HexBytes(private_key).hex() + return Account().privateKeyToAccount(private_key) + + +_to_account.register(LocalAccount, lambda x: x) +_to_account.register(PrivateKey, _private_key_to_account) +_to_account.register(str, _private_key_to_account) +_to_account.register(bytes, _private_key_to_account) + + +def construct_local_message_signer( + private_key_or_account: Union[ + Union[LocalAccount, PrivateKey, str], + List[Union[LocalAccount, PrivateKey, str]], + Tuple[Union[LocalAccount, PrivateKey, str]], + Set[Union[LocalAccount, PrivateKey, str]], + ] +): + """Construct a local messager signer middleware. + + :param private_key_or_account: a single private key or a tuple, + list, or set of private keys. Keys can be any of the following + formats: + + - An `eth_account.LocalAccount` object + - An `eth_keys.PrivateKey` object + - A raw private key as a hex `string` or `bytes` + :returns: callable local_message_signer_middleware + + :Example: + + >>> from web3 import Web3 + >>> from zero_ex.middlewares.local_message_signer import ( + ... construct_local_message_signer) + >>> WEB3_RPC_URL="https://mainnet.infura.io/v3/INFURA_API_KEY" + >>> PRIVATE_KEY=( + ... "f2f48ee19680706196e2e339e5da3491186e0c4c5030670656b0e0164837257d") + >>> web3_instance = Web3.HTTPProvider(WEB3_RPC_URL) + >>> web3_instance.middlewares.add( + ... construct_local_message_signer(PRIVATE_KEY)) + + """ + if not isinstance(private_key_or_account, (list, tuple, set)): + private_key_or_account = [private_key_or_account] + accounts = [_to_account(pkoa) for pkoa in private_key_or_account] + address_to_accounts: Dict[str, LocalAccount] = { + account.address: account for account in accounts + } + + def local_message_signer_middleware( + make_request, web3 + ): # pylint: disable=unused-argument + def middleware(method, params): + if method != "eth_sign": + return make_request(method, params) + account_address, message = params[:2] + account = address_to_accounts[account_address] + # We will assume any string which looks like a hex is expected + # to be converted to hex. Non-hexable strings are forcibly + # converted by encoding them to utf-8 + try: + message = HexBytes(message) + except Exception: # pylint: disable=broad-except + message = HexBytes(message.encode("utf-8")) + msg_hash_hexbytes = messages.defunct_hash_message(message) + ec_signature = account.signHash(msg_hash_hexbytes) + return {"result": ec_signature.signature} + + return middleware + + return local_message_signer_middleware diff --git a/python-packages/middlewares/src/zero_ex/middlewares/py.typed b/python-packages/middlewares/src/zero_ex/middlewares/py.typed new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/distutils/__init__.pyi b/python-packages/middlewares/stubs/distutils/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/distutils/command/__init__.pyi b/python-packages/middlewares/stubs/distutils/command/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/contract_demo/stubs/distutils/command/clean.pyi b/python-packages/middlewares/stubs/distutils/command/clean.pyi similarity index 100% rename from python-packages/contract_demo/stubs/distutils/command/clean.pyi rename to python-packages/middlewares/stubs/distutils/command/clean.pyi diff --git a/python-packages/middlewares/stubs/eth_account/__init__.pyi b/python-packages/middlewares/stubs/eth_account/__init__.pyi new file mode 100644 index 0000000000..5caed9e96f --- /dev/null +++ b/python-packages/middlewares/stubs/eth_account/__init__.pyi @@ -0,0 +1 @@ +class Account: ... diff --git a/python-packages/middlewares/stubs/eth_account/local.pyi b/python-packages/middlewares/stubs/eth_account/local.pyi new file mode 100644 index 0000000000..72b351fe5f --- /dev/null +++ b/python-packages/middlewares/stubs/eth_account/local.pyi @@ -0,0 +1 @@ +class LocalAccount: ... diff --git a/python-packages/middlewares/stubs/eth_account/messages.pyi b/python-packages/middlewares/stubs/eth_account/messages.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/eth_keys/__init__.pyi b/python-packages/middlewares/stubs/eth_keys/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/eth_keys/datatypes.pyi b/python-packages/middlewares/stubs/eth_keys/datatypes.pyi new file mode 100644 index 0000000000..8d2a8dd32c --- /dev/null +++ b/python-packages/middlewares/stubs/eth_keys/datatypes.pyi @@ -0,0 +1 @@ +class PrivateKey: ... diff --git a/python-packages/middlewares/stubs/eth_utils/__init__.pyi b/python-packages/middlewares/stubs/eth_utils/__init__.pyi new file mode 100644 index 0000000000..3343950068 --- /dev/null +++ b/python-packages/middlewares/stubs/eth_utils/__init__.pyi @@ -0,0 +1,3 @@ +from typing import Union + +def to_checksum_address(value: Union[str, bytes]) -> str: ... diff --git a/python-packages/middlewares/stubs/hexbytes/HexBytes.pyi b/python-packages/middlewares/stubs/hexbytes/HexBytes.pyi new file mode 100644 index 0000000000..bc88efe52a --- /dev/null +++ b/python-packages/middlewares/stubs/hexbytes/HexBytes.pyi @@ -0,0 +1 @@ +class HexBytes: ... diff --git a/python-packages/middlewares/stubs/hexbytes/__init__.pyi b/python-packages/middlewares/stubs/hexbytes/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/pytest/__init__.pyi b/python-packages/middlewares/stubs/pytest/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/pytest/raises.pyi b/python-packages/middlewares/stubs/pytest/raises.pyi new file mode 100644 index 0000000000..2e3b29f3dc --- /dev/null +++ b/python-packages/middlewares/stubs/pytest/raises.pyi @@ -0,0 +1 @@ +def raises(exception: Exception) -> ExceptionInfo: ... diff --git a/python-packages/middlewares/stubs/setuptools/__init__.pyi b/python-packages/middlewares/stubs/setuptools/__init__.pyi new file mode 100644 index 0000000000..8ea8d32b7e --- /dev/null +++ b/python-packages/middlewares/stubs/setuptools/__init__.pyi @@ -0,0 +1,8 @@ +from distutils.dist import Distribution +from typing import Any, List + +def setup(**attrs: Any) -> Distribution: ... + +class Command: ... + +def find_packages(where: str) -> List[str]: ... diff --git a/python-packages/middlewares/stubs/setuptools/command/__init__.pyi b/python-packages/middlewares/stubs/setuptools/command/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/setuptools/command/test.pyi b/python-packages/middlewares/stubs/setuptools/command/test.pyi new file mode 100644 index 0000000000..c5ec770ad3 --- /dev/null +++ b/python-packages/middlewares/stubs/setuptools/command/test.pyi @@ -0,0 +1,3 @@ +from setuptools import Command + +class test(Command): ... diff --git a/python-packages/middlewares/stubs/web3/__init__.pyi b/python-packages/middlewares/stubs/web3/__init__.pyi new file mode 100644 index 0000000000..c5aa964d3d --- /dev/null +++ b/python-packages/middlewares/stubs/web3/__init__.pyi @@ -0,0 +1,8 @@ +from typing import Dict, Optional, Union + +from web3.utils import datatypes +from web3.providers.base import BaseProvider + +class Web3: + class HTTPProvider(BaseProvider): ... + def __init__(self, provider: BaseProvider) -> None: ... diff --git a/python-packages/middlewares/stubs/web3/exceptions.pyi b/python-packages/middlewares/stubs/web3/exceptions.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/web3/providers/__init__.pyi b/python-packages/middlewares/stubs/web3/providers/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/web3/providers/base.pyi b/python-packages/middlewares/stubs/web3/providers/base.pyi new file mode 100644 index 0000000000..7e6eaf3cbd --- /dev/null +++ b/python-packages/middlewares/stubs/web3/providers/base.pyi @@ -0,0 +1 @@ +class BaseProvider: ... diff --git a/python-packages/middlewares/stubs/web3/utils/__init__.pyi b/python-packages/middlewares/stubs/web3/utils/__init__.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/stubs/web3/utils/datatypes.pyi b/python-packages/middlewares/stubs/web3/utils/datatypes.pyi new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/middlewares/test/__init__.py b/python-packages/middlewares/test/__init__.py new file mode 100644 index 0000000000..88975131fe --- /dev/null +++ b/python-packages/middlewares/test/__init__.py @@ -0,0 +1 @@ +"""Tests of zero_x.middlewares.""" diff --git a/python-packages/middlewares/test/test_local_message_signer.py b/python-packages/middlewares/test/test_local_message_signer.py new file mode 100644 index 0000000000..d4031fc8f4 --- /dev/null +++ b/python-packages/middlewares/test/test_local_message_signer.py @@ -0,0 +1,40 @@ +"""Tests of 0x.middlewares.local_message_signer.""" + +from eth_utils import to_checksum_address +from web3 import Web3 +from zero_ex.contract_addresses import NETWORK_TO_ADDRESSES, NetworkId +from zero_ex.middlewares.local_message_signer import ( + construct_local_message_signer, +) +from zero_ex.order_utils import ( + generate_order_hash_hex, + is_valid_signature, + make_empty_order, + sign_hash, +) + + +def test_local_message_signer__sign_order(): + """Test signing order with the local_message_signer middleware""" + expected_signature = ( + "0x1cd17d75b891accf16030c572a64cf9e7955de63bcafa5b084439cec630ade2d7" + "c00f47a2f4d5b6a4508267bf4b8527100bd97cf1af9984c0a58e42d25b13f4f0a03" + ) + address = "0x5409ED021D9299bf6814279A6A1411A7e866A631" + exchange = NETWORK_TO_ADDRESSES[NetworkId.GANACHE].exchange + private_key = ( + "f2f48ee19680706196e2e339e5da3491186e0c4c5030670656b0e0164837257d" + ) + web3_rpc_url = "http://127.0.0.1:8545" + web3_instance = Web3.HTTPProvider(web3_rpc_url) + web3_instance.middlewares.add(construct_local_message_signer(private_key)) + order = make_empty_order() + order_hash = generate_order_hash_hex(order, exchange) + signature = sign_hash( + web3_instance, to_checksum_address(address), order_hash + ) + assert signature == expected_signature + is_valid = is_valid_signature( + web3_instance, order_hash, signature, address + )[0] + assert is_valid is True diff --git a/python-packages/middlewares/tox.ini b/python-packages/middlewares/tox.ini new file mode 100644 index 0000000000..cb4d2548e6 --- /dev/null +++ b/python-packages/middlewares/tox.ini @@ -0,0 +1,25 @@ +# tox (https://tox.readthedocs.io/) is a tool for running tests +# in multiple virtualenvs. This configuration file will run the +# test suite on all supported python versions. To use it, "pip install tox" +# and then run "tox" from this directory. + +[tox] +envlist = py37 + +[testenv] +commands = + pip install -e .[dev] + python setup.py test + +[testenv:run_tests_against_test_deployment] +commands = + # install dependencies from real PyPI + pip install eth-account eth-keys hexbytes hypothesis>=3.31.2 mypy_extensions + # install package-under-test from test PyPI + pip install --index-url https://test.pypi.org/legacy/ 0x-middlewares + pytest test + +[testenv:run_tests_against_deployment] +commands = + pip install 0x-middlewares + pytest test diff --git a/python-packages/order_utils/src/zero_ex/order_utils/__init__.py b/python-packages/order_utils/src/zero_ex/order_utils/__init__.py index 39d4115077..c1fea8c21c 100644 --- a/python-packages/order_utils/src/zero_ex/order_utils/__init__.py +++ b/python-packages/order_utils/src/zero_ex/order_utils/__init__.py @@ -6,7 +6,55 @@ For local testing one may construct such a provider pointing at an instance of contracts deployed on it. For convenience, a docker container is provided for just this purpose. To start it: `docker run -d -p 8545:8545 0xorg/ganache-cli:2.2.2`:code:. -""" + +Creating a 0x Order +-------------------- + +Here is a short demonstration on how to create a 0x order. + +>>> import pprint +>>> from zero_ex.contract_addresses import ( +... NETWORK_TO_ADDRESSES, NetworkId) +>>> from zero_ex.order_utils import asset_data_utils, Order +>>> NULL_ADDRESS = "0x0000000000000000000000000000000000000000" +>>> my_address = "0x5409ed021d9299bf6814279a6a1411a7e866a631" +>>> exchange_address = NETWORK_TO_ADDRESSES[NetworkId.MAINNET].exchange +>>> weth_address = NETWORK_TO_ADDRESSES[NetworkId.MAINNET].ether_token +>>> zrx_address = NETWORK_TO_ADDRESSES[NetworkId.MAINNET].zrx_token +>>> maker_asset_data = ( +... asset_data_utils.encode_erc20_asset_data(weth_address)) +>>> taker_asset_data = ( +... asset_data_utils.encode_erc20_asset_data(zrx_address)) +>>> example_order: Order = { +... "makerAddress": my_address, +... "takerAddress": NULL_ADDRESS, +... "exchangeAddress": exchange_address, +... "senderAddress": NULL_ADDRESS, +... "feeRecipientAddress": NULL_ADDRESS, +... "makerAssetData": maker_asset_data, +... "takerAssetData": taker_asset_data, +... "salt": 123456789, +... "makerFee": 0, +... "takerFee": 0, +... "makerAssetAmount": 1 * 10 ** 18, # Converting token amount to base unit with 18 decimals +... "takerAssetAmount": 500 * 10 ** 18, # Converting token amount to base unit with 18 decimals +... "expirationTimeSeconds": 1553553429, +... } +>>> pprint.pprint(example_order) +{'exchangeAddress': '0x4f833a24e1f95d70f028921e27040ca56e09ab0b', + 'expirationTimeSeconds': 1553553429, + 'feeRecipientAddress': '0x0000000000000000000000000000000000000000', + 'makerAddress': '0x5409ed021d9299bf6814279a6a1411a7e866a631', + 'makerAssetAmount': 1000000000000000000, + 'makerAssetData': '0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + 'makerFee': 0, + 'salt': 123456789, + 'senderAddress': '0x0000000000000000000000000000000000000000', + 'takerAddress': '0x0000000000000000000000000000000000000000', + 'takerAssetAmount': 500000000000000000000, + 'takerAssetData': '0xf47261b0000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498', + 'takerFee': 0} +""" # noqa E501 from copy import copy from enum import auto, Enum diff --git a/python-packages/sra_client/.pylintrc b/python-packages/sra_client/.pylintrc new file mode 100644 index 0000000000..ef108c01fc --- /dev/null +++ b/python-packages/sra_client/.pylintrc @@ -0,0 +1,4 @@ +[MESSAGES CONTROL] +disable=C0330,line-too-long,fixme,too-few-public-methods,too-many-ancestors +# C0330 is "bad hanging indent". we use indents per `black`. + diff --git a/python-packages/sra_client/CHANGELOG.json b/python-packages/sra_client/CHANGELOG.json new file mode 100644 index 0000000000..0016c0e04f --- /dev/null +++ b/python-packages/sra_client/CHANGELOG.json @@ -0,0 +1,22 @@ +[ + { + "version": "1.0.1", + "changes": [ + { + "note": "Fix regex validation on numeric values", + "pr": 1731 + } + ], + "timestamp": 1553491629 + }, + { + "version": "1.0.1", + "changes": [ + { + "note": "Added new devdependencies, and linting commands to `setup.py`. Added sphinx docs to demonstrate how to use sra_client.", + "pr": 1734 + } + ], + "timestamp": 1553183790 + } +] diff --git a/python-packages/contract_demo/test/conf.py b/python-packages/sra_client/conf.py similarity index 89% rename from python-packages/contract_demo/test/conf.py rename to python-packages/sra_client/conf.py index 45ed4b2a53..3b6477c5de 100644 --- a/python-packages/contract_demo/test/conf.py +++ b/python-packages/sra_client/conf.py @@ -9,11 +9,11 @@ import pkg_resources # pylint: disable=invalid-name # because these variables are not named in upper case, as globals should be. -project = "0x-contract-demo" +project = "0x-sra-client" # pylint: disable=redefined-builtin copyright = "2018, ZeroEx, Intl." author = "F. Eugene Aumson" -version = pkg_resources.get_distribution("0x-contract-demo").version +version = pkg_resources.get_distribution("0x-sra-client").version release = "" # The full version, including alpha/beta/rc tags extensions = [ @@ -22,6 +22,7 @@ extensions = [ "sphinx.ext.intersphinx", "sphinx.ext.coverage", "sphinx.ext.viewcode", + "sphinx_autodoc_typehints", ] templates_path = ["doc_templates"] @@ -46,7 +47,7 @@ html_static_path = ["doc_static"] # so a file named "default.css" will overwrite the builtin "default.css". # Output file base name for HTML help builder. -htmlhelp_basename = "contract_demopydoc" +htmlhelp_basename = "sraclientpydoc" # -- Extension configuration: diff --git a/python-packages/sra_client/doc_static/.gitkeep b/python-packages/sra_client/doc_static/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/sra_client/doc_template/.gitkeep b/python-packages/sra_client/doc_template/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python-packages/contract_demo/test/index.rst b/python-packages/sra_client/index.rst similarity index 58% rename from python-packages/contract_demo/test/index.rst rename to python-packages/sra_client/index.rst index c546eccfa3..27c814b316 100644 --- a/python-packages/contract_demo/test/index.rst +++ b/python-packages/sra_client/index.rst @@ -1,13 +1,20 @@ .. source for the sphinx-generated build/docs/web/index.html -Python demo of 0x Smart Contracts -================================= +Python zero_ex.sra_client.api_client +==================================== .. toctree:: :maxdepth: 2 :caption: Contents: -.. automodule:: test.test_exchange +.. automodule:: sra_client + +---- + +API +--- + +.. automodule:: sra_client.api.default_api :members: Indices and tables diff --git a/python-packages/sra_client/setup.py b/python-packages/sra_client/setup.py index 0921149bd4..5d3c10d3c2 100755 --- a/python-packages/sra_client/setup.py +++ b/python-packages/sra_client/setup.py @@ -1,14 +1,16 @@ #!/usr/bin/env python # coding: utf-8 +"""setuptools module for sra_client package.""" -import subprocess +import subprocess # nosec import distutils.command.build_py from setuptools import setup, find_packages # noqa: H301 +from setuptools.command.test import test as TestCommand NAME = "0x-sra-client" -VERSION = "1.0.0" +VERSION = "1.0.1" # To install the library, run the following # # python setup.py install @@ -21,6 +23,17 @@ with open("README.md", "r") as file_handle: REQUIRES = ["urllib3 >= 1.15", "six >= 1.10", "certifi", "python-dateutil"] + +class TestCommandExtension(TestCommand): + """Run pytest tests.""" + + def run_tests(self): + """Invoke pytest.""" + import pytest + + exit(pytest.main(["--doctest-modules"])) + + class TestPublishCommand(distutils.command.build_py.build_py): """Custom command to publish to test.pypi.org.""" @@ -38,6 +51,59 @@ class TestPublishCommand(distutils.command.build_py.build_py): ) +class GanacheCommand(distutils.command.build_py.build_py): + """Custom command to publish to pypi.org.""" + + description = "Run ganache daemon to support tests." + + def run(self): + """Run ganache.""" + cmd_line = ( + "docker run -d -p 8545:8545 0xorg/ganache-cli:2.2.2" + ).split() + subprocess.call(cmd_line) # nosec + + +class LaunchKitCommand(distutils.command.build_py.build_py): + """Custom command to boot up a local 0x-launch-kit in docker.""" + + description = "Run launch-kit daemon to support sra_client demos." + + def run(self): + """Run 0x-launch-kit.""" + cmd_line = ("docker run -d -p 3000:3000 0xorg/launch-kit-ci").split() + subprocess.call(cmd_line) # nosec + + +class LintCommand(distutils.command.build_py.build_py): + """Custom setuptools command class for running linters.""" + + description = "Run linters" + + def run(self): + """Run linter shell commands.""" + lint_commands = [ + # formatter: + "black --line-length 79 --check --diff test sra_client/__init__.py setup.py".split(), # noqa: E501 (line too long) + # style guide checker (formerly pep8): + "pycodestyle test sra_client/__init__.py setup.py".split(), + # docstring style checker: + "pydocstyle src test sra_client/__init__.py setup.py".split(), + # static type checker: + "bandit -r test sra_client/__init__.py setup.py".split(), + # general linter: + "pylint test sra_client/__init__.py setup.py".split(), + # pylint takes relatively long to run, so it runs last, to enable + # fast failures. + ] + + for lint_command in lint_commands: + print( + "Running lint command `", " ".join(lint_command).strip(), "`" + ) + subprocess.check_call(lint_command) # nosec + + class PublishCommand(distutils.command.build_py.build_py): """Custom command to publish to pypi.org.""" @@ -48,13 +114,17 @@ class PublishCommand(distutils.command.build_py.build_py): subprocess.check_call("twine upload dist/*".split()) # nosec -class LintCommand(distutils.command.build_py.build_py): - """No-op lint command to support top-level lint script.""" +class PublishDocsCommand(distutils.command.build_py.build_py): + """Custom command to publish docs to S3.""" - description = "No-op" + description = ( + "Publish docs to " + + "http://0x-sra-demos-py.s3-website-us-east-1.amazonaws.com/" + ) def run(self): - pass + """Run npm package `discharge` to build & upload docs.""" + subprocess.check_call("discharge deploy".split()) # nosec setup( @@ -72,6 +142,33 @@ setup( cmdclass={ "test_publish": TestPublishCommand, "publish": PublishCommand, + "launch_kit": LaunchKitCommand, "lint": LintCommand, + "publish_docs": PublishDocsCommand, + "test": TestCommandExtension, + "ganache": GanacheCommand, + }, + extras_require={ + "dev": [ + "0x-contract-addresses", + "0x-order-utils", + "0x-web3", + "bandit", + "black", + "coverage", + "coveralls", + "pycodestyle", + "pydocstyle", + "pylint", + "pytest", + "sphinx", + "sphinx-autodoc-typehints", + ] + }, + command_options={ + "build_sphinx": { + "source_dir": ("setup.py", "."), + "build_dir": ("setup.py", "build/docs"), + } }, ) diff --git a/python-packages/sra_client/sra_client/__init__.py b/python-packages/sra_client/sra_client/__init__.py index fc02976a57..8f8bb79e8c 100644 --- a/python-packages/sra_client/sra_client/__init__.py +++ b/python-packages/sra_client/sra_client/__init__.py @@ -2,6 +2,167 @@ # flake8: noqa +"""Python api client to interact with SRA compatible 0x relayers. + +0x Protocol is an open standard. Many relayers opt-in to implementing a set of +`standard relayer API endpoints `_ +to make it easier for anyone to source liquidity that conforms to the 0x order format. +Here, we will show you how you can use our `sra_client +`_ +module to interact with 0x relayers that implements the Standard Relayer API. + +Setup +===== +Install the sra-client package with pip: + +`pip install 0x-sra-client`:code: + +To interact with a 0x Relayer, you need the HTTP endpoint of the Relayer you'd like to +connect to (i.e. https://api.radarrelay.com/0x/v2). + +For local testing one can use the `0x-launch-kit +`_ +to host orders locally. For convenience, a docker container is provided +for just this purpose. To start it: + +`docker run -d -p 3000:3000 0xorg/launch-kit-ci`:code: + +and then connect to the http server running at http://localhost:3000. + +---- + +Configure and create an API client instance +-------------------------------------------- + +>>> from sra_client import ApiClient, Configuration +>>> from sra_client.api import DefaultApi +>>> config = Configuration() +>>> config.host = "http://localhost:3000" +>>> relayer_api = DefaultApi(ApiClient(config)) + +Post Order +----------- +Post an order to an SRA-compliant Relayer. + +>>> from web3 import HTTPProvider, Web3 +>>> from zero_ex.contract_addresses import ( +... NETWORK_TO_ADDRESSES, NetworkId) +>>> from zero_ex.order_utils import ( +... asset_data_utils, +... generate_order_hash_hex, +... jsdict_order_to_struct, +... sign_hash) +>>> provider = HTTPProvider("http://localhost:8545") +>>> maker_address = "0x5409ed021d9299bf6814279a6a1411a7e866a631" +>>> exchange_address = NETWORK_TO_ADDRESSES[NetworkId.KOVAN].exchange +>>> weth_address = NETWORK_TO_ADDRESSES[NetworkId.KOVAN].ether_token +>>> zrx_address = NETWORK_TO_ADDRESSES[NetworkId.KOVAN].zrx_token +>>> weth_asset_data = asset_data_utils.encode_erc20_asset_data(weth_address) +>>> zrx_asset_data = asset_data_utils.encode_erc20_asset_data(zrx_address) +>>> example_order = { +... "makerAddress": maker_address, +... "takerAddress": "0x0000000000000000000000000000000000000000", +... "senderAddress": "0x0000000000000000000000000000000000000000", +... "exchangeAddress": exchange_address, +... "feeRecipientAddress": +... "0x0000000000000000000000000000000000000000", +... "makerAssetData": weth_asset_data, +... "takerAssetData": zrx_asset_data, +... "salt": "2362734632784682376287462", +... "makerFee": "0", +... "takerFee": "0", +... "makerAssetAmount": "1000000000000000000", +... "takerAssetAmount": "500000000000000000000", +... "expirationTimeSeconds": "999999999999999999999"} +>>> order_hash = generate_order_hash_hex( +... jsdict_order_to_struct(example_order), exchange_address) +>>> example_order["signature"] = sign_hash( +... provider, Web3.toChecksumAddress(maker_address), order_hash) +>>> relayer_api.post_order_with_http_info( +... network_id=42, signed_order_schema=example_order)[1] +200 + +Get Orders +----------- +Get orders from an SRA-compliant Relayer. + +>>> relayer_api.get_orders() +{'records': [{'meta_data': {}, + 'order': {'exchange_address': '0x35dd2932454449b14cee11a94d3674a936d5d7b2', + 'expiration_time_seconds': '1000000000000000000000', + 'fee_recipient_address': '0x0000000000000000000000000000000000000000', + 'maker_address': '0x5409ed021d9299bf6814279a6a1411a7e866a631', + 'maker_asset_amount': '1000000000000000000', + 'maker_asset_data': '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', + 'maker_fee': '0', + 'salt': '2362734632784682376287462', + 'sender_address': '0x0000000000000000000000000000000000000000', + 'taker_address': '0x0000000000000000000000000000000000000000', + 'taker_asset_amount': '500000000000000000000', + 'taker_asset_data': '0xf47261b00000000000000000000000002002d3812f58e35f0ea1ffbf80a75a38c32175fa', + 'taker_fee': '0'}}]} + +Get Order +--------- +Get an order by hash from an SRA-compliant Relayer. + +>>> relayer_api.get_order(order_hash) # doctest: +SKIP +{'meta_data': {}, +'order': {'exchange_address': '0x35dd2932454449b14cee11a94d3674a936d5d7b2', + 'expiration_time_seconds': '1000000000000000000000', + 'fee_recipient_address': '0x0000000000000000000000000000000000000000', + 'maker_address': '0x5409ed021d9299bf6814279a6a1411a7e866a631', + 'maker_asset_amount': '1000000000000000000', + 'maker_asset_data': '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', + 'maker_fee': '0', + 'salt': '2362734632784682376287462', + 'sender_address': '0x0000000000000000000000000000000000000000', + 'taker_address': '0x0000000000000000000000000000000000000000', + 'taker_asset_amount': '500000000000000000000', + 'taker_asset_data': '0xf47261b00000000000000000000000002002d3812f58e35f0ea1ffbf80a75a38c32175fa', + 'taker_fee': '0'}}, + +Get Asset Pair +--------------- +Get available asset pairs from an SRA-compliant Relayer. + +>>> relayer_api.get_asset_pairs() +{'records': [{'assetDataA': {'assetData': '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', + 'maxAmount': '115792089237316195423570985008687907853269984665640564039457584007913129639936', + 'minAmount': '0', + 'precision': 18}, + 'assetDataB': {'assetData': '0xf47261b00000000000000000000000002002d3812f58e35f0ea1ffbf80a75a38c32175fa', + 'maxAmount': '115792089237316195423570985008687907853269984665640564039457584007913129639936', + 'minAmount': '0', + 'precision': 18}}]} + +Get Orderbook +------------- +Get the orderbook for the WETH/ZRX asset pair from an SRA-compliant Relayer. + +>>> relayer_api.get_orderbook( +... base_asset_data=weth_asset_data, +... quote_asset_data=zrx_asset_data) +{'asks': {'records': [{'meta_data': {}, + 'order': {'exchange_address': '0x35dd2932454449b14cee11a94d3674a936d5d7b2', + 'expiration_time_seconds': '1000000000000000000000', + 'fee_recipient_address': '0x0000000000000000000000000000000000000000', + 'maker_address': '0x5409ed021d9299bf6814279a6a1411a7e866a631', + 'maker_asset_amount': '1000000000000000000', + 'maker_asset_data': '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', + 'maker_fee': '0', + 'salt': '2362734632784682376287462', + 'sender_address': '0x0000000000000000000000000000000000000000', + 'taker_address': '0x0000000000000000000000000000000000000000', + 'taker_asset_amount': '500000000000000000000', + 'taker_asset_data': '0xf47261b00000000000000000000000002002d3812f58e35f0ea1ffbf80a75a38c32175fa', + 'taker_fee': '0'}}]}, + 'bids': {'records': []}} +""" # noqa: E501 (line too long) + +# NOTE: Bug in get_order method. +# Sra_client not deserialzing order from server properly, need fix! + from __future__ import absolute_import @@ -28,7 +189,7 @@ from sra_client.models.relayer_api_asset_data_trade_info_schema import ( from sra_client.models.relayer_api_error_response_schema import ( RelayerApiErrorResponseSchema, ) -from sra_client.models.relayer_api_error_response_schema_validation_errors import ( +from sra_client.models.relayer_api_error_response_schema_validation_errors import ( # noqa: E501 (line too long) RelayerApiErrorResponseSchemaValidationErrors, ) from sra_client.models.relayer_api_fee_recipients_response_schema import ( @@ -44,7 +205,7 @@ from sra_client.models.relayer_api_order_schema import RelayerApiOrderSchema from sra_client.models.relayer_api_orderbook_response_schema import ( RelayerApiOrderbookResponseSchema, ) -from sra_client.models.relayer_api_orders_channel_subscribe_payload_schema import ( +from sra_client.models.relayer_api_orders_channel_subscribe_payload_schema import ( # noqa: E501 (line too long) RelayerApiOrdersChannelSubscribePayloadSchema, ) from sra_client.models.relayer_api_orders_channel_subscribe_schema import ( diff --git a/python-packages/sra_client/sra_client/api/default_api.py b/python-packages/sra_client/sra_client/api/default_api.py index 2d65db6095..4e1fac032b 100644 --- a/python-packages/sra_client/sra_client/api/default_api.py +++ b/python-packages/sra_client/sra_client/api/default_api.py @@ -9,66 +9,74 @@ import re # noqa: F401 import six from sra_client.api_client import ApiClient +from sra_client.models.relayer_api_order_config_payload_schema import ( + RelayerApiOrderConfigPayloadSchema, +) class DefaultApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech + """Default API for SRA compliant 0x relayers.""" - Do not edit the class manually. - """ + # NOTE: This class is auto generated by OpenAPI Generator + # Ref: https://openapi-generator.tech + + # Do not edit the class manually. def __init__(self, api_client=None): if api_client is None: api_client = ApiClient() self.api_client = api_client - def get_asset_pairs(self, **kwargs): # noqa: E501 - """get_asset_pairs # noqa: E501 + def get_asset_pairs(self, **kwargs): + """get_asset_pairs - Retrieves a list of available asset pairs and the information required to trade them (in any order). Setting only `assetDataA` or `assetDataB` returns pairs filtered by that asset only. # noqa: E501 + Retrieves a list of available asset pairs and the information + required to trade them (in any order). Setting only `assetDataA` or + `assetDataB` returns pairs filtered by that asset only. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_asset_pairs(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.get_asset_pairs(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param str asset_data_a: The assetData value for the first asset in the pair. :param str asset_data_b: The assetData value for the second asset in the pair. :param float network_id: The id of the Ethereum network :param float page: The number of the page to request in the collection. :param float per_page: The number of records to return per page. - :return: RelayerApiAssetDataPairsResponseSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiAssetDataPairsResponseSchema`. + If the method is called asynchronously returns the request thread. """ kwargs["_return_http_data_only"] = True if kwargs.get("async_req"): - return self.get_asset_pairs_with_http_info(**kwargs) # noqa: E501 + return self.get_asset_pairs_with_http_info(**kwargs) else: - (data) = self.get_asset_pairs_with_http_info( - **kwargs - ) # noqa: E501 + (data) = self.get_asset_pairs_with_http_info(**kwargs) return data - def get_asset_pairs_with_http_info(self, **kwargs): # noqa: E501 - """get_asset_pairs # noqa: E501 + def get_asset_pairs_with_http_info(self, **kwargs): + """get_asset_pairs - Retrieves a list of available asset pairs and the information required to trade them (in any order). Setting only `assetDataA` or `assetDataB` returns pairs filtered by that asset only. # noqa: E501 + Retrieves a list of available asset pairs and the information + required to trade them (in any order). Setting only `assetDataA` or + `assetDataB` returns pairs filtered by that asset only. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_asset_pairs_with_http_info(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.get_asset_pairs_with_http_info(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param str asset_data_a: The assetData value for the first asset in the pair. :param str asset_data_b: The assetData value for the second asset in the pair. :param float network_id: The id of the Ethereum network :param float page: The number of the page to request in the collection. :param float per_page: The number of records to return per page. - :return: RelayerApiAssetDataPairsResponseSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiAssetDataPairsResponseSchema`. + If the method is called asynchronously returns the request thread. """ local_var_params = locals() @@ -79,7 +87,7 @@ class DefaultApi(object): "network_id", "page", "per_page", - ] # noqa: E501 + ] all_params.append("async_req") all_params.append("_return_http_data_only") all_params.append("_preload_content") @@ -102,23 +110,17 @@ class DefaultApi(object): if "asset_data_a" in local_var_params: query_params.append( ("assetDataA", local_var_params["asset_data_a"]) - ) # noqa: E501 + ) if "asset_data_b" in local_var_params: query_params.append( ("assetDataB", local_var_params["asset_data_b"]) - ) # noqa: E501 + ) if "network_id" in local_var_params: - query_params.append( - ("networkId", local_var_params["network_id"]) - ) # noqa: E501 + query_params.append(("networkId", local_var_params["network_id"])) if "page" in local_var_params: - query_params.append( - ("page", local_var_params["page"]) - ) # noqa: E501 + query_params.append(("page", local_var_params["page"])) if "per_page" in local_var_params: - query_params.append( - ("perPage", local_var_params["per_page"]) - ) # noqa: E501 + query_params.append(("perPage", local_var_params["per_page"])) header_params = {} @@ -129,10 +131,10 @@ class DefaultApi(object): # HTTP header `Accept` header_params["Accept"] = self.api_client.select_header_accept( ["application/json"] - ) # noqa: E501 + ) # Authentication setting - auth_settings = [] # noqa: E501 + auth_settings = [] return self.api_client.call_api( "/v2/asset_pairs", @@ -143,66 +145,66 @@ class DefaultApi(object): body=body_params, post_params=form_params, files=local_var_files, - response_type="RelayerApiAssetDataPairsResponseSchema", # noqa: E501 + response_type="RelayerApiAssetDataPairsResponseSchema", auth_settings=auth_settings, async_req=local_var_params.get("async_req"), _return_http_data_only=local_var_params.get( "_return_http_data_only" - ), # noqa: E501 + ), _preload_content=local_var_params.get("_preload_content", True), _request_timeout=local_var_params.get("_request_timeout"), collection_formats=collection_formats, ) - def get_fee_recipients(self, **kwargs): # noqa: E501 - """get_fee_recipients # noqa: E501 + def get_fee_recipients(self, **kwargs): + """get_fee_recipients - Retrieves a collection of all fee recipient addresses for a relayer. This endpoint should be [paginated](#section/Pagination). # noqa: E501 + Retrieves a collection of all fee recipient addresses for a relayer. + This endpoint should be paginated. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_fee_recipients(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.get_fee_recipients(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param float network_id: The id of the Ethereum network :param float page: The number of the page to request in the collection. :param float per_page: The number of records to return per page. - :return: RelayerApiFeeRecipientsResponseSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiFeeRecipientsResponseSchema`. + If the method is called asynchronously, returns the request thread. """ kwargs["_return_http_data_only"] = True if kwargs.get("async_req"): - return self.get_fee_recipients_with_http_info( - **kwargs - ) # noqa: E501 + return self.get_fee_recipients_with_http_info(**kwargs) else: - (data) = self.get_fee_recipients_with_http_info( - **kwargs - ) # noqa: E501 + (data) = self.get_fee_recipients_with_http_info(**kwargs) return data - def get_fee_recipients_with_http_info(self, **kwargs): # noqa: E501 - """get_fee_recipients # noqa: E501 + def get_fee_recipients_with_http_info(self, **kwargs): + """get_fee_recipients - Retrieves a collection of all fee recipient addresses for a relayer. This endpoint should be [paginated](#section/Pagination). # noqa: E501 + Retrieves a collection of all fee recipient addresses for a relayer. + This endpoint should be paginated. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_fee_recipients_with_http_info(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.get_fee_recipients_with_http_info(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param float network_id: The id of the Ethereum network :param float page: The number of the page to request in the collection. :param float per_page: The number of records to return per page. - :return: RelayerApiFeeRecipientsResponseSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiFeeRecipientsResponseSchema`. + If the method is called asynchronously, returns the request thread. """ local_var_params = locals() - all_params = ["network_id", "page", "per_page"] # noqa: E501 + all_params = ["network_id", "page", "per_page"] all_params.append("async_req") all_params.append("_return_http_data_only") all_params.append("_preload_content") @@ -223,17 +225,11 @@ class DefaultApi(object): query_params = [] if "network_id" in local_var_params: - query_params.append( - ("networkId", local_var_params["network_id"]) - ) # noqa: E501 + query_params.append(("networkId", local_var_params["network_id"])) if "page" in local_var_params: - query_params.append( - ("page", local_var_params["page"]) - ) # noqa: E501 + query_params.append(("page", local_var_params["page"])) if "per_page" in local_var_params: - query_params.append( - ("perPage", local_var_params["per_page"]) - ) # noqa: E501 + query_params.append(("perPage", local_var_params["per_page"])) header_params = {} @@ -244,10 +240,10 @@ class DefaultApi(object): # HTTP header `Accept` header_params["Accept"] = self.api_client.select_header_accept( ["application/json"] - ) # noqa: E501 + ) # Authentication setting - auth_settings = [] # noqa: E501 + auth_settings = [] return self.api_client.call_api( "/v2/fee_recipients", @@ -258,64 +254,62 @@ class DefaultApi(object): body=body_params, post_params=form_params, files=local_var_files, - response_type="RelayerApiFeeRecipientsResponseSchema", # noqa: E501 + response_type="RelayerApiFeeRecipientsResponseSchema", auth_settings=auth_settings, async_req=local_var_params.get("async_req"), _return_http_data_only=local_var_params.get( "_return_http_data_only" - ), # noqa: E501 + ), _preload_content=local_var_params.get("_preload_content", True), _request_timeout=local_var_params.get("_request_timeout"), collection_formats=collection_formats, ) - def get_order(self, order_hash, **kwargs): # noqa: E501 - """get_order # noqa: E501 + def get_order(self, order_hash, **kwargs): + """get_order - Retrieves the 0x order with meta info that is associated with the hash. # noqa: E501 + Retrieves the 0x order with meta info that is associated with the hash. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_order(order_hash, async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.get_order(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param str order_hash: The hash of the desired 0x order. (required) :param float network_id: The id of the Ethereum network - :return: RelayerApiOrderSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiOrderSchema`. + If the method is called asynchronously, returns the request thread. """ kwargs["_return_http_data_only"] = True if kwargs.get("async_req"): - return self.get_order_with_http_info( - order_hash, **kwargs - ) # noqa: E501 + return self.get_order_with_http_info(order_hash, **kwargs) else: - (data) = self.get_order_with_http_info( - order_hash, **kwargs - ) # noqa: E501 + (data) = self.get_order_with_http_info(order_hash, **kwargs) return data - def get_order_with_http_info(self, order_hash, **kwargs): # noqa: E501 - """get_order # noqa: E501 + def get_order_with_http_info(self, order_hash, **kwargs): + """get_order - Retrieves the 0x order with meta info that is associated with the hash. # noqa: E501 + Retrieves the 0x order with meta info that is associated with the hash. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_order_with_http_info(order_hash, async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.get_order_with_http_info(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param str order_hash: The hash of the desired 0x order. (required) :param float network_id: The id of the Ethereum network - :return: RelayerApiOrderSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiOrderSchema`. + If the method is called asynchronously returns the request thread. """ local_var_params = locals() - all_params = ["order_hash", "network_id"] # noqa: E501 + all_params = ["order_hash", "network_id"] all_params.append("async_req") all_params.append("_return_http_data_only") all_params.append("_preload_content") @@ -336,21 +330,17 @@ class DefaultApi(object): ): raise ValueError( "Missing the required parameter `order_hash` when calling `get_order`" - ) # noqa: E501 + ) collection_formats = {} path_params = {} if "order_hash" in local_var_params: - path_params["orderHash"] = local_var_params[ - "order_hash" - ] # noqa: E501 + path_params["orderHash"] = local_var_params["order_hash"] query_params = [] if "network_id" in local_var_params: - query_params.append( - ("networkId", local_var_params["network_id"]) - ) # noqa: E501 + query_params.append(("networkId", local_var_params["network_id"])) header_params = {} @@ -361,10 +351,10 @@ class DefaultApi(object): # HTTP header `Accept` header_params["Accept"] = self.api_client.select_header_accept( ["application/json"] - ) # noqa: E501 + ) # Authentication setting - auth_settings = [] # noqa: E501 + auth_settings = [] return self.api_client.call_api( "/v2/order/{orderHash}", @@ -375,65 +365,84 @@ class DefaultApi(object): body=body_params, post_params=form_params, files=local_var_files, - response_type="RelayerApiOrderSchema", # noqa: E501 + response_type="RelayerApiOrderSchema", auth_settings=auth_settings, async_req=local_var_params.get("async_req"), _return_http_data_only=local_var_params.get( "_return_http_data_only" - ), # noqa: E501 + ), _preload_content=local_var_params.get("_preload_content", True), _request_timeout=local_var_params.get("_request_timeout"), collection_formats=collection_formats, ) - def get_order_config(self, **kwargs): # noqa: E501 - """get_order_config # noqa: E501 + def get_order_config(self, **kwargs): + """get_order_config - Relayers have full discretion over the orders that they are willing to host on their orderbooks (e.g what fees they charge, etc...). In order for traders to discover their requirements programmatically, they can send an incomplete order to this endpoint and receive the missing fields, specifc to that order. This gives relayers a large amount of flexibility to tailor fees to unique traders, trading pairs and volume amounts. Submit a partial order and receive information required to complete the order: `senderAddress`, `feeRecipientAddress`, `makerFee`, `takerFee`. # noqa: E501 + Relayers have full discretion over the orders that they are willing + to host on their orderbooks (e.g what fees they charge, etc...). In + order for traders to discover their requirements programmatically, + they can send an incomplete order to this endpoint and receive the + missing fields, specifc to that order. This gives relayers a large + amount of flexibility to tailor fees to unique traders, trading pairs + and volume amounts. Submit a partial order and receive information + required to complete the order: `senderAddress`, + `feeRecipientAddress`, `makerFee`, `takerFee`. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_order_config(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.get_order_config(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param float network_id: The id of the Ethereum network - :param RelayerApiOrderConfigPayloadSchema relayer_api_order_config_payload_schema: The fields of a 0x order the relayer may want to decide what configuration to send back. - :return: RelayerApiOrderConfigResponseSchema - If the method is called asynchronously, - returns the request thread. + :param relayer_api_order_config_payload_schema: instance of + :class:`RelayerApiOrderConfigPayloadSchema`. The fields of a 0x + order the relayer may want to decide what configuration to send + back. + + :return: :class:`RelayerApiOrderConfigResponseSchema`. + If the method is called asynchronously returns the request thread. """ kwargs["_return_http_data_only"] = True if kwargs.get("async_req"): - return self.get_order_config_with_http_info(**kwargs) # noqa: E501 + return self.get_order_config_with_http_info(**kwargs) else: - (data) = self.get_order_config_with_http_info( - **kwargs - ) # noqa: E501 + (data) = self.get_order_config_with_http_info(**kwargs) return data - def get_order_config_with_http_info(self, **kwargs): # noqa: E501 - """get_order_config # noqa: E501 + def get_order_config_with_http_info(self, **kwargs): + """get_order_config - Relayers have full discretion over the orders that they are willing to host on their orderbooks (e.g what fees they charge, etc...). In order for traders to discover their requirements programmatically, they can send an incomplete order to this endpoint and receive the missing fields, specifc to that order. This gives relayers a large amount of flexibility to tailor fees to unique traders, trading pairs and volume amounts. Submit a partial order and receive information required to complete the order: `senderAddress`, `feeRecipientAddress`, `makerFee`, `takerFee`. # noqa: E501 + Relayers have full discretion over the orders that they are willing + to host on their orderbooks (e.g what fees they charge, etc...). In + order for traders to discover their requirements programmatically, + they can send an incomplete order to this endpoint and receive the + missing fields, specifc to that order. This gives relayers a large + amount of flexibility to tailor fees to unique traders, trading pairs + and volume amounts. Submit a partial order and receive information + required to complete the order: `senderAddress`, + `feeRecipientAddress`, `makerFee`, `takerFee`. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_order_config_with_http_info(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.get_order_config_with_http_info(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param float network_id: The id of the Ethereum network - :param RelayerApiOrderConfigPayloadSchema relayer_api_order_config_payload_schema: The fields of a 0x order the relayer may want to decide what configuration to send back. - :return: RelayerApiOrderConfigResponseSchema - If the method is called asynchronously, - returns the request thread. + :param relayer_api_order_config_payload_schema: instance of + :class: `RelayerApiOrderConfigPayloadSchema`. The fields of a 0x + order the relayer may want to decide what configuration to send + back. + + :return: :class:`RelayerApiOrderConfigResponseSchema`. + If the method is called asynchronously returns the request thread. """ local_var_params = locals() - all_params = [ - "network_id", - "relayer_api_order_config_payload_schema", - ] # noqa: E501 + all_params = ["network_id", "relayer_api_order_config_payload_schema"] all_params.append("async_req") all_params.append("_return_http_data_only") all_params.append("_preload_content") @@ -454,9 +463,7 @@ class DefaultApi(object): query_params = [] if "network_id" in local_var_params: - query_params.append( - ("networkId", local_var_params["network_id"]) - ) # noqa: E501 + query_params.append(("networkId", local_var_params["network_id"])) header_params = {} @@ -471,17 +478,15 @@ class DefaultApi(object): # HTTP header `Accept` header_params["Accept"] = self.api_client.select_header_accept( ["application/json"] - ) # noqa: E501 + ) # HTTP header `Content-Type` header_params[ "Content-Type" - ] = self.api_client.select_header_content_type( # noqa: E501 - ["application/json"] - ) # noqa: E501 + ] = self.api_client.select_header_content_type(["application/json"]) # Authentication setting - auth_settings = [] # noqa: E501 + auth_settings = [] return self.api_client.call_api( "/v2/order_config", @@ -492,69 +497,101 @@ class DefaultApi(object): body=body_params, post_params=form_params, files=local_var_files, - response_type="RelayerApiOrderConfigResponseSchema", # noqa: E501 + response_type="RelayerApiOrderConfigResponseSchema", auth_settings=auth_settings, async_req=local_var_params.get("async_req"), _return_http_data_only=local_var_params.get( "_return_http_data_only" - ), # noqa: E501 + ), _preload_content=local_var_params.get("_preload_content", True), _request_timeout=local_var_params.get("_request_timeout"), collection_formats=collection_formats, ) - def get_orderbook( - self, base_asset_data, quote_asset_data, **kwargs - ): # noqa: E501 - """get_orderbook # noqa: E501 + def get_orderbook(self, base_asset_data, quote_asset_data, **kwargs): + """get_orderbook - Retrieves the orderbook for a given asset pair. This endpoint should be [paginated](#section/Pagination). Bids will be sorted in descending order by price, and asks will be sorted in ascending order by price. Within the price sorted orders, the orders are further sorted by _taker fee price_ which is defined as the **takerFee** divided by **takerTokenAmount**. After _taker fee price_, orders are to be sorted by expiration in ascending order. The way pagination works for this endpoint is that the **page** and **perPage** query params apply to both `bids` and `asks` collections, and if `page` * `perPage` > `total` for a certain collection, the `records` for that collection should just be empty. # noqa: E501 + Retrieves the orderbook for a given asset pair. This endpoint should + be paginated. Bids will be sorted in + descending order by price, and asks will be sorted in ascending order + by price. Within the price sorted orders, the orders are further + sorted by **taker fee price** which is defined as the **takerFee** + divided by **takerTokenAmount**. After **taker fee price**, orders are + to be sorted by expiration in ascending order. The way pagination + works for this endpoint is that the **page** and **perPage** query + params apply to both `bids` and `asks` collections, and if `page` * + `perPage` = `total` for a certain collection, the `records` for that + collection should just be empty. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_orderbook(base_asset_data, quote_asset_data, async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool - :param str base_asset_data: assetData (makerAssetData or takerAssetData) designated as the base currency in the [currency pair calculation](https://en.wikipedia.org/wiki/Currency_pair) of price. (required) - :param str quote_asset_data: assetData (makerAssetData or takerAssetData) designated as the quote currency in the currency pair calculation of price (required). (required) + >>> thread = api.get_orderbook(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. + :param str base_asset_data: assetData (makerAssetData or + takerAssetData) designated as the base currency in the + `currency pair calculation + `__ + of price. (required) + :param str quote_asset_data: assetData (makerAssetData or + takerAssetData) designated as the quote currency in the currency + pair calculation of price. (required) :param float network_id: The id of the Ethereum network :param float page: The number of the page to request in the collection. :param float per_page: The number of records to return per page. - :return: RelayerApiOrderbookResponseSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiOrderbookResponseSchema`. + If the method is called asynchronously, returns the request thread. """ kwargs["_return_http_data_only"] = True if kwargs.get("async_req"): return self.get_orderbook_with_http_info( base_asset_data, quote_asset_data, **kwargs - ) # noqa: E501 + ) else: (data) = self.get_orderbook_with_http_info( base_asset_data, quote_asset_data, **kwargs - ) # noqa: E501 + ) return data def get_orderbook_with_http_info( self, base_asset_data, quote_asset_data, **kwargs - ): # noqa: E501 - """get_orderbook # noqa: E501 + ): + """get_orderbook - Retrieves the orderbook for a given asset pair. This endpoint should be [paginated](#section/Pagination). Bids will be sorted in descending order by price, and asks will be sorted in ascending order by price. Within the price sorted orders, the orders are further sorted by _taker fee price_ which is defined as the **takerFee** divided by **takerTokenAmount**. After _taker fee price_, orders are to be sorted by expiration in ascending order. The way pagination works for this endpoint is that the **page** and **perPage** query params apply to both `bids` and `asks` collections, and if `page` * `perPage` > `total` for a certain collection, the `records` for that collection should just be empty. # noqa: E501 + Retrieves the orderbook for a given asset pair. This endpoint should + be paginated. Bids will be sorted in + descending order by price, and asks will be sorted in ascending order + by price. Within the price sorted orders, the orders are further + sorted by **taker fee price** which is defined as the **takerFee** + divided by **takerTokenAmount**. After **taker fee price**, orders are + to be sorted by expiration in ascending order. The way pagination + works for this endpoint is that the **page** and **perPage** query + params apply to both `bids` and `asks` collections, and if `page` * + `perPage` = `total` for a certain collection, the `records` for that + collection should just be empty. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_orderbook_with_http_info(base_asset_data, quote_asset_data, async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool - :param str base_asset_data: assetData (makerAssetData or takerAssetData) designated as the base currency in the [currency pair calculation](https://en.wikipedia.org/wiki/Currency_pair) of price. (required) - :param str quote_asset_data: assetData (makerAssetData or takerAssetData) designated as the quote currency in the currency pair calculation of price (required). (required) + >>> thread = api.get_orderbook_with_http_info(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. + :param str base_asset_data: assetData (makerAssetData or + takerAssetData) designated as the base currency in the + `currency pair calculation + `__ + of price. (required) + :param str quote_asset_data: assetData (makerAssetData or + takerAssetData) designated as the quote currency in the currency + pair calculation of price. (required) :param float network_id: The id of the Ethereum network :param float page: The number of the page to request in the collection. :param float per_page: The number of records to return per page. - :return: RelayerApiOrderbookResponseSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiOrderbookResponseSchema`. + If the method is called asynchronously, returns the request thread. """ local_var_params = locals() @@ -565,7 +602,7 @@ class DefaultApi(object): "network_id", "page", "per_page", - ] # noqa: E501 + ] all_params.append("async_req") all_params.append("_return_http_data_only") all_params.append("_preload_content") @@ -585,16 +622,18 @@ class DefaultApi(object): or local_var_params["base_asset_data"] is None ): raise ValueError( - "Missing the required parameter `base_asset_data` when calling `get_orderbook`" - ) # noqa: E501 + "Missing the required parameter `base_asset_data`" + "when calling `get_orderbook`" + ) # verify the required parameter 'quote_asset_data' is set if ( "quote_asset_data" not in local_var_params or local_var_params["quote_asset_data"] is None ): raise ValueError( - "Missing the required parameter `quote_asset_data` when calling `get_orderbook`" - ) # noqa: E501 + "Missing the required parameter `quote_asset_data`" + " when calling `get_orderbook`" + ) collection_formats = {} @@ -604,23 +643,17 @@ class DefaultApi(object): if "base_asset_data" in local_var_params: query_params.append( ("baseAssetData", local_var_params["base_asset_data"]) - ) # noqa: E501 + ) if "quote_asset_data" in local_var_params: query_params.append( ("quoteAssetData", local_var_params["quote_asset_data"]) - ) # noqa: E501 + ) if "network_id" in local_var_params: - query_params.append( - ("networkId", local_var_params["network_id"]) - ) # noqa: E501 + query_params.append(("networkId", local_var_params["network_id"])) if "page" in local_var_params: - query_params.append( - ("page", local_var_params["page"]) - ) # noqa: E501 + query_params.append(("page", local_var_params["page"])) if "per_page" in local_var_params: - query_params.append( - ("perPage", local_var_params["per_page"]) - ) # noqa: E501 + query_params.append(("perPage", local_var_params["per_page"])) header_params = {} @@ -631,10 +664,10 @@ class DefaultApi(object): # HTTP header `Accept` header_params["Accept"] = self.api_client.select_header_accept( ["application/json"] - ) # noqa: E501 + ) # Authentication setting - auth_settings = [] # noqa: E501 + auth_settings = [] return self.api_client.call_api( "/v2/orderbook", @@ -645,83 +678,163 @@ class DefaultApi(object): body=body_params, post_params=form_params, files=local_var_files, - response_type="RelayerApiOrderbookResponseSchema", # noqa: E501 + response_type="RelayerApiOrderbookResponseSchema", auth_settings=auth_settings, async_req=local_var_params.get("async_req"), _return_http_data_only=local_var_params.get( "_return_http_data_only" - ), # noqa: E501 + ), _preload_content=local_var_params.get("_preload_content", True), _request_timeout=local_var_params.get("_request_timeout"), collection_formats=collection_formats, ) - def get_orders(self, **kwargs): # noqa: E501 - """get_orders # noqa: E501 + def get_orders(self, **kwargs): + """get_orders - Retrieves a list of orders given query parameters. This endpoint should be [paginated](#section/Pagination). For querying an entire orderbook snapshot, the [orderbook endpoint](#operation/getOrderbook) is recommended. If both makerAssetData and takerAssetData are specified, returned orders will be sorted by price determined by (takerTokenAmount/makerTokenAmount) in ascending order. By default, orders returned by this endpoint are unsorted. # noqa: E501 + Retrieves a list of orders given query parameters. This endpoint + should be paginated. For querying an entire + orderbook snapshot, the orderbook endpoint + is recommended. If both makerAssetData and takerAssetData are + specified, returned orders will be sorted by price determined by + (takerTokenAmount/makerTokenAmount) in ascending order. By default, + orders returned by this endpoint are unsorted. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_orders(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool - :param str maker_asset_proxy_id: The maker [asset proxy id](https://0xproject.com/docs/0x.js#types-AssetProxyId) (example: \"0xf47261b0\" for ERC20, \"0x02571792\" for ERC721). - :param str taker_asset_proxy_id: The taker asset [asset proxy id](https://0xproject.com/docs/0x.js#types-AssetProxyId) (example: \"0xf47261b0\" for ERC20, \"0x02571792\" for ERC721). + >>> thread = api.get_orders(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. + :param str maker_asset_proxy_id: The maker + `asset proxy id + `__ + (example: "0xf47261b0" for ERC20, "0x02571792" for ERC721). + :param str taker_asset_proxy_id: The taker asset + `asset proxy id + `__ + (example: "0xf47261b0" for ERC20, "0x02571792" for ERC721). :param str maker_asset_address: The contract address for the maker asset. :param str taker_asset_address: The contract address for the taker asset. - :param str exchange_address: Same as exchangeAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str sender_address: Same as senderAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str maker_asset_data: Same as makerAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str taker_asset_data: Same as takerAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str trader_asset_data: Same as traderAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str maker_address: Same as makerAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str taker_address: Same as takerAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str trader_address: Same as traderAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str fee_recipient_address: Same as feeRecipientAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) + :param str exchange_address: Same as exchangeAddress in the + `0x Protocol v2 Specification + `__ + :param str sender_address: Same as senderAddress in the + `0x Protocol v2 Specification + `__ + :param str maker_asset_data: Same as makerAssetData in the + `0x Protocol v2 Specification + `__ + :param str taker_asset_data: Same as takerAssetData in the + `0x Protocol v2 Specification + `__ + :param str trader_asset_data: Same as traderAssetData in the [0x + `0x Protocol v2 Specification + `__ + :param str maker_address: Same as makerAddress in the + `0x Protocol v2 Specification + `__ + :param str taker_address: Same as takerAddress in the + `0x Protocol v2 Specification + `__ + :param str trader_address: Same as traderAddress in the + `0x Protocol v2 Specification + `__ + :param str fee_recipient_address: Same as feeRecipientAddress in the + `0x Protocol v2 Specification + `__ :param float network_id: The id of the Ethereum network :param float page: The number of the page to request in the collection. :param float per_page: The number of records to return per page. - :return: RelayerApiOrdersResponseSchema - If the method is called asynchronously, - returns the request thread. + + :return: :class:`RelayerApiOrdersResponseSchema`. + If the method is called asynchronously, returns the request thread. """ kwargs["_return_http_data_only"] = True if kwargs.get("async_req"): - return self.get_orders_with_http_info(**kwargs) # noqa: E501 + return self.get_orders_with_http_info(**kwargs) else: - (data) = self.get_orders_with_http_info(**kwargs) # noqa: E501 + (data) = self.get_orders_with_http_info(**kwargs) return data - def get_orders_with_http_info(self, **kwargs): # noqa: E501 - """get_orders # noqa: E501 + def get_orders_with_http_info(self, **kwargs): + """get_orders - Retrieves a list of orders given query parameters. This endpoint should be [paginated](#section/Pagination). For querying an entire orderbook snapshot, the [orderbook endpoint](#operation/getOrderbook) is recommended. If both makerAssetData and takerAssetData are specified, returned orders will be sorted by price determined by (takerTokenAmount/makerTokenAmount) in ascending order. By default, orders returned by this endpoint are unsorted. # noqa: E501 + Retrieves a list of orders given query parameters. This endpoint + should be paginated. For querying an entire + orderbook snapshot, the orderbook endpoint + is recommended. If both makerAssetData and takerAssetData are + specified, returned orders will be sorted by price determined by + (takerTokenAmount/makerTokenAmount) in ascending order. By default, + orders returned by this endpoint are unsorted. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.get_orders_with_http_info(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool - :param str maker_asset_proxy_id: The maker [asset proxy id](https://0xproject.com/docs/0x.js#types-AssetProxyId) (example: \"0xf47261b0\" for ERC20, \"0x02571792\" for ERC721). - :param str taker_asset_proxy_id: The taker asset [asset proxy id](https://0xproject.com/docs/0x.js#types-AssetProxyId) (example: \"0xf47261b0\" for ERC20, \"0x02571792\" for ERC721). + >>> thread = api.get_orders_with_http_info(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. + :param str maker_asset_proxy_id: The maker + `asset proxy id + `__ + (example: "0xf47261b0" for ERC20, "0x02571792" for ERC721). + :param str taker_asset_proxy_id: The taker asset + `asset proxy id + `__ + (example: "0xf47261b0" for ERC20, "0x02571792" for ERC721). :param str maker_asset_address: The contract address for the maker asset. :param str taker_asset_address: The contract address for the taker asset. - :param str exchange_address: Same as exchangeAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str sender_address: Same as senderAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str maker_asset_data: Same as makerAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str taker_asset_data: Same as takerAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str trader_asset_data: Same as traderAssetData in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str maker_address: Same as makerAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str taker_address: Same as takerAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str trader_address: Same as traderAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) - :param str fee_recipient_address: Same as feeRecipientAddress in the [0x Protocol v2 Specification](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#order-message-format) + :param str exchange_address: Same as exchangeAddress in the [0x + `0x Protocol v2 Specification + `__ + :param str sender_address: Same as senderAddress in the + `0x Protocol v2 Specification + `__ + :param str maker_asset_data: Same as makerAssetData in the + `0x Protocol v2 Specification + `__ + :param str taker_asset_data: Same as takerAssetData in the + `0x Protocol v2 Specification + `__ + :param str trader_asset_data: Same as traderAssetData in the + `0x Protocol v2 Specification + `__ + :param str maker_address: Same as makerAddress in the + `0x Protocol v2 Specification + `__ + :param str taker_address: Same as takerAddress in the + `0x Protocol v2 Specification + `__ + :param str trader_address: Same as traderAddress in the + `0x Protocol v2 Specification + `__ + :param str fee_recipient_address: Same as feeRecipientAddress in the + `0x Protocol v2 Specification + `__ :param float network_id: The id of the Ethereum network :param float page: The number of the page to request in the collection. :param float per_page: The number of records to return per page. - :return: RelayerApiOrdersResponseSchema - If the method is called asynchronously, - returns the request thread. + + :return: RelayerApiOrdersResponseSchema. + If the method is called asynchronously, returns the request thread. """ local_var_params = locals() @@ -743,7 +856,7 @@ class DefaultApi(object): "network_id", "page", "per_page", - ] # noqa: E501 + ] all_params.append("async_req") all_params.append("_return_http_data_only") all_params.append("_preload_content") @@ -766,70 +879,64 @@ class DefaultApi(object): if "maker_asset_proxy_id" in local_var_params: query_params.append( ("makerAssetProxyId", local_var_params["maker_asset_proxy_id"]) - ) # noqa: E501 + ) if "taker_asset_proxy_id" in local_var_params: query_params.append( ("takerAssetProxyId", local_var_params["taker_asset_proxy_id"]) - ) # noqa: E501 + ) if "maker_asset_address" in local_var_params: query_params.append( ("makerAssetAddress", local_var_params["maker_asset_address"]) - ) # noqa: E501 + ) if "taker_asset_address" in local_var_params: query_params.append( ("takerAssetAddress", local_var_params["taker_asset_address"]) - ) # noqa: E501 + ) if "exchange_address" in local_var_params: query_params.append( ("exchangeAddress", local_var_params["exchange_address"]) - ) # noqa: E501 + ) if "sender_address" in local_var_params: query_params.append( ("senderAddress", local_var_params["sender_address"]) - ) # noqa: E501 + ) if "maker_asset_data" in local_var_params: query_params.append( ("makerAssetData", local_var_params["maker_asset_data"]) - ) # noqa: E501 + ) if "taker_asset_data" in local_var_params: query_params.append( ("takerAssetData", local_var_params["taker_asset_data"]) - ) # noqa: E501 + ) if "trader_asset_data" in local_var_params: query_params.append( ("traderAssetData", local_var_params["trader_asset_data"]) - ) # noqa: E501 + ) if "maker_address" in local_var_params: query_params.append( ("makerAddress", local_var_params["maker_address"]) - ) # noqa: E501 + ) if "taker_address" in local_var_params: query_params.append( ("takerAddress", local_var_params["taker_address"]) - ) # noqa: E501 + ) if "trader_address" in local_var_params: query_params.append( ("traderAddress", local_var_params["trader_address"]) - ) # noqa: E501 + ) if "fee_recipient_address" in local_var_params: query_params.append( ( "feeRecipientAddress", local_var_params["fee_recipient_address"], ) - ) # noqa: E501 + ) if "network_id" in local_var_params: - query_params.append( - ("networkId", local_var_params["network_id"]) - ) # noqa: E501 + query_params.append(("networkId", local_var_params["network_id"])) if "page" in local_var_params: - query_params.append( - ("page", local_var_params["page"]) - ) # noqa: E501 + query_params.append(("page", local_var_params["page"])) if "per_page" in local_var_params: - query_params.append( - ("perPage", local_var_params["per_page"]) - ) # noqa: E501 + query_params.append(("perPage", local_var_params["per_page"])) header_params = {} @@ -840,10 +947,10 @@ class DefaultApi(object): # HTTP header `Accept` header_params["Accept"] = self.api_client.select_header_accept( ["application/json"] - ) # noqa: E501 + ) # Authentication setting - auth_settings = [] # noqa: E501 + auth_settings = [] return self.api_client.call_api( "/v2/orders", @@ -854,60 +961,64 @@ class DefaultApi(object): body=body_params, post_params=form_params, files=local_var_files, - response_type="RelayerApiOrdersResponseSchema", # noqa: E501 + response_type="RelayerApiOrdersResponseSchema", auth_settings=auth_settings, async_req=local_var_params.get("async_req"), _return_http_data_only=local_var_params.get( "_return_http_data_only" - ), # noqa: E501 + ), _preload_content=local_var_params.get("_preload_content", True), _request_timeout=local_var_params.get("_request_timeout"), collection_formats=collection_formats, ) - def post_order(self, **kwargs): # noqa: E501 - """post_order # noqa: E501 + def post_order(self, **kwargs): + """post_order - Submit a signed order to the relayer. # noqa: E501 + Submit a signed order to the relayer. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.post_order(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.post_order(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param float network_id: The id of the Ethereum network - :param SignedOrderSchema signed_order_schema: A valid signed 0x order based on the schema. - :return: None - If the method is called asynchronously, - returns the request thread. + :param signed_order_schema: Instance of :class:`SignedOrderSchema`. + A valid signed 0x order based on the schema. + + :return: None. + If the method is called asynchronously, returns the request thread. """ kwargs["_return_http_data_only"] = True if kwargs.get("async_req"): - return self.post_order_with_http_info(**kwargs) # noqa: E501 + return self.post_order_with_http_info(**kwargs) else: - (data) = self.post_order_with_http_info(**kwargs) # noqa: E501 + (data) = self.post_order_with_http_info(**kwargs) return data - def post_order_with_http_info(self, **kwargs): # noqa: E501 - """post_order # noqa: E501 + def post_order_with_http_info(self, **kwargs): + """post_order - Submit a signed order to the relayer. # noqa: E501 + Submit a signed order to the relayer. This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - >>> thread = api.post_order_with_http_info(async_req=True) - >>> result = thread.get() + asynchronous HTTP request, please pass `async_req` = **True** - :param async_req bool + >>> thread = api.post_order_with_http_info(async_req=True) # doctest: +SKIP + >>> result = thread.get() # doctest: +SKIP + + :param bool async_req: Whether request should be asynchronous. :param float network_id: The id of the Ethereum network - :param SignedOrderSchema signed_order_schema: A valid signed 0x order based on the schema. - :return: None - If the method is called asynchronously, - returns the request thread. + :param signed_order_schema: Instance of :class:`SignedOrderSchema` + A valid signed 0x order based on the schema. + + :return: None. + If the method is called asynchronously, returns the request thread. """ local_var_params = locals() - all_params = ["network_id", "signed_order_schema"] # noqa: E501 + all_params = ["network_id", "signed_order_schema"] all_params.append("async_req") all_params.append("_return_http_data_only") all_params.append("_preload_content") @@ -928,9 +1039,7 @@ class DefaultApi(object): query_params = [] if "network_id" in local_var_params: - query_params.append( - ("networkId", local_var_params["network_id"]) - ) # noqa: E501 + query_params.append(("networkId", local_var_params["network_id"])) header_params = {} @@ -943,17 +1052,15 @@ class DefaultApi(object): # HTTP header `Accept` header_params["Accept"] = self.api_client.select_header_accept( ["application/json"] - ) # noqa: E501 + ) # HTTP header `Content-Type` header_params[ "Content-Type" - ] = self.api_client.select_header_content_type( # noqa: E501 - ["application/json"] - ) # noqa: E501 + ] = self.api_client.select_header_content_type(["application/json"]) # Authentication setting - auth_settings = [] # noqa: E501 + auth_settings = [] return self.api_client.call_api( "/v2/order", @@ -964,12 +1071,12 @@ class DefaultApi(object): body=body_params, post_params=form_params, files=local_var_files, - response_type=None, # noqa: E501 + response_type=None, auth_settings=auth_settings, async_req=local_var_params.get("async_req"), _return_http_data_only=local_var_params.get( "_return_http_data_only" - ), # noqa: E501 + ), _preload_content=local_var_params.get("_preload_content", True), _request_timeout=local_var_params.get("_request_timeout"), collection_formats=collection_formats, diff --git a/python-packages/sra_client/sra_client/api_client.py b/python-packages/sra_client/sra_client/api_client.py index 6139fdb425..ad2b6385bf 100644 --- a/python-packages/sra_client/sra_client/api_client.py +++ b/python-packages/sra_client/sra_client/api_client.py @@ -207,8 +207,7 @@ class ApiClient(object): If obj is None, return None. If obj is str, int, long, float, bool, return directly. - If obj is datetime.datetime, datetime.date - convert to string in iso8601 format. + If obj is datetime.datetime, datetime.date convert to string in iso8601 format. If obj is list, sanitize each element in the list. If obj is dict, return the dict. If obj is OpenAPI model, return the properties dict. diff --git a/python-packages/sra_client/sra_client/models/order_schema.py b/python-packages/sra_client/sra_client/models/order_schema.py index 48fef39d84..1eeff510d1 100644 --- a/python-packages/sra_client/sra_client/models/order_schema.py +++ b/python-packages/sra_client/sra_client/models/order_schema.py @@ -185,10 +185,10 @@ class OrderSchema(object): "Invalid value for `maker_fee`, must not be `None`" ) # noqa: E501 if maker_fee is not None and not re.search( - r"^\\d+$", maker_fee + r"^\d+$", maker_fee ): # noqa: E501 raise ValueError( - r"Invalid value for `maker_fee`, must be a follow pattern or equal to `/^\\d+$/`" + r"Invalid value for `maker_fee`, must be a follow pattern or equal to `/^\d+$/`" ) # noqa: E501 self._maker_fee = maker_fee @@ -216,10 +216,10 @@ class OrderSchema(object): "Invalid value for `taker_fee`, must not be `None`" ) # noqa: E501 if taker_fee is not None and not re.search( - r"^\\d+$", taker_fee + r"^\d+$", taker_fee ): # noqa: E501 raise ValueError( - r"Invalid value for `taker_fee`, must be a follow pattern or equal to `/^\\d+$/`" + r"Invalid value for `taker_fee`, must be a follow pattern or equal to `/^\d+$/`" ) # noqa: E501 self._taker_fee = taker_fee @@ -278,10 +278,10 @@ class OrderSchema(object): "Invalid value for `maker_asset_amount`, must not be `None`" ) # noqa: E501 if maker_asset_amount is not None and not re.search( - r"^\\d+$", maker_asset_amount + r"^\d+$", maker_asset_amount ): # noqa: E501 raise ValueError( - r"Invalid value for `maker_asset_amount`, must be a follow pattern or equal to `/^\\d+$/`" + r"Invalid value for `maker_asset_amount`, must be a follow pattern or equal to `/^\d+$/`" ) # noqa: E501 self._maker_asset_amount = maker_asset_amount @@ -309,10 +309,10 @@ class OrderSchema(object): "Invalid value for `taker_asset_amount`, must not be `None`" ) # noqa: E501 if taker_asset_amount is not None and not re.search( - r"^\\d+$", taker_asset_amount + r"^\d+$", taker_asset_amount ): # noqa: E501 raise ValueError( - r"Invalid value for `taker_asset_amount`, must be a follow pattern or equal to `/^\\d+$/`" + r"Invalid value for `taker_asset_amount`, must be a follow pattern or equal to `/^\d+$/`" ) # noqa: E501 self._taker_asset_amount = taker_asset_amount @@ -401,9 +401,9 @@ class OrderSchema(object): raise ValueError( "Invalid value for `salt`, must not be `None`" ) # noqa: E501 - if salt is not None and not re.search(r"^\\d+$", salt): # noqa: E501 + if salt is not None and not re.search(r"^\d+$", salt): # noqa: E501 raise ValueError( - r"Invalid value for `salt`, must be a follow pattern or equal to `/^\\d+$/`" + r"Invalid value for `salt`, must be a follow pattern or equal to `/^\d+$/`" ) # noqa: E501 self._salt = salt @@ -493,10 +493,10 @@ class OrderSchema(object): "Invalid value for `expiration_time_seconds`, must not be `None`" ) # noqa: E501 if expiration_time_seconds is not None and not re.search( - r"^\\d+$", expiration_time_seconds + r"^\d+$", expiration_time_seconds ): # noqa: E501 raise ValueError( - r"Invalid value for `expiration_time_seconds`, must be a follow pattern or equal to `/^\\d+$/`" + r"Invalid value for `expiration_time_seconds`, must be a follow pattern or equal to `/^\d+$/`" ) # noqa: E501 self._expiration_time_seconds = expiration_time_seconds diff --git a/python-packages/sra_client/test/__init__.py b/python-packages/sra_client/test/__init__.py index e69de29bb2..789ac3d7e7 100644 --- a/python-packages/sra_client/test/__init__.py +++ b/python-packages/sra_client/test/__init__.py @@ -0,0 +1 @@ +"""Test for sra_client.""" diff --git a/python-packages/sra_client/test/test_default_api.py b/python-packages/sra_client/test/test_default_api.py index d23c6173fc..ec583c7b5b 100644 --- a/python-packages/sra_client/test/test_default_api.py +++ b/python-packages/sra_client/test/test_default_api.py @@ -1,3 +1,4 @@ +"""Test the default api client""" # coding: utf-8 @@ -5,30 +6,92 @@ from __future__ import absolute_import import unittest -import sra_client -from sra_client.api.default_api import DefaultApi # noqa: E501 -from sra_client.models.relayer_api_asset_data_pairs_response_schema import ( - RelayerApiAssetDataPairsResponseSchema -) -from sra_client.rest import ApiException +from sra_client import ApiClient, Configuration +from sra_client.api import DefaultApi class TestDefaultApi(unittest.TestCase): """DefaultApi unit test stubs""" def setUp(self): - self.api = sra_client.api.default_api.DefaultApi() # noqa: E501 + config = Configuration() + config.host = "http://localhost:3000" + self.api = DefaultApi(ApiClient(config)) def tearDown(self): pass + # pylint: disable=too-many-locals def test_get_asset_pairs(self): """Test case for get_asset_pairs """ - expected = RelayerApiAssetDataPairsResponseSchema([]) + expected = { + "records": [ + { + "assetDataA": { + "assetData": "0xf47261b0000000000000000000000000" + "d0a1e359811322d97991e03f863a0c30c2cf029c", + "maxAmount": "115792089237316195423570985008687907853" + "269984665640564039457584007913129639936", + "minAmount": "0", + "precision": 18, + }, + "assetDataB": { + "assetData": "0xf47261b0000000000000000000000000" + "2002d3812f58e35f0ea1ffbf80a75a38c32175fa", + "maxAmount": "115792089237316195423570985008687907853" + "269984665640564039457584007913129639936", + "minAmount": "0", + "precision": 18, + }, + } + ] + } + actual = self.api.get_asset_pairs() - self.assertEqual(actual, expected) + + acutal_asset_data_a = actual.records[0]["assetDataA"]["assetData"] + expected_asset_data_a = expected["records"][0]["assetDataA"][ + "assetData" + ] + self.assertEqual(acutal_asset_data_a, expected_asset_data_a) + acutal_max_amount_a = actual.records[0]["assetDataA"]["maxAmount"] + expected_max_amount_a = expected["records"][0]["assetDataA"][ + "maxAmount" + ] + self.assertEqual(acutal_max_amount_a, expected_max_amount_a) + acutal_min_amount_a = actual.records[0]["assetDataA"]["minAmount"] + expected_min_amount_a = expected["records"][0]["assetDataA"][ + "minAmount" + ] + self.assertEqual(acutal_min_amount_a, expected_min_amount_a) + acutal_precision_a = actual.records[0]["assetDataA"]["precision"] + expected_precision_a = expected["records"][0]["assetDataA"][ + "precision" + ] + self.assertEqual(acutal_precision_a, expected_precision_a) + + acutal_asset_data_b = actual.records[0]["assetDataB"]["assetData"] + expected_asset_data_b = expected["records"][0]["assetDataB"][ + "assetData" + ] + self.assertEqual(acutal_asset_data_b, expected_asset_data_b) + acutal_max_amount_b = actual.records[0]["assetDataB"]["maxAmount"] + expected_max_amount_b = expected["records"][0]["assetDataB"][ + "maxAmount" + ] + self.assertEqual(acutal_max_amount_b, expected_max_amount_b) + acutal_min_amount_b = actual.records[0]["assetDataB"]["minAmount"] + expected_min_amount_b = expected["records"][0]["assetDataB"][ + "minAmount" + ] + self.assertEqual(acutal_min_amount_b, expected_min_amount_b) + acutal_precision_b = actual.records[0]["assetDataB"]["precision"] + expected_precision_b = expected["records"][0]["assetDataB"][ + "precision" + ] + self.assertEqual(acutal_precision_b, expected_precision_b) if __name__ == "__main__": diff --git a/yarn.lock b/yarn.lock index 4f342df7da..1928b64de2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -489,6 +489,22 @@ ethers "~4.0.4" lodash "^4.17.11" +"@0x/contracts-asset-proxy@^1.0.2": + version "1.0.9" + resolved "https://registry.npmjs.org/@0x/contracts-asset-proxy/-/contracts-asset-proxy-1.0.9.tgz#3a48e64b93ddc642834bde1bd09cdd84ca688a2b" + dependencies: + "@0x/base-contract" "^5.0.2" + "@0x/contracts-erc20" "^1.0.9" + "@0x/contracts-erc721" "^1.0.9" + "@0x/contracts-utils" "2.0.1" + "@0x/order-utils" "^7.0.2" + "@0x/types" "^2.1.1" + "@0x/typescript-typings" "^4.1.0" + "@0x/utils" "^4.2.2" + "@0x/web3-wrapper" "^6.0.2" + ethereum-types "^2.1.0" + lodash "^4.17.11" + "@0x/contracts-erc20@1.0.8": version "1.0.8" resolved "https://registry.npmjs.org/@0x/contracts-erc20/-/contracts-erc20-1.0.8.tgz#882f3acf1a44148800d9bef692aa377627df9ace" @@ -503,6 +519,20 @@ ethereum-types "^2.1.0" lodash "^4.17.11" +"@0x/contracts-erc20@^1.0.2", "@0x/contracts-erc20@^1.0.9": + version "1.0.9" + resolved "https://registry.npmjs.org/@0x/contracts-erc20/-/contracts-erc20-1.0.9.tgz#366ce8222dcae5ade0ea7ca95332416a080f6abf" + dependencies: + "@0x/base-contract" "^5.0.2" + "@0x/contracts-exchange-libs" "1.0.2" + "@0x/contracts-utils" "2.0.1" + "@0x/types" "^2.1.1" + "@0x/typescript-typings" "^4.1.0" + "@0x/utils" "^4.2.2" + "@0x/web3-wrapper" "^6.0.2" + ethereum-types "^2.1.0" + lodash "^4.17.11" + "@0x/contracts-erc721@1.0.8": version "1.0.8" resolved "https://registry.npmjs.org/@0x/contracts-erc721/-/contracts-erc721-1.0.8.tgz#d3746c26eec57662654557121601b5bb81085637" @@ -516,6 +546,19 @@ ethereum-types "^2.1.0" lodash "^4.17.11" +"@0x/contracts-erc721@^1.0.2", "@0x/contracts-erc721@^1.0.9": + version "1.0.9" + resolved "https://registry.npmjs.org/@0x/contracts-erc721/-/contracts-erc721-1.0.9.tgz#3991858a3bf5a80dcd6e5fd65e938f8adc3b347c" + dependencies: + "@0x/base-contract" "^5.0.2" + "@0x/contracts-utils" "2.0.1" + "@0x/types" "^2.1.1" + "@0x/typescript-typings" "^4.1.0" + "@0x/utils" "^4.2.2" + "@0x/web3-wrapper" "^6.0.2" + ethereum-types "^2.1.0" + lodash "^4.17.11" + "@0x/contracts-exchange-libs@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@0x/contracts-exchange-libs/-/contracts-exchange-libs-1.0.2.tgz#0682c01cdb3e36100bda0ffbdf9badb5b8a01fc4" @@ -530,6 +573,20 @@ ethereum-types "^2.0.0" lodash "^4.17.5" +"@0x/contracts-exchange-libs@^1.0.2": + version "1.1.3" + resolved "https://registry.npmjs.org/@0x/contracts-exchange-libs/-/contracts-exchange-libs-1.1.3.tgz#dc9429e9c5fc750e9f5006e5ad53ebd7aa577c28" + dependencies: + "@0x/base-contract" "^5.0.2" + "@0x/contracts-utils" "^2.0.8" + "@0x/order-utils" "^7.0.2" + "@0x/types" "^2.1.1" + "@0x/typescript-typings" "^4.1.0" + "@0x/utils" "^4.2.2" + "@0x/web3-wrapper" "^6.0.2" + ethereum-types "^2.1.0" + lodash "^4.17.11" + "@0x/contracts-exchange@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@0x/contracts-exchange/-/contracts-exchange-1.0.2.tgz#4c02378b26a7bf6324e16a41f2851c43fed82c63" @@ -565,6 +622,21 @@ ethereumjs-util "^5.1.1" lodash "^4.17.5" +"@0x/contracts-utils@^2.0.1", "@0x/contracts-utils@^2.0.8": + version "2.0.8" + resolved "https://registry.npmjs.org/@0x/contracts-utils/-/contracts-utils-2.0.8.tgz#b6a3775296e04c7ca9ebea7eae56fda48a43239d" + dependencies: + "@0x/base-contract" "^5.0.2" + "@0x/order-utils" "^7.0.2" + "@0x/types" "^2.1.1" + "@0x/typescript-typings" "^4.1.0" + "@0x/utils" "^4.2.2" + "@0x/web3-wrapper" "^6.0.2" + bn.js "^4.11.8" + ethereum-types "^2.1.0" + ethereumjs-util "^5.1.1" + lodash "^4.17.11" + "@0x/order-utils@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@0x/order-utils/-/order-utils-5.0.0.tgz#7f43e0310ace31738895881501c8dda9c3a3aefa" @@ -1841,9 +1913,9 @@ version "0.0.7" resolved "https://registry.yarnpkg.com/@types/sleep/-/sleep-0.0.7.tgz#0572b5d06978b4305671c614b0f68b4640ce7d43" -"@types/solidity-parser-antlr@^0.2.0": - version "0.2.1" - resolved "https://registry.npmjs.org/@types/solidity-parser-antlr/-/solidity-parser-antlr-0.2.1.tgz#29ff386773a72a06c8a9c40c666d2a1cea53c2ed" +"@types/solidity-parser-antlr@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@types/solidity-parser-antlr/-/solidity-parser-antlr-0.2.3.tgz#bb2d9c6511bf483afe4fc3e2714da8a924e59e3f" "@types/styled-components@4.0.0": version "4.0.0" @@ -6495,6 +6567,16 @@ ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0, ether ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" +ethereumjs-block@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.0.tgz#8c6c3ab4a5eff0a16d9785fbeedbe643f4dbcbef" + dependencies: + async "^2.0.1" + ethereumjs-common "^1.1.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + ethereumjs-blockstream@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/ethereumjs-blockstream/-/ethereumjs-blockstream-6.0.0.tgz#79d726d1f358935eb65195e91d40344c31e87eff" @@ -6507,9 +6589,9 @@ ethereumjs-common@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-0.6.1.tgz#ec98edf315a7f107afb6acc48e937a8266979fae" -ethereumjs-common@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-0.4.1.tgz#27690a24a817b058cc3a2aedef9392e8d7d63984" +ethereumjs-common@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.1.0.tgz#5ec9086c314d619d8f05e79a0525829fcb0e93cb" ethereumjs-tx@1.3.7: version "1.3.7" @@ -6559,21 +6641,17 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum safe-buffer "^5.1.1" secp256k1 "^3.0.1" -ethereumjs-vm@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.4.0.tgz#244f1e35f2755e537a13546111d1a4c159d34b13" +ethereumjs-util@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~1.7.0" - ethereumjs-common "~0.4.0" - ethereumjs-util "^5.2.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.1.2" - rustbn.js "~0.2.0" + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "0.1.6" + keccak "^1.0.2" + rlp "^2.0.0" safe-buffer "^5.1.1" + secp256k1 "^3.0.1" ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4: version "2.3.4" @@ -6591,6 +6669,22 @@ ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4: rustbn.js "~0.1.1" safe-buffer "^5.1.1" +ethereumjs-vm@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.2.0" + ethereumjs-common "^1.1.0" + ethereumjs-util "^6.0.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.3.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + ethereumjs-wallet@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.2.tgz#67244b6af3e8113b53d709124b25477b64aeccda" @@ -6642,6 +6736,13 @@ ethjs-unit@0.1.6: bn.js "4.11.6" number-to-bn "1.7.0" +ethjs-util@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + ethjs-util@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.4.tgz#1c8b6879257444ef4d3f3fbbac2ded12cd997d93" @@ -7506,9 +7607,9 @@ ganache-cli@6.4.1: source-map-support "0.5.9" yargs "11.1.0" -ganache-core@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.3.3.tgz#e35c76d405f0ffba5c48621596fdcc38b0a03136" +ganache-core@^2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.5.3.tgz#8c6f21d820a694826082dfbb2dc59f834a6874fc" dependencies: abstract-leveldown "3.0.0" async "2.6.1" @@ -7524,11 +7625,11 @@ ganache-core@^2.3.3: ethereumjs-block "2.1.0" ethereumjs-tx "1.3.7" ethereumjs-util "5.2.0" - ethereumjs-vm "2.4.0" + ethereumjs-vm "^2.6.0" heap "0.2.6" level-sublevel "6.6.4" levelup "3.1.1" - lodash "4.17.10" + lodash "4.17.11" merkle-patricia-tree "2.3.1" rlp "2.1.0" seedrandom "2.4.4" @@ -10627,9 +10728,9 @@ lodash.words@^3.0.0: dependencies: lodash._root "^3.0.0" -lodash@4.17.10, lodash@^4.17.10: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +lodash@4.17.11, lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.3: + version "4.17.11" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" lodash@=4.17.4: version "4.17.4" @@ -10639,14 +10740,14 @@ lodash@^3.3.1, lodash@^3.6.0, lodash@^3.7.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.3: - version "4.17.11" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - lodash@^4.14.0, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" +lodash@^4.17.10: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + lodash@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" @@ -11046,6 +11147,19 @@ merkle-patricia-tree@2.3.1, merkle-patricia-tree@^2.1.2: rlp "^2.0.0" semaphore ">=1.0.1" +merkle-patricia-tree@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" + dependencies: + async "^1.4.2" + ethereumjs-util "^5.0.0" + level-ws "0.0.0" + levelup "^1.2.1" + memdown "^1.0.0" + readable-stream "^2.0.0" + rlp "^2.0.0" + semaphore ">=1.0.1" + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -15193,14 +15307,14 @@ solhint@^1.4.1: prettier "^1.14.3" prettier-plugin-solidity "^1.0.0-alpha.4" -solidity-parser-antlr@^0.2.12: - version "0.2.12" - resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.2.12.tgz#1154f183d5cdda2c7677549ee584dbdb7fb2269c" - solidity-parser-antlr@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.3.3.tgz#0352e35f914095daa7eef9f3a55cf8074e28cc5b" +solidity-parser-antlr@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.2.tgz#b862eba5936e7a90b4f5f1c8eb1d33fe86650f78" + sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"