From def016f14eeb6494de0058a96ddf72653cfda879 Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Fri, 29 Nov 2019 16:07:11 -0800 Subject: [PATCH] Update Forwarder artifact and wrapper --- .../artifacts/DevUtils.json | 1486 +++-------------- .../artifacts/Forwarder.json | 23 +- .../src/generated-wrappers/forwarder.ts | 129 +- packages/contract-wrappers/src/index.ts | 2 +- 4 files changed, 367 insertions(+), 1273 deletions(-) diff --git a/packages/contract-artifacts/artifacts/DevUtils.json b/packages/contract-artifacts/artifacts/DevUtils.json index fb2385c3fb..4209c4237f 100644 --- a/packages/contract-artifacts/artifacts/DevUtils.json +++ b/packages/contract-artifacts/artifacts/DevUtils.json @@ -4,13 +4,7 @@ "compilerOutput": { "abi": [ { - "inputs": [ - { - "internalType": "address", - "name": "_exchange", - "type": "address" - } - ], + "inputs": [{ "internalType": "address", "name": "_exchange", "type": "address" }], "payable": false, "stateMutability": "nonpayable", "type": "constructor" @@ -19,26 +13,14 @@ "constant": true, "inputs": [], "name": "EIP712_EXCHANGE_DOMAIN_HASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeAssetProxyDispatchError", "outputs": [ { @@ -46,16 +28,8 @@ "name": "errorCode", "type": "uint8" }, - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "internalType": "bytes", "name": "assetData", "type": "bytes" } ], "payable": false, "stateMutability": "pure", @@ -63,25 +37,11 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeAssetProxyExistsError", "outputs": [ - { - "internalType": "bytes4", - "name": "assetProxyId", - "type": "bytes4" - }, - { - "internalType": "address", - "name": "assetProxyAddress", - "type": "address" - } + { "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }, + { "internalType": "address", "name": "assetProxyAddress", "type": "address" } ], "payable": false, "stateMutability": "pure", @@ -89,51 +49,21 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "name": "decodeAssetProxyId", - "outputs": [ - { - "internalType": "bytes4", - "name": "assetProxyId", - "type": "bytes4" - } - ], + "outputs": [{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeAssetProxyTransferError", "outputs": [ - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "errorData", - "type": "bytes" - } + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "internalType": "bytes", "name": "assetData", "type": "bytes" }, + { "internalType": "bytes", "name": "errorData", "type": "bytes" } ], "payable": false, "stateMutability": "pure", @@ -141,35 +71,13 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeEIP1271SignatureError", "outputs": [ - { - "internalType": "address", - "name": "verifyingContractAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "errorData", - "type": "bytes" - } + { "internalType": "address", "name": "verifyingContractAddress", "type": "address" }, + { "internalType": "bytes", "name": "data", "type": "bytes" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" }, + { "internalType": "bytes", "name": "errorData", "type": "bytes" } ], "payable": false, "stateMutability": "pure", @@ -177,40 +85,14 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "name": "decodeERC1155AssetData", "outputs": [ - { - "internalType": "bytes4", - "name": "assetProxyId", - "type": "bytes4" - }, - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "tokenIds", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "tokenValues", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "callbackData", - "type": "bytes" - } + { "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }, + { "internalType": "address", "name": "tokenAddress", "type": "address" }, + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "tokenValues", "type": "uint256[]" }, + { "internalType": "bytes", "name": "callbackData", "type": "bytes" } ], "payable": false, "stateMutability": "pure", @@ -218,25 +100,11 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "name": "decodeERC20AssetData", "outputs": [ - { - "internalType": "bytes4", - "name": "assetProxyId", - "type": "bytes4" - }, - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } + { "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }, + { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "payable": false, "stateMutability": "pure", @@ -244,30 +112,12 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "name": "decodeERC721AssetData", "outputs": [ - { - "internalType": "bytes4", - "name": "assetProxyId", - "type": "bytes4" - }, - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } + { "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }, + { "internalType": "address", "name": "tokenAddress", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "payable": false, "stateMutability": "pure", @@ -275,13 +125,7 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeExchangeInvalidContextError", "outputs": [ { @@ -289,16 +133,8 @@ "name": "errorCode", "type": "uint8" }, - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "contextAddress", - "type": "address" - } + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "internalType": "address", "name": "contextAddress", "type": "address" } ], "payable": false, "stateMutability": "pure", @@ -306,13 +142,7 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeFillError", "outputs": [ { @@ -320,11 +150,7 @@ "name": "errorCode", "type": "uint8" }, - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32" - } + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" } ], "payable": false, "stateMutability": "pure", @@ -332,13 +158,7 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeIncompleteFillError", "outputs": [ { @@ -346,16 +166,8 @@ "name": "errorCode", "type": "uint8" }, - { - "internalType": "uint256", - "name": "expectedAssetFillAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "actualAssetFillAmount", - "type": "uint256" - } + { "internalType": "uint256", "name": "expectedAssetFillAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "actualAssetFillAmount", "type": "uint256" } ], "payable": false, "stateMutability": "pure", @@ -363,30 +175,12 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "name": "decodeMultiAssetData", "outputs": [ - { - "internalType": "bytes4", - "name": "assetProxyId", - "type": "bytes4" - }, - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "nestedAssetData", - "type": "bytes[]" - } + { "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }, + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, + { "internalType": "bytes[]", "name": "nestedAssetData", "type": "bytes[]" } ], "payable": false, "stateMutability": "pure", @@ -394,25 +188,11 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeNegativeSpreadError", "outputs": [ - { - "internalType": "bytes32", - "name": "leftOrderHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "rightOrderHash", - "type": "bytes32" - } + { "internalType": "bytes32", "name": "leftOrderHash", "type": "bytes32" }, + { "internalType": "bytes32", "name": "rightOrderHash", "type": "bytes32" } ], "payable": false, "stateMutability": "pure", @@ -420,30 +200,12 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeOrderEpochError", "outputs": [ - { - "internalType": "address", - "name": "makerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "orderSenderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "currentEpoch", - "type": "uint256" - } + { "internalType": "address", "name": "makerAddress", "type": "address" }, + { "internalType": "address", "name": "orderSenderAddress", "type": "address" }, + { "internalType": "uint256", "name": "currentEpoch", "type": "uint256" } ], "payable": false, "stateMutability": "pure", @@ -451,25 +213,11 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeOrderStatusError", "outputs": [ - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32" - }, - { - "internalType": "enum LibOrder.OrderStatus", - "name": "orderStatus", - "type": "uint8" - } + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8" } ], "payable": false, "stateMutability": "pure", @@ -477,13 +225,7 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeSignatureError", "outputs": [ { @@ -491,21 +233,9 @@ "name": "errorCode", "type": "uint8" }, - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "signerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } + { "internalType": "bytes32", "name": "hash", "type": "bytes32" }, + { "internalType": "address", "name": "signerAddress", "type": "address" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "payable": false, "stateMutability": "pure", @@ -513,25 +243,11 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeSignatureValidatorNotApprovedError", "outputs": [ - { - "internalType": "address", - "name": "signerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "validatorAddress", - "type": "address" - } + { "internalType": "address", "name": "signerAddress", "type": "address" }, + { "internalType": "address", "name": "validatorAddress", "type": "address" } ], "payable": false, "stateMutability": "pure", @@ -539,35 +255,13 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeSignatureWalletError", "outputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "signerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "errorData", - "type": "bytes" - } + { "internalType": "bytes32", "name": "hash", "type": "bytes32" }, + { "internalType": "address", "name": "signerAddress", "type": "address" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" }, + { "internalType": "bytes", "name": "errorData", "type": "bytes" } ], "payable": false, "stateMutability": "pure", @@ -575,35 +269,13 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "name": "decodeStaticCallAssetData", "outputs": [ - { - "internalType": "bytes4", - "name": "assetProxyId", - "type": "bytes4" - }, - { - "internalType": "address", - "name": "staticCallTargetAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "staticCallData", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "expectedReturnDataHash", - "type": "bytes32" - } + { "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }, + { "internalType": "address", "name": "staticCallTargetAddress", "type": "address" }, + { "internalType": "bytes", "name": "staticCallData", "type": "bytes" }, + { "internalType": "bytes32", "name": "expectedReturnDataHash", "type": "bytes32" } ], "payable": false, "stateMutability": "pure", @@ -611,13 +283,7 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeTransactionError", "outputs": [ { @@ -625,11 +291,7 @@ "name": "errorCode", "type": "uint8" }, - { - "internalType": "bytes32", - "name": "transactionHash", - "type": "bytes32" - } + { "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" } ], "payable": false, "stateMutability": "pure", @@ -637,25 +299,11 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "encoded", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }], "name": "decodeTransactionExecutionError", "outputs": [ - { - "internalType": "bytes32", - "name": "transactionHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "errorData", - "type": "bytes" - } + { "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" }, + { "internalType": "bytes", "name": "errorData", "type": "bytes" } ], "payable": false, "stateMutability": "pure", @@ -663,107 +311,33 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "transactionData", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "transactionData", "type": "bytes" }], "name": "decodeZeroExTransactionData", "outputs": [ - { - "internalType": "string", - "name": "functionName", - "type": "string" - }, + { "internalType": "string", "name": "functionName", "type": "string" }, { "components": [ - { - "internalType": "address", - "name": "makerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "takerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "feeRecipientAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "senderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "makerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "makerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expirationTimeSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "makerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "makerFeeAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerFeeAssetData", - "type": "bytes" - } + { "internalType": "address", "name": "makerAddress", "type": "address" }, + { "internalType": "address", "name": "takerAddress", "type": "address" }, + { "internalType": "address", "name": "feeRecipientAddress", "type": "address" }, + { "internalType": "address", "name": "senderAddress", "type": "address" }, + { "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "makerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "takerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" }, + { "internalType": "bytes", "name": "makerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" } ], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]" }, - { - "internalType": "uint256[]", - "name": "takerAssetFillAmounts", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "signatures", - "type": "bytes[]" - } + { "internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]" }, + { "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" } ], "payable": false, "stateMutability": "pure", @@ -772,56 +346,22 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "tokenIds", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "tokenValues", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "callbackData", - "type": "bytes" - } + { "internalType": "address", "name": "tokenAddress", "type": "address" }, + { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "tokenValues", "type": "uint256[]" }, + { "internalType": "bytes", "name": "callbackData", "type": "bytes" } ], "name": "encodeERC1155AssetData", - "outputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], + "inputs": [{ "internalType": "address", "name": "tokenAddress", "type": "address" }], "name": "encodeERC20AssetData", - "outputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "payable": false, "stateMutability": "pure", "type": "function" @@ -829,25 +369,11 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } + { "internalType": "address", "name": "tokenAddress", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "encodeERC721AssetData", - "outputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "payable": false, "stateMutability": "pure", "type": "function" @@ -855,25 +381,11 @@ { "constant": true, "inputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "nestedAssetData", - "type": "bytes[]" - } + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, + { "internalType": "bytes[]", "name": "nestedAssetData", "type": "bytes[]" } ], "name": "encodeMultiAssetData", - "outputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "payable": false, "stateMutability": "pure", "type": "function" @@ -881,30 +393,12 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "staticCallTargetAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "staticCallData", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "expectedReturnDataHash", - "type": "bytes32" - } + { "internalType": "address", "name": "staticCallTargetAddress", "type": "address" }, + { "internalType": "bytes", "name": "staticCallData", "type": "bytes" }, + { "internalType": "bytes32", "name": "expectedReturnDataHash", "type": "bytes32" } ], "name": "encodeStaticCallAssetData", - "outputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "payable": false, "stateMutability": "pure", "type": "function" @@ -912,25 +406,11 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } + { "internalType": "address", "name": "ownerAddress", "type": "address" }, + { "internalType": "bytes", "name": "assetData", "type": "bytes" } ], "name": "getAssetProxyAllowance", - "outputs": [ - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - } - ], + "outputs": [{ "internalType": "uint256", "name": "allowance", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" @@ -938,25 +418,11 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } + { "internalType": "address", "name": "ownerAddress", "type": "address" }, + { "internalType": "bytes", "name": "assetData", "type": "bytes" } ], "name": "getBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - } - ], + "outputs": [{ "internalType": "uint256", "name": "balance", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" @@ -964,29 +430,13 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } + { "internalType": "address", "name": "ownerAddress", "type": "address" }, + { "internalType": "bytes", "name": "assetData", "type": "bytes" } ], "name": "getBalanceAndAssetProxyAllowance", "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - } + { "internalType": "uint256", "name": "balance", "type": "uint256" }, + { "internalType": "uint256", "name": "allowance", "type": "uint256" } ], "payable": false, "stateMutability": "view", @@ -995,25 +445,11 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes[]", - "name": "assetData", - "type": "bytes[]" - } + { "internalType": "address", "name": "ownerAddress", "type": "address" }, + { "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" } ], "name": "getBatchAssetProxyAllowances", - "outputs": [ - { - "internalType": "uint256[]", - "name": "allowances", - "type": "uint256[]" - } - ], + "outputs": [{ "internalType": "uint256[]", "name": "allowances", "type": "uint256[]" }], "payable": false, "stateMutability": "view", "type": "function" @@ -1021,25 +457,11 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes[]", - "name": "assetData", - "type": "bytes[]" - } + { "internalType": "address", "name": "ownerAddress", "type": "address" }, + { "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" } ], "name": "getBatchBalances", - "outputs": [ - { - "internalType": "uint256[]", - "name": "balances", - "type": "uint256[]" - } - ], + "outputs": [{ "internalType": "uint256[]", "name": "balances", "type": "uint256[]" }], "payable": false, "stateMutability": "view", "type": "function" @@ -1047,29 +469,13 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes[]", - "name": "assetData", - "type": "bytes[]" - } + { "internalType": "address", "name": "ownerAddress", "type": "address" }, + { "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" } ], "name": "getBatchBalancesAndAssetProxyAllowances", "outputs": [ - { - "internalType": "uint256[]", - "name": "balances", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "allowances", - "type": "uint256[]" - } + { "internalType": "uint256[]", "name": "balances", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "allowances", "type": "uint256[]" } ], "payable": false, "stateMutability": "view", @@ -1077,21 +483,9 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "address[]", - "name": "addresses", - "type": "address[]" - } - ], + "inputs": [{ "internalType": "address[]", "name": "addresses", "type": "address[]" }], "name": "getEthBalances", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], + "outputs": [{ "internalType": "uint256[]", "name": "", "type": "uint256[]" }], "payable": false, "stateMutability": "view", "type": "function" @@ -1101,100 +495,30 @@ "inputs": [ { "components": [ - { - "internalType": "address", - "name": "makerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "takerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "feeRecipientAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "senderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "makerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "makerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expirationTimeSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "makerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "makerFeeAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerFeeAssetData", - "type": "bytes" - } + { "internalType": "address", "name": "makerAddress", "type": "address" }, + { "internalType": "address", "name": "takerAddress", "type": "address" }, + { "internalType": "address", "name": "feeRecipientAddress", "type": "address" }, + { "internalType": "address", "name": "senderAddress", "type": "address" }, + { "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "makerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "takerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" }, + { "internalType": "bytes", "name": "makerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" } ], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple" }, - { - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "exchange", - "type": "address" - } + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "address", "name": "exchange", "type": "address" } ], "name": "getOrderHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32" - } - ], + "outputs": [{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }], "payable": false, "stateMutability": "pure", "type": "function" @@ -1204,121 +528,41 @@ "inputs": [ { "components": [ - { - "internalType": "address", - "name": "makerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "takerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "feeRecipientAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "senderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "makerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "makerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expirationTimeSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "makerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "makerFeeAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerFeeAssetData", - "type": "bytes" - } + { "internalType": "address", "name": "makerAddress", "type": "address" }, + { "internalType": "address", "name": "takerAddress", "type": "address" }, + { "internalType": "address", "name": "feeRecipientAddress", "type": "address" }, + { "internalType": "address", "name": "senderAddress", "type": "address" }, + { "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "makerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "takerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" }, + { "internalType": "bytes", "name": "makerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" } ], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple" }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } + { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "getOrderRelevantState", "outputs": [ { "components": [ - { - "internalType": "uint8", - "name": "orderStatus", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "orderTakerAssetFilledAmount", - "type": "uint256" - } + { "internalType": "uint8", "name": "orderStatus", "type": "uint8" }, + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256" } ], "internalType": "struct LibOrder.OrderInfo", "name": "orderInfo", "type": "tuple" }, - { - "internalType": "uint256", - "name": "fillableTakerAssetAmount", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "isValidSignature", - "type": "bool" - } + { "internalType": "uint256", "name": "fillableTakerAssetAmount", "type": "uint256" }, + { "internalType": "bool", "name": "isValidSignature", "type": "bool" } ], "payable": false, "stateMutability": "view", @@ -1329,121 +573,41 @@ "inputs": [ { "components": [ - { - "internalType": "address", - "name": "makerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "takerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "feeRecipientAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "senderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "makerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "makerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expirationTimeSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "makerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "makerFeeAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerFeeAssetData", - "type": "bytes" - } + { "internalType": "address", "name": "makerAddress", "type": "address" }, + { "internalType": "address", "name": "takerAddress", "type": "address" }, + { "internalType": "address", "name": "feeRecipientAddress", "type": "address" }, + { "internalType": "address", "name": "senderAddress", "type": "address" }, + { "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "makerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "takerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" }, + { "internalType": "bytes", "name": "makerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" } ], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]" }, - { - "internalType": "bytes[]", - "name": "signatures", - "type": "bytes[]" - } + { "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" } ], "name": "getOrderRelevantStates", "outputs": [ { "components": [ - { - "internalType": "uint8", - "name": "orderStatus", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "orderTakerAssetFilledAmount", - "type": "uint256" - } + { "internalType": "uint8", "name": "orderStatus", "type": "uint8" }, + { "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }, + { "internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256" } ], "internalType": "struct LibOrder.OrderInfo[]", "name": "ordersInfo", "type": "tuple[]" }, - { - "internalType": "uint256[]", - "name": "fillableTakerAssetAmounts", - "type": "uint256[]" - }, - { - "internalType": "bool[]", - "name": "isValidSignature", - "type": "bool[]" - } + { "internalType": "uint256[]", "name": "fillableTakerAssetAmounts", "type": "uint256[]" }, + { "internalType": "bool[]", "name": "isValidSignature", "type": "bool[]" } ], "payable": false, "stateMutability": "view", @@ -1454,91 +618,27 @@ "inputs": [ { "components": [ - { - "internalType": "address", - "name": "makerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "takerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "feeRecipientAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "senderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "makerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "makerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expirationTimeSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "makerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "makerFeeAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerFeeAssetData", - "type": "bytes" - } + { "internalType": "address", "name": "makerAddress", "type": "address" }, + { "internalType": "address", "name": "takerAddress", "type": "address" }, + { "internalType": "address", "name": "feeRecipientAddress", "type": "address" }, + { "internalType": "address", "name": "senderAddress", "type": "address" }, + { "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "makerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "takerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" }, + { "internalType": "bytes", "name": "makerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" } ], "internalType": "struct LibOrder.Order", "name": "order", "type": "tuple" }, - { - "internalType": "address", - "name": "takerAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "takerAssetFillAmount", - "type": "uint256" - } + { "internalType": "address", "name": "takerAddress", "type": "address" }, + { "internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256" } ], "name": "getSimulatedOrderTransferResults", "outputs": [ @@ -1557,91 +657,27 @@ "inputs": [ { "components": [ - { - "internalType": "address", - "name": "makerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "takerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "feeRecipientAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "senderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "makerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerAssetAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "makerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "takerFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expirationTimeSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "makerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "makerFeeAssetData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "takerFeeAssetData", - "type": "bytes" - } + { "internalType": "address", "name": "makerAddress", "type": "address" }, + { "internalType": "address", "name": "takerAddress", "type": "address" }, + { "internalType": "address", "name": "feeRecipientAddress", "type": "address" }, + { "internalType": "address", "name": "senderAddress", "type": "address" }, + { "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "makerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "takerFee", "type": "uint256" }, + { "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" }, + { "internalType": "uint256", "name": "salt", "type": "uint256" }, + { "internalType": "bytes", "name": "makerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" }, + { "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" } ], "internalType": "struct LibOrder.Order[]", "name": "orders", "type": "tuple[]" }, - { - "internalType": "address[]", - "name": "takerAddresses", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "takerAssetFillAmounts", - "type": "uint256[]" - } + { "internalType": "address[]", "name": "takerAddresses", "type": "address[]" }, + { "internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]" } ], "name": "getSimulatedOrdersTransferResults", "outputs": [ @@ -1660,55 +696,21 @@ "inputs": [ { "components": [ - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expirationTimeSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasPrice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "signerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } + { "internalType": "uint256", "name": "salt", "type": "uint256" }, + { "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" }, + { "internalType": "uint256", "name": "gasPrice", "type": "uint256" }, + { "internalType": "address", "name": "signerAddress", "type": "address" }, + { "internalType": "bytes", "name": "data", "type": "bytes" } ], "internalType": "struct LibZeroExTransaction.ZeroExTransaction", "name": "transaction", "type": "tuple" }, - { - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "exchange", - "type": "address" - } + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "address", "name": "exchange", "type": "address" } ], "name": "getTransactionHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "transactionHash", - "type": "bytes32" - } - ], + "outputs": [{ "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" }], "payable": false, "stateMutability": "pure", "type": "function" @@ -1716,38 +718,18 @@ { "constant": true, "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } + { "internalType": "address", "name": "ownerAddress", "type": "address" }, + { "internalType": "bytes", "name": "assetData", "type": "bytes" } ], "name": "getTransferableAssetAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "transferableAssetAmount", - "type": "uint256" - } - ], + "outputs": [{ "internalType": "uint256", "name": "transferableAssetAmount", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "bytes", - "name": "assetData", - "type": "bytes" - } - ], + "inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }], "name": "revertIfInvalidAssetData", "outputs": [], "payable": false, diff --git a/packages/contract-artifacts/artifacts/Forwarder.json b/packages/contract-artifacts/artifacts/Forwarder.json index 2aef5eb52b..c3bef388e3 100644 --- a/packages/contract-artifacts/artifacts/Forwarder.json +++ b/packages/contract-artifacts/artifacts/Forwarder.json @@ -6,12 +6,21 @@ { "inputs": [ { "internalType": "address", "name": "_exchange", "type": "address" }, - { "internalType": "bytes", "name": "_wethAssetData", "type": "bytes" } + { "internalType": "address", "name": "_weth", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } + ], + "name": "OwnershipTransferred", + "type": "event" + }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "constant": false, @@ -158,9 +167,9 @@ "return": "wethSpentAmount Amount of WETH spent on the given set of orders.makerAssetAcquiredAmount Amount of maker asset acquired from the given set of orders.ethFeePaid Amount of ETH spent on the given forwarder fee." }, "withdrawAsset(bytes,uint256)": { - "details": "Withdraws assets from this contract. The contract formerly required a ZRX balance in order to function optimally, and this function allows the ZRX to be withdrawn by owner. It may also be used to withdraw assets that were accidentally sent to this contract.", + "details": "Withdraws assets from this contract. It may be used by the owner to withdraw assets that were accidentally sent to this contract.", "params": { - "amount": "Amount of ERC20 token to withdraw.", + "amount": "Amount of the asset to withdraw.", "assetData": "Byte array encoded for the respective asset proxy." } } @@ -168,16 +177,16 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b50604051620028673803806200286783398101604081905262000034916200058f565b60008054336001600160a01b031991821617909155600180549091166001600160a01b03841617905580518290829062000076906003906020840190620004b0565b50600062000094601083620003a260201b620006c41790919060201c565b600280546001600160a01b0319166001600160a01b03928316179055600154604051600095509116925063607041089150620000d0906200068c565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1682526200011091600401620006ce565b60206040518083038186803b1580156200012957600080fd5b505afa1580156200013e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200016491908101906200056a565b90506001600160a01b0381166200019f576200019f6200018e620003ee60201b6200066a1760201c565b6200043460201b620001f61760201c565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063095ea7b390620001ee90849060001990600401620006b5565b602060405180830381600087803b1580156200020957600080fd5b505af11580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200024491908101906200066a565b50600154604080517f850a150100000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163850a1501916004808301926020929190829003018186803b158015620002a457600080fd5b505afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002df91908101906200056a565b90506001600160a01b0381161562000398576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063095ea7b3906200034090849060001990600401620006b5565b602060405180830381600087803b1580156200035b57600080fd5b505af115801562000370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200039691908101906200066a565b505b505050506200071e565b60008160140183511015620003d257620003d26200018e60048551856014016200043c60201b62000dd61760201c565b5060148183018101519101906001600160a01b03165b92915050565b6040805160048152602481019091526020810180516001600160e01b03167ff3b96b8d000000000000000000000000000000000000000000000000000000001790525b90565b805160208201fd5b6060632800659560e01b8484846040516024016200045d93929190620006fb565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004f357805160ff191683800117855562000523565b8280016001018555821562000523579182015b828111156200052357825182559160200191906001019062000506565b506200053192915062000535565b5090565b6200043191905b808211156200053157600081556001016200053c565b80516001600160a01b0381168114620003e857600080fd5b6000602082840312156200057c578081fd5b62000588838362000552565b9392505050565b60008060408385031215620005a2578081fd5b620005ae848462000552565b602084810151919350906001600160401b0380821115620005cd578384fd5b81860187601f820112620005df578485fd5b8051925081831115620005f0578485fd5b604051601f8401601f191681018501838111828210171562000610578687fd5b604052838152818401850189101562000627578586fd5b8592505b838310156200064a57818301850151818401860152918401916200062b565b838311156200065b57858585830101525b80955050505050509250929050565b6000602082840312156200067c578081fd5b8151801515811462000588578182fd5b7f4552433230546f6b656e28616464726573732900000000000000000000000000815260130190565b6001600160a01b03929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60608101600885106200070a57fe5b938152602081019290925260409091015290565b612139806200072e6000396000f3fe6080604052600436106100655760003560e01c8063942d33c011610043578063942d33c014610102578063ae93b97a14610124578063f2fde38b1461013757610065565b8063442026ed14610097578063630f1e6c146100b75780638da5cb5b146100d7575b60025473ffffffffffffffffffffffffffffffffffffffff1633146100955761009561009033610157565b6101f6565b005b3480156100a357600080fd5b506100956100b2366004611bc6565b6101fe565b3480156100c357600080fd5b506100956100d2366004611c06565b6104a8565b3480156100e357600080fd5b506100ec6104f1565b6040516100f99190611dc0565b60405180910390f35b610115610110366004611b1d565b61050d565b6040516100f993929190612047565b610115610132366004611aa0565b610542565b34801561014357600080fd5b50610095610152366004611a68565b61059d565b60606308b1869860e01b826040516024016101729190611dc0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061024a600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610614169050565b905060405161025890611d97565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104a35760015460405160009173ffffffffffffffffffffffffffffffffffffffff16906360704108906102d490611d97565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825261031291600401611e5f565b60206040518083038186803b15801561032a57600080fd5b505afa15801561033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103629190810190611a84565b905073ffffffffffffffffffffffffffffffffffffffff811661038a5761038a61009061066a565b60006103d6601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6106c4169050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063095ea7b39061044d9085907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401611de1565b602060405180830381600087803b15801561046757600080fd5b505af115801561047b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061049f9190810190611ba6565b5050505b505050565b6104b0610704565b6104a383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061074d915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061051a610838565b6105258888886108cd565b90935091506105358386866109f0565b9050955095509592505050565b600080600061054f610838565b6000610573670de0b6b3a764000061056d888263ffffffff610b8f16565b34610bb2565b9050610580888289610bdc565b90945092506105908487876109f0565b9150509450945094915050565b6105a5610704565b73ffffffffffffffffffffffffffffffffffffffff81166105d0576105cb610090610d9f565b610611565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b60008160040183511015610635576106356100906003855185600401610dd6565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b600081601401835110156106e5576106e56100906004855185601401610dd6565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331461074b5760005461074b9061009090339073ffffffffffffffffffffffffffffffffffffffff16610e7b565b565b600061075f838263ffffffff61061416565b905060405161076d90611d97565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107c9576107c48383610f1d565b6104a3565b6040516107d590611d45565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561082c576107c48383611085565b6104a361009082611152565b346108485761084861009061116d565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b257600080fd5b505af11580156108c6573d6000803e3d6000fd5b5050505050565b82516000908190815b8181146109d1578681815181106108e957fe5b6020026020010151608001516000148061091a575086818151811061090a57fe5b602002602001015160a001516000145b15610924576109c9565b6000610936878563ffffffff6111c716565b905060008061096c8a858151811061094a57fe5b602002602001015189868151811061095e57fe5b6020026020010151856111e6565b915091506109928a858151811061097f57fe5b602002602001015161014001518261074d565b6109a2878363ffffffff610b8f16565b96506109b4868263ffffffff610b8f16565b95508886106109c5575050506109d1565b5050505b6001016108d6565b50848210156109e7576109e76100908684611339565b50935093915050565b600066b1a2bc2ec50000831115610a0d57610a0d61009084611356565b34841115610a2257610a226100908534611371565b6000610a34348663ffffffff6111c716565b9050610a4984670de0b6b3a764000087610bb2565b915080821115610a6057610a60610090838361138e565b8015610b87576002546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610abc908490600401612030565b600060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506000821115610b3c5760405173ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610b3a573d6000803e3d6000fd5b505b6000610b4e828463ffffffff6111c716565b90508015610b8557604051339082156108fc029083906000818181858888f19350505050158015610b83573d6000803e3d6000fd5b505b505b509392505050565b600082820183811015610bab57610bab610090600086866113ab565b9392505050565b6000610bd483610bc8868563ffffffff6113ca16565b9063ffffffff6113fb16565b949350505050565b6000806000855190506000610c97600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5257600080fd5b505afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c8a9190810190611cad565b3a9063ffffffff6113ca16565b905060005b828114610d9457878181518110610caf57fe5b60200260200101516080015160001480610ce05750878181518110610cd057fe5b602002602001015160a001516000145b15610cea57610d8c565b6000610d0c83610d008a8963ffffffff6111c716565b9063ffffffff6111c716565b9050600080610d428b8581518110610d2057fe5b60200260200101518a8681518110610d3457fe5b602002602001015185611425565b91509150610d558b858151811061097f57fe5b610d65888363ffffffff610b8f16565b9750610d77878263ffffffff610b8f16565b9650898810610d8857505050610d94565b5050505b600101610c9c565b505050935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b848484604051602401610df593929190611ec1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b6060631de45ad160e01b8383604051602401610e98929190611e07565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b6000610f3083601063ffffffff6106c416565b9050600060608273ffffffffffffffffffffffffffffffffffffffff16604051610f5990611d6e565b60405180910390203386604051602401610f74929190611de1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610ffd9190611d29565b6000604051808303816000865af19150503d806000811461103a576040519150601f19603f3d011682016040523d82523d6000602084013e61103f565b606091505b50915091508161105557611055610090826114ea565b3d15611074576000915060203d14156110745760206000803e60005191505b816108c6576108c6610090826114ea565b806001146110995761109961009082611505565b60006110ac83601063ffffffff6106c416565b905060006110c184602463ffffffff61152016565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd9061111a90309033908690600401611e2e565b600060405180830381600087803b15801561113457600080fd5b505af1158015611148573d6000803e3d6000fd5b5050505050505050565b6060637996a27160e01b826040516024016101729190611e5f565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8c0e562b0000000000000000000000000000000000000000000000000000000017905290565b6000828211156111e0576111e0610090600285856113ab565b50900390565b6000808460e001516000148061121257506101608501516101a08601516112129163ffffffff61152c16565b1561128057600061122c8660a00151876080015186611552565b905061123661172e565b61124187838861157c565b9050611272816080015161126683606001518460200151610b8f90919063ffffffff16565b9063ffffffff610b8f16565b905190935091506113319050565b6101408501516101a086015161129b9163ffffffff61152c16565b156113205760006112cb8660a001516112c58860e0015189608001516111c790919063ffffffff16565b86611552565b90506112d561172e565b6112e087838861157c565b90506112fd81608001518260200151610b8f90919063ffffffff16565b60608201518251919550611317919063ffffffff6111c716565b92505050611331565b611331610090866101a001516116e9565b935093915050565b60606391353a0c60e01b8383604051602401610e98929190612039565b6060631174fb8060e01b826040516024016101729190612030565b606063cdcbed5d60e01b8383604051602401610e98929190612039565b606063ecf40fd960e01b8383604051602401610e98929190612039565b606063e946c1bb60e01b848484604051602401610df593929190611e9f565b6000826113d957506000610664565b828202828482816113e657fe5b0414610bab57610bab610090600186866113ab565b60008161141157611411610090600385856113ab565b600082848161141c57fe5b04949350505050565b6000808460e001516000148061145157506101408501516101a08601516114519163ffffffff61152c16565b156114a85761145e61172e565b61146986858761157c565b905061148681608001518260200151610b8f90919063ffffffff16565b606082015182519194506114a0919063ffffffff6111c716565b915050611331565b6101608501516101a08601516114c39163ffffffff61152c16565b156113205760a085015160e086015160009161122c916112c590829063ffffffff610b8f16565b6060635e7eb60f60e01b826040516024016101729190611e8c565b606063baffa47460e01b826040516024016101729190612030565b6000610bab8383611704565b600081518351148015610bab575081805190602001208380519060200120149392505050565b6000610bd483610bc861156c82600163ffffffff6111c716565b611266888763ffffffff6113ca16565b61158461172e565b6040516060907f9b44d55600000000000000000000000000000000000000000000000000000000906115be90879087908790602401611ecf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600154915190925073ffffffffffffffffffffffffffffffffffffffff90911690600090606090839061166f908690611d29565b6000604051808303816000865af19150503d80600081146116ac576040519150601f19603f3d011682016040523d82523d6000602084013e6116b1565b606091505b509150915081156116de57805160a0146116c757fe5b808060200190516116db9190810190611c50565b94505b505050509392505050565b60606331360af160e01b826040516024016101729190611e8c565b60008160200183511015611725576117256100906005855185602001610dd6565b50016020015190565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8035610664816120d4565b600082601f830112611778578081fd5b813561178b61178682612084565b61205d565b8181529150602080830190840160005b838110156117c8576117b387602084358901016119e1565b8352602092830192919091019060010161179b565b5050505092915050565b600082601f8301126117e2578081fd5b81356117f061178682612084565b818152915060208083019084810160005b8481101561198f57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561184157600080fd5b61184a8161205d565b6118568b87850161175d565b81526118658b6040850161175d565b868201526118768b6060850161175d565b60408201526118888b6080850161175d565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff808211156118ed57600080fd5b6118fb8f8b848a01016119e1565b8486015261018093508387013591508082111561191757600080fd5b6119258f8b848a01016119e1565b838601526101a092508287013591508082111561194157600080fd5b61194f8f8b848a01016119e1565b848601528587013593508084111561196657600080fd5b50506119768d89848801016119e1565b9083015250865250509282019290820190600101611801565b505050505092915050565b60008083601f8401126119ab578182fd5b50813567ffffffffffffffff8111156119c2578182fd5b6020830191508360208285010111156119da57600080fd5b9250929050565b600082601f8301126119f1578081fd5b813567ffffffffffffffff811115611a07578182fd5b611a3860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161205d565b9150808252836020828501011115611a4f57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215611a79578081fd5b8135610bab816120d4565b600060208284031215611a95578081fd5b8151610bab816120d4565b60008060008060808587031215611ab5578283fd5b843567ffffffffffffffff80821115611acc578485fd5b611ad8888389016117d2565b95506020870135915080821115611aed578485fd5b50611afa87828801611768565b935050604085013591506060850135611b12816120d4565b939692955090935050565b600080600080600060a08688031215611b34578081fd5b853567ffffffffffffffff80821115611b4b578283fd5b611b5789838a016117d2565b9650602088013595506040880135915080821115611b73578283fd5b50611b8088828901611768565b935050606086013591506080860135611b98816120d4565b809150509295509295909350565b600060208284031215611bb7578081fd5b81518015158114610bab578182fd5b60008060208385031215611bd8578182fd5b823567ffffffffffffffff811115611bee578283fd5b611bfa8582860161199a565b90969095509350505050565b600080600060408486031215611c1a578283fd5b833567ffffffffffffffff811115611c30578384fd5b611c3c8682870161199a565b909790965060209590950135949350505050565b600060a0828403128015611c62578182fd5b8015611c6c578182fd5b50611c7760a061205d565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215611cbe578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611cf78160208601602086016120a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251611d3b8184602087016120a4565b9190910192915050565b7f455243373231546f6b656e28616464726573732c75696e7432353629000000008152601c0190565b7f7472616e7366657228616464726573732c75696e743235362900000000000000815260190190565b7f4552433230546f6b656e28616464726573732900000000000000000000000000815260130190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252610bab6020830184611cdf565b6060810160048510611ead57fe5b938152602081019290925260409091015290565b6060810160088510611ead57fe5b600060608252611ee3606083018651611cc5565b6020850151611ef56080840182611cc5565b506040850151611f0860a0840182611cc5565b506060850151611f1b60c0840182611cc5565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a08181880152611f91610220880186611cdf565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa09450848882030183890152611fcd8187611cdf565b925050828a0151945083878303016101e0880152611feb8286611cdf565b9250808a015194505050818582030161020086015261200a8184611cdf565b91505085602085015283810360408501526120258186611cdf565b979650505050505050565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff8111828210171561207c57600080fd5b604052919050565b600067ffffffffffffffff82111561209a578081fd5b5060209081020190565b60005b838110156120bf5781810151838201526020016120a7565b838111156120ce576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461061157600080fdfea365627a7a72315820afeb88c9cc19090963cb885eb76d709ca1a151f8f73996031898e2b50578a89b6c6578706572696d656e74616cf564736f6c634300050c0040" + "object": "0x60806040523480156200001157600080fd5b5060405162002b2538038062002b258339810160408190526200003491620003dd565b60008054336001600160a01b03199182161782556001805482166001600160a01b03868116919091179182905560028054909316858216179092556040517f60704108000000000000000000000000000000000000000000000000000000008152911690636070410890620000ce907ff47261b0000000000000000000000000000000000000000000000000000000009060040162000456565b60206040518083038186803b158015620000e757600080fd5b505afa158015620000fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001229190810190620003ad565b90506001600160a01b0381166200015d576200015d6200014c6200036060201b620005dc1760201c565b620003a560201b620001f61760201c565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063095ea7b390620001ac908490600019906004016200043d565b602060405180830381600087803b158015620001c757600080fd5b505af1158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200020291908101906200041b565b50600154604080517f850a150100000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163850a1501916004808301926020929190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200029d9190810190620003ad565b90506001600160a01b0381161562000356576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063095ea7b390620002fe908490600019906004016200043d565b602060405180830381600087803b1580156200031957600080fd5b505af11580156200032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200035491908101906200041b565b505b505050506200049c565b6040805160048152602481019091526020810180516001600160e01b03167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b805160208201fd5b600060208284031215620003bf578081fd5b81516001600160a01b0381168114620003d6578182fd5b9392505050565b60008060408385031215620003f0578081fd5b8251620003fd8162000483565b6020840151909250620004108162000483565b809150509250929050565b6000602082840312156200042d578081fd5b81518015158114620003d6578182fd5b6001600160a01b03929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6001600160a01b03811681146200049957600080fd5b50565b61267980620004ac6000396000f3fe6080604052600436106100655760003560e01c8063942d33c011610043578063942d33c014610102578063ae93b97a14610124578063f2fde38b1461013757610065565b8063442026ed14610097578063630f1e6c146100b75780638da5cb5b146100d7575b60025473ffffffffffffffffffffffffffffffffffffffff1633146100955761009561009033610157565b6101f6565b005b3480156100a357600080fd5b506100956100b2366004612191565b6101fe565b3480156100c357600080fd5b506100956100d23660046121d1565b6103e8565b3480156100e357600080fd5b506100ec610436565b6040516100f99190612304565b60405180910390f35b610115610110366004612108565b610452565b6040516100f99392919061258b565b61011561013236600461208b565b610487565b34801561014357600080fd5b50610095610152366004612053565b6104e2565b60606308b1869860e01b826040516024016101729190612304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061024a600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610586169050565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082168114156103e2576001546040517f6070410800000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906360704108906102ee9085906004016123a3565b60206040518083038186803b15801561030657600080fd5b505afa15801561031a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061033e919081019061206f565b905073ffffffffffffffffffffffffffffffffffffffff8116610366576103666100906105dc565b60006103b2601087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610636169050565b90506103df81837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610676565b50505b50505050565b6103f0610737565b61043183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250610780915050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061045f610899565b61046a88888861092e565b909350915061047a838686610cb8565b9050955095509592505050565b6000806000610494610899565b60006104b8670de0b6b3a76400006104b2888263ffffffff610e5716565b34610e7a565b90506104c5888289610ea4565b90945092506104d5848787610cb8565b9150509450945094915050565b6104ea610737565b73ffffffffffffffffffffffffffffffffffffffff81166105155761051061009061128f565b610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b600081600401835110156105a7576105a761009060038551856004016112c6565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b600081601401835110156106575761065761009060048551856014016112c6565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907f095ea7b300000000000000000000000000000000000000000000000000000000906106ae908590859060240161237d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506103e2848261136b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461077e5760005461077e9061009090339073ffffffffffffffffffffffffffffffffffffffff16611427565b565b6000610792838263ffffffff61058616565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b000000000000000000000000000000000000000000000000000000000148061082557507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b156108395761083483836114c9565b610431565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f0257179200000000000000000000000000000000000000000000000000000000141561088d5761083483836114e9565b610431610090826115b6565b346108a9576108a96100906115d1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b5050505050565b825160009081907fdc1600f30000000000000000000000000000000000000000000000000000000090825b818114610c985787818151811061096c57fe5b6020026020010151608001516000148061099d575087818151811061098d57fe5b602002602001015160a001516000145b156109a757610c90565b60006109b9888663ffffffff61162b16565b905060006109e960008b85815181106109ce57fe5b6020026020010151610140015161058690919063ffffffff16565b90506000807fffffffff000000000000000000000000000000000000000000000000000000008084169088161415610aef57610a4760108d8781518110610a2c57fe5b6020026020010151610140015161063690919063ffffffff16565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610a9c903090600401612304565b60206040518083038186803b158015610ab457600080fd5b505afa158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aec919081019061226c565b90505b600080610b238e8881518110610b0157fe5b60200260200101518d8981518110610b1557fe5b60200260200101518861164a565b91509150887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610c31576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610bc2903090600401612304565b60206040518083038186803b158015610bda57600080fd5b505afa158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c12919081019061226c565b9050610c2d610c27828663ffffffff61162b16565b8361178f565b9150505b610c538e8881518110610c4057fe5b6020026020010151610140015182610780565b610c638b8363ffffffff610e5716565b9a50610c758a8263ffffffff610e5716565b99508c8a10610c8957505050505050610c98565b5050505050505b600101610959565b5085831015610cae57610cae61009087856117a6565b5050935093915050565b600066b1a2bc2ec50000831115610cd557610cd5610090846117c3565b34841115610cea57610cea61009085346117de565b6000610cfc348663ffffffff61162b16565b9050610d1184670de0b6b3a764000087610e7a565b915080821115610d2857610d2861009083836117fb565b8015610e4f576002546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610d84908490600401612574565b600060405180830381600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506000821115610e045760405173ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610e02573d6000803e3d6000fd5b505b6000610e16828463ffffffff61162b16565b90508015610e4d57604051339082156108fc029083906000818181858888f19350505050158015610e4b573d6000803e3d6000fd5b505b505b509392505050565b600082820183811015610e7357610e7361009060008686611818565b9392505050565b6000610e9c83610e90868563ffffffff61183716565b9063ffffffff61186816565b949350505050565b6000806000610f59600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1457600080fd5b505afa158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4c919081019061226c565b3a9063ffffffff61183716565b86519091507fdc1600f3000000000000000000000000000000000000000000000000000000009060005b81811461128357888181518110610f9657fe5b60200260200101516080015160001480610fc75750888181518110610fb757fe5b602002602001015160a001516000145b15610fd15761127b565b6000610ff385610fe78b8a63ffffffff61162b16565b9063ffffffff61162b16565b9050600061100860008c85815181106109ce57fe5b90506000807fffffffff0000000000000000000000000000000000000000000000000000000080841690881614156110f35761104b60108e8781518110610a2c57fe5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906110a0903090600401612304565b60206040518083038186803b1580156110b857600080fd5b505afa1580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f0919081019061226c565b90505b6000806111278f888151811061110557fe5b60200260200101518e898151811061111957fe5b602002602001015188611892565b91509150887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561122f576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a08231906111c6903090600401612304565b60206040518083038186803b1580156111de57600080fd5b505afa1580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611216919081019061226c565b905061122b610c27828663ffffffff61162b16565b9150505b61123e8f8881518110610c4057fe5b61124e8c8363ffffffff610e5716565b9b506112608b8263ffffffff610e5716565b9a508d8c1061127457505050505050611283565b5050505050505b600101610f83565b50505050935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b8484846040516024016112e593929190612405565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161139491906122e8565b6000604051808303816000865af19150503d80600081146113d1576040519150601f19603f3d011682016040523d82523d6000602084013e6113d6565b606091505b5091509150811561141a5780516113ee575050611423565b80516020141561141a576000611405826000611949565b9050806001141561141857505050611423565b505b6103e2816101f6565b5050565b6060631de45ad160e01b8383604051602401611444929190612325565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60006114dc83601063ffffffff61063616565b9050610431813384611955565b806001146114fd576114fd6100908261198d565b600061151083601063ffffffff61063616565b9050600061152584602463ffffffff61194916565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd9061157e9030903390869060040161234c565b600060405180830381600087803b15801561159857600080fd5b505af11580156115ac573d6000803e3d6000fd5b5050505050505050565b6060637996a27160e01b8260405160240161017291906123a3565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8c0e562b0000000000000000000000000000000000000000000000000000000017905290565b6000828211156116445761164461009060028585611818565b50900390565b6000808460e001516000148061166f575061166f856101a001518661016001516119a8565b156116dd5760006116898660a00151876080015186611b47565b9050611693611d23565b61169e878388611b71565b90506116cf81608001516116c383606001518460200151610e5790919063ffffffff16565b9063ffffffff610e5716565b905190935091506117879050565b6116f1856101a001518661014001516119a8565b156117765760006117218660a0015161171b8860e00151896080015161162b90919063ffffffff16565b86611b47565b905061172b611d23565b611736878388611b71565b905061175381608001518260200151610e5790919063ffffffff16565b6060820151825191955061176d919063ffffffff61162b16565b92505050611787565b611787610090866101a00151611cde565b935093915050565b60008183101561179f5781610e73565b5090919050565b60606391353a0c60e01b838360405160240161144492919061257d565b6060631174fb8060e01b826040516024016101729190612574565b606063cdcbed5d60e01b838360405160240161144492919061257d565b606063ecf40fd960e01b838360405160240161144492919061257d565b606063e946c1bb60e01b8484846040516024016112e5939291906123e3565b600082611846575060006105d6565b8282028284828161185357fe5b0414610e7357610e7361009060018686611818565b60008161187e5761187e61009060038585611818565b600082848161188957fe5b04949350505050565b6000808460e00151600014806118b757506118b7856101a001518661014001516119a8565b1561190e576118c4611d23565b6118cf868587611b71565b90506118ec81608001518260200151610e5790919063ffffffff16565b60608201518251919450611906919063ffffffff61162b16565b915050611787565b611922856101a001518661016001516119a8565b156117765760a085015160e08601516000916116899161171b90829063ffffffff610e5716565b6000610e738383611cf9565b6040516060907fa9059cbb00000000000000000000000000000000000000000000000000000000906106ae908590859060240161237d565b606063baffa47460e01b826040516024016101729190612574565b6000806119bb848263ffffffff61058616565b905060006119cf848263ffffffff61058616565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fdc1600f3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416821480611a6757507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b8015611ac557507fffffffff000000000000000000000000000000000000000000000000000000008381169083161480611ac557507fffffffff00000000000000000000000000000000000000000000000000000000838116908216145b15611b30576000611add88601063ffffffff61063616565b90506000611af288601063ffffffff61063616565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161496505050505050506105d6565b60009450505050506105d6565b5050505092915050565b6000610e9c83610e90611b6182600163ffffffff61162b16565b6116c3888763ffffffff61183716565b611b79611d23565b6040516060907f9b44d5560000000000000000000000000000000000000000000000000000000090611bb390879087908790602401612413565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600154915190925073ffffffffffffffffffffffffffffffffffffffff909116906000906060908390611c649086906122e8565b6000604051808303816000865af19150503d8060008114611ca1576040519150601f19603f3d011682016040523d82523d6000602084013e611ca6565b606091505b50915091508115611cd357805160a014611cbc57fe5b80806020019051611cd0919081019061221b565b94505b505050509392505050565b60606331360af160e01b8260405160240161017291906123d0565b60008160200183511015611d1a57611d1a61009060058551856020016112c6565b50016020015190565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b80356105d681612614565b600082601f830112611d6d578081fd5b8135611d80611d7b826125c8565b6125a1565b8181529150602080830190840160005b83811015611b3d57611da88760208435890101611fcc565b83526020928301929190910190600101611d90565b600082601f830112611dcd578081fd5b8135611ddb611d7b826125c8565b818152915060208083019084810160005b84811015611f7a57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c03011215611e2c57600080fd5b611e35816125a1565b611e418b878501611d52565b8152611e508b60408501611d52565b86820152611e618b60608501611d52565b6040820152611e738b60808501611d52565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff80821115611ed857600080fd5b611ee68f8b848a0101611fcc565b84860152610180935083870135915080821115611f0257600080fd5b611f108f8b848a0101611fcc565b838601526101a0925082870135915080821115611f2c57600080fd5b611f3a8f8b848a0101611fcc565b8486015285870135935080841115611f5157600080fd5b5050611f618d8984880101611fcc565b9083015250865250509282019290820190600101611dec565b505050505092915050565b60008083601f840112611f96578182fd5b50813567ffffffffffffffff811115611fad578182fd5b602083019150836020828501011115611fc557600080fd5b9250929050565b600082601f830112611fdc578081fd5b813567ffffffffffffffff811115611ff2578182fd5b61202360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016125a1565b915080825283602082850101111561203a57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612064578081fd5b8135610e7381612614565b600060208284031215612080578081fd5b8151610e7381612614565b600080600080608085870312156120a0578283fd5b843567ffffffffffffffff808211156120b7578485fd5b6120c388838901611dbd565b955060208701359150808211156120d8578485fd5b506120e587828801611d5d565b9350506040850135915060608501356120fd81612614565b939692955090935050565b600080600080600060a0868803121561211f578081fd5b853567ffffffffffffffff80821115612136578283fd5b61214289838a01611dbd565b965060208801359550604088013591508082111561215e578283fd5b5061216b88828901611d5d565b93505060608601359150608086013561218381612614565b809150509295509295909350565b600080602083850312156121a3578182fd5b823567ffffffffffffffff8111156121b9578283fd5b6121c585828601611f85565b90969095509350505050565b6000806000604084860312156121e5578283fd5b833567ffffffffffffffff8111156121fb578384fd5b61220786828701611f85565b909790965060209590950135949350505050565b600060a0828403121561222c578081fd5b61223660a06125a1565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b60006020828403121561227d578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b600081518084526122b68160208601602086016125e8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516122fa8184602087016125e8565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252610e73602083018461229e565b60608101600485106123f157fe5b938152602081019290925260409091015290565b60608101600885106123f157fe5b600060608252612427606083018651612284565b60208501516124396080840182612284565b50604085015161244c60a0840182612284565b50606085015161245f60c0840182612284565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a081818801526124d561022088018661229e565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa09450848882030183890152612511818761229e565b925050828a0151945083878303016101e088015261252f828661229e565b9250808a015194505050818582030161020086015261254e818461229e565b9150508560208501528381036040850152612569818661229e565b979650505050505050565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff811182821017156125c057600080fd5b604052919050565b600067ffffffffffffffff8211156125de578081fd5b5060209081020190565b60005b838110156126035781810151838201526020016125eb565b838111156103e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461058357600080fdfea365627a7a723158206b46b28e3e02b6a8f8e2d3f8301ffac3b31c4d183245d9faedf1b2973ea8db6b6c6578706572696d656e74616cf564736f6c634300050d0040" }, "deployedBytecode": { - "object": "0x6080604052600436106100655760003560e01c8063942d33c011610043578063942d33c014610102578063ae93b97a14610124578063f2fde38b1461013757610065565b8063442026ed14610097578063630f1e6c146100b75780638da5cb5b146100d7575b60025473ffffffffffffffffffffffffffffffffffffffff1633146100955761009561009033610157565b6101f6565b005b3480156100a357600080fd5b506100956100b2366004611bc6565b6101fe565b3480156100c357600080fd5b506100956100d2366004611c06565b6104a8565b3480156100e357600080fd5b506100ec6104f1565b6040516100f99190611dc0565b60405180910390f35b610115610110366004611b1d565b61050d565b6040516100f993929190612047565b610115610132366004611aa0565b610542565b34801561014357600080fd5b50610095610152366004611a68565b61059d565b60606308b1869860e01b826040516024016101729190611dc0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061024a600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610614169050565b905060405161025890611d97565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156104a35760015460405160009173ffffffffffffffffffffffffffffffffffffffff16906360704108906102d490611d97565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825261031291600401611e5f565b60206040518083038186803b15801561032a57600080fd5b505afa15801561033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103629190810190611a84565b905073ffffffffffffffffffffffffffffffffffffffff811661038a5761038a61009061066a565b60006103d6601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff6106c4169050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063095ea7b39061044d9085907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600401611de1565b602060405180830381600087803b15801561046757600080fd5b505af115801561047b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061049f9190810190611ba6565b5050505b505050565b6104b0610704565b6104a383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525085925061074d915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061051a610838565b6105258888886108cd565b90935091506105358386866109f0565b9050955095509592505050565b600080600061054f610838565b6000610573670de0b6b3a764000061056d888263ffffffff610b8f16565b34610bb2565b9050610580888289610bdc565b90945092506105908487876109f0565b9150509450945094915050565b6105a5610704565b73ffffffffffffffffffffffffffffffffffffffff81166105d0576105cb610090610d9f565b610611565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b60008160040183511015610635576106356100906003855185600401610dd6565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b600081601401835110156106e5576106e56100906004855185601401610dd6565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331461074b5760005461074b9061009090339073ffffffffffffffffffffffffffffffffffffffff16610e7b565b565b600061075f838263ffffffff61061416565b905060405161076d90611d97565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107c9576107c48383610f1d565b6104a3565b6040516107d590611d45565b60405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561082c576107c48383611085565b6104a361009082611152565b346108485761084861009061116d565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108b257600080fd5b505af11580156108c6573d6000803e3d6000fd5b5050505050565b82516000908190815b8181146109d1578681815181106108e957fe5b6020026020010151608001516000148061091a575086818151811061090a57fe5b602002602001015160a001516000145b15610924576109c9565b6000610936878563ffffffff6111c716565b905060008061096c8a858151811061094a57fe5b602002602001015189868151811061095e57fe5b6020026020010151856111e6565b915091506109928a858151811061097f57fe5b602002602001015161014001518261074d565b6109a2878363ffffffff610b8f16565b96506109b4868263ffffffff610b8f16565b95508886106109c5575050506109d1565b5050505b6001016108d6565b50848210156109e7576109e76100908684611339565b50935093915050565b600066b1a2bc2ec50000831115610a0d57610a0d61009084611356565b34841115610a2257610a226100908534611371565b6000610a34348663ffffffff6111c716565b9050610a4984670de0b6b3a764000087610bb2565b915080821115610a6057610a60610090838361138e565b8015610b87576002546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610abc908490600401612030565b600060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506000821115610b3c5760405173ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610b3a573d6000803e3d6000fd5b505b6000610b4e828463ffffffff6111c716565b90508015610b8557604051339082156108fc029083906000818181858888f19350505050158015610b83573d6000803e3d6000fd5b505b505b509392505050565b600082820183811015610bab57610bab610090600086866113ab565b9392505050565b6000610bd483610bc8868563ffffffff6113ca16565b9063ffffffff6113fb16565b949350505050565b6000806000855190506000610c97600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5257600080fd5b505afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c8a9190810190611cad565b3a9063ffffffff6113ca16565b905060005b828114610d9457878181518110610caf57fe5b60200260200101516080015160001480610ce05750878181518110610cd057fe5b602002602001015160a001516000145b15610cea57610d8c565b6000610d0c83610d008a8963ffffffff6111c716565b9063ffffffff6111c716565b9050600080610d428b8581518110610d2057fe5b60200260200101518a8681518110610d3457fe5b602002602001015185611425565b91509150610d558b858151811061097f57fe5b610d65888363ffffffff610b8f16565b9750610d77878263ffffffff610b8f16565b9650898810610d8857505050610d94565b5050505b600101610c9c565b505050935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b848484604051602401610df593929190611ec1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b6060631de45ad160e01b8383604051602401610e98929190611e07565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b6000610f3083601063ffffffff6106c416565b9050600060608273ffffffffffffffffffffffffffffffffffffffff16604051610f5990611d6e565b60405180910390203386604051602401610f74929190611de1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610ffd9190611d29565b6000604051808303816000865af19150503d806000811461103a576040519150601f19603f3d011682016040523d82523d6000602084013e61103f565b606091505b50915091508161105557611055610090826114ea565b3d15611074576000915060203d14156110745760206000803e60005191505b816108c6576108c6610090826114ea565b806001146110995761109961009082611505565b60006110ac83601063ffffffff6106c416565b905060006110c184602463ffffffff61152016565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd9061111a90309033908690600401611e2e565b600060405180830381600087803b15801561113457600080fd5b505af1158015611148573d6000803e3d6000fd5b5050505050505050565b6060637996a27160e01b826040516024016101729190611e5f565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8c0e562b0000000000000000000000000000000000000000000000000000000017905290565b6000828211156111e0576111e0610090600285856113ab565b50900390565b6000808460e001516000148061121257506101608501516101a08601516112129163ffffffff61152c16565b1561128057600061122c8660a00151876080015186611552565b905061123661172e565b61124187838861157c565b9050611272816080015161126683606001518460200151610b8f90919063ffffffff16565b9063ffffffff610b8f16565b905190935091506113319050565b6101408501516101a086015161129b9163ffffffff61152c16565b156113205760006112cb8660a001516112c58860e0015189608001516111c790919063ffffffff16565b86611552565b90506112d561172e565b6112e087838861157c565b90506112fd81608001518260200151610b8f90919063ffffffff16565b60608201518251919550611317919063ffffffff6111c716565b92505050611331565b611331610090866101a001516116e9565b935093915050565b60606391353a0c60e01b8383604051602401610e98929190612039565b6060631174fb8060e01b826040516024016101729190612030565b606063cdcbed5d60e01b8383604051602401610e98929190612039565b606063ecf40fd960e01b8383604051602401610e98929190612039565b606063e946c1bb60e01b848484604051602401610df593929190611e9f565b6000826113d957506000610664565b828202828482816113e657fe5b0414610bab57610bab610090600186866113ab565b60008161141157611411610090600385856113ab565b600082848161141c57fe5b04949350505050565b6000808460e001516000148061145157506101408501516101a08601516114519163ffffffff61152c16565b156114a85761145e61172e565b61146986858761157c565b905061148681608001518260200151610b8f90919063ffffffff16565b606082015182519194506114a0919063ffffffff6111c716565b915050611331565b6101608501516101a08601516114c39163ffffffff61152c16565b156113205760a085015160e086015160009161122c916112c590829063ffffffff610b8f16565b6060635e7eb60f60e01b826040516024016101729190611e8c565b606063baffa47460e01b826040516024016101729190612030565b6000610bab8383611704565b600081518351148015610bab575081805190602001208380519060200120149392505050565b6000610bd483610bc861156c82600163ffffffff6111c716565b611266888763ffffffff6113ca16565b61158461172e565b6040516060907f9b44d55600000000000000000000000000000000000000000000000000000000906115be90879087908790602401611ecf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600154915190925073ffffffffffffffffffffffffffffffffffffffff90911690600090606090839061166f908690611d29565b6000604051808303816000865af19150503d80600081146116ac576040519150601f19603f3d011682016040523d82523d6000602084013e6116b1565b606091505b509150915081156116de57805160a0146116c757fe5b808060200190516116db9190810190611c50565b94505b505050509392505050565b60606331360af160e01b826040516024016101729190611e8c565b60008160200183511015611725576117256100906005855185602001610dd6565b50016020015190565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8035610664816120d4565b600082601f830112611778578081fd5b813561178b61178682612084565b61205d565b8181529150602080830190840160005b838110156117c8576117b387602084358901016119e1565b8352602092830192919091019060010161179b565b5050505092915050565b600082601f8301126117e2578081fd5b81356117f061178682612084565b818152915060208083019084810160005b8481101561198f57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561184157600080fd5b61184a8161205d565b6118568b87850161175d565b81526118658b6040850161175d565b868201526118768b6060850161175d565b60408201526118888b6080850161175d565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff808211156118ed57600080fd5b6118fb8f8b848a01016119e1565b8486015261018093508387013591508082111561191757600080fd5b6119258f8b848a01016119e1565b838601526101a092508287013591508082111561194157600080fd5b61194f8f8b848a01016119e1565b848601528587013593508084111561196657600080fd5b50506119768d89848801016119e1565b9083015250865250509282019290820190600101611801565b505050505092915050565b60008083601f8401126119ab578182fd5b50813567ffffffffffffffff8111156119c2578182fd5b6020830191508360208285010111156119da57600080fd5b9250929050565b600082601f8301126119f1578081fd5b813567ffffffffffffffff811115611a07578182fd5b611a3860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161205d565b9150808252836020828501011115611a4f57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215611a79578081fd5b8135610bab816120d4565b600060208284031215611a95578081fd5b8151610bab816120d4565b60008060008060808587031215611ab5578283fd5b843567ffffffffffffffff80821115611acc578485fd5b611ad8888389016117d2565b95506020870135915080821115611aed578485fd5b50611afa87828801611768565b935050604085013591506060850135611b12816120d4565b939692955090935050565b600080600080600060a08688031215611b34578081fd5b853567ffffffffffffffff80821115611b4b578283fd5b611b5789838a016117d2565b9650602088013595506040880135915080821115611b73578283fd5b50611b8088828901611768565b935050606086013591506080860135611b98816120d4565b809150509295509295909350565b600060208284031215611bb7578081fd5b81518015158114610bab578182fd5b60008060208385031215611bd8578182fd5b823567ffffffffffffffff811115611bee578283fd5b611bfa8582860161199a565b90969095509350505050565b600080600060408486031215611c1a578283fd5b833567ffffffffffffffff811115611c30578384fd5b611c3c8682870161199a565b909790965060209590950135949350505050565b600060a0828403128015611c62578182fd5b8015611c6c578182fd5b50611c7760a061205d565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215611cbe578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611cf78160208601602086016120a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251611d3b8184602087016120a4565b9190910192915050565b7f455243373231546f6b656e28616464726573732c75696e7432353629000000008152601c0190565b7f7472616e7366657228616464726573732c75696e743235362900000000000000815260190190565b7f4552433230546f6b656e28616464726573732900000000000000000000000000815260130190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252610bab6020830184611cdf565b6060810160048510611ead57fe5b938152602081019290925260409091015290565b6060810160088510611ead57fe5b600060608252611ee3606083018651611cc5565b6020850151611ef56080840182611cc5565b506040850151611f0860a0840182611cc5565b506060850151611f1b60c0840182611cc5565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a08181880152611f91610220880186611cdf565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa09450848882030183890152611fcd8187611cdf565b925050828a0151945083878303016101e0880152611feb8286611cdf565b9250808a015194505050818582030161020086015261200a8184611cdf565b91505085602085015283810360408501526120258186611cdf565b979650505050505050565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff8111828210171561207c57600080fd5b604052919050565b600067ffffffffffffffff82111561209a578081fd5b5060209081020190565b60005b838110156120bf5781810151838201526020016120a7565b838111156120ce576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461061157600080fdfea365627a7a72315820afeb88c9cc19090963cb885eb76d709ca1a151f8f73996031898e2b50578a89b6c6578706572696d656e74616cf564736f6c634300050c0040" + "object": "0x6080604052600436106100655760003560e01c8063942d33c011610043578063942d33c014610102578063ae93b97a14610124578063f2fde38b1461013757610065565b8063442026ed14610097578063630f1e6c146100b75780638da5cb5b146100d7575b60025473ffffffffffffffffffffffffffffffffffffffff1633146100955761009561009033610157565b6101f6565b005b3480156100a357600080fd5b506100956100b2366004612191565b6101fe565b3480156100c357600080fd5b506100956100d23660046121d1565b6103e8565b3480156100e357600080fd5b506100ec610436565b6040516100f99190612304565b60405180910390f35b610115610110366004612108565b610452565b6040516100f99392919061258b565b61011561013236600461208b565b610487565b34801561014357600080fd5b50610095610152366004612053565b6104e2565b60606308b1869860e01b826040516024016101729190612304565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061024a600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610586169050565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082168114156103e2576001546040517f6070410800000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906360704108906102ee9085906004016123a3565b60206040518083038186803b15801561030657600080fd5b505afa15801561031a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061033e919081019061206f565b905073ffffffffffffffffffffffffffffffffffffffff8116610366576103666100906105dc565b60006103b2601087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610636169050565b90506103df81837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610676565b50505b50505050565b6103f0610737565b61043183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250610780915050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061045f610899565b61046a88888861092e565b909350915061047a838686610cb8565b9050955095509592505050565b6000806000610494610899565b60006104b8670de0b6b3a76400006104b2888263ffffffff610e5716565b34610e7a565b90506104c5888289610ea4565b90945092506104d5848787610cb8565b9150509450945094915050565b6104ea610737565b73ffffffffffffffffffffffffffffffffffffffff81166105155761051061009061128f565b610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b600081600401835110156105a7576105a761009060038551856004016112c6565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b600081601401835110156106575761065761009060048551856014016112c6565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907f095ea7b300000000000000000000000000000000000000000000000000000000906106ae908590859060240161237d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506103e2848261136b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461077e5760005461077e9061009090339073ffffffffffffffffffffffffffffffffffffffff16611427565b565b6000610792838263ffffffff61058616565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b000000000000000000000000000000000000000000000000000000000148061082557507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b156108395761083483836114c9565b610431565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f0257179200000000000000000000000000000000000000000000000000000000141561088d5761083483836114e9565b610431610090826115b6565b346108a9576108a96100906115d1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b5050505050565b825160009081907fdc1600f30000000000000000000000000000000000000000000000000000000090825b818114610c985787818151811061096c57fe5b6020026020010151608001516000148061099d575087818151811061098d57fe5b602002602001015160a001516000145b156109a757610c90565b60006109b9888663ffffffff61162b16565b905060006109e960008b85815181106109ce57fe5b6020026020010151610140015161058690919063ffffffff16565b90506000807fffffffff000000000000000000000000000000000000000000000000000000008084169088161415610aef57610a4760108d8781518110610a2c57fe5b6020026020010151610140015161063690919063ffffffff16565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610a9c903090600401612304565b60206040518083038186803b158015610ab457600080fd5b505afa158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aec919081019061226c565b90505b600080610b238e8881518110610b0157fe5b60200260200101518d8981518110610b1557fe5b60200260200101518861164a565b91509150887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610c31576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610bc2903090600401612304565b60206040518083038186803b158015610bda57600080fd5b505afa158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c12919081019061226c565b9050610c2d610c27828663ffffffff61162b16565b8361178f565b9150505b610c538e8881518110610c4057fe5b6020026020010151610140015182610780565b610c638b8363ffffffff610e5716565b9a50610c758a8263ffffffff610e5716565b99508c8a10610c8957505050505050610c98565b5050505050505b600101610959565b5085831015610cae57610cae61009087856117a6565b5050935093915050565b600066b1a2bc2ec50000831115610cd557610cd5610090846117c3565b34841115610cea57610cea61009085346117de565b6000610cfc348663ffffffff61162b16565b9050610d1184670de0b6b3a764000087610e7a565b915080821115610d2857610d2861009083836117fb565b8015610e4f576002546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90610d84908490600401612574565b600060405180830381600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506000821115610e045760405173ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610e02573d6000803e3d6000fd5b505b6000610e16828463ffffffff61162b16565b90508015610e4d57604051339082156108fc029083906000818181858888f19350505050158015610e4b573d6000803e3d6000fd5b505b505b509392505050565b600082820183811015610e7357610e7361009060008686611818565b9392505050565b6000610e9c83610e90868563ffffffff61183716565b9063ffffffff61186816565b949350505050565b6000806000610f59600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1457600080fd5b505afa158015610f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4c919081019061226c565b3a9063ffffffff61183716565b86519091507fdc1600f3000000000000000000000000000000000000000000000000000000009060005b81811461128357888181518110610f9657fe5b60200260200101516080015160001480610fc75750888181518110610fb757fe5b602002602001015160a001516000145b15610fd15761127b565b6000610ff385610fe78b8a63ffffffff61162b16565b9063ffffffff61162b16565b9050600061100860008c85815181106109ce57fe5b90506000807fffffffff0000000000000000000000000000000000000000000000000000000080841690881614156110f35761104b60108e8781518110610a2c57fe5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906110a0903090600401612304565b60206040518083038186803b1580156110b857600080fd5b505afa1580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f0919081019061226c565b90505b6000806111278f888151811061110557fe5b60200260200101518e898151811061111957fe5b602002602001015188611892565b91509150887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561122f576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a08231906111c6903090600401612304565b60206040518083038186803b1580156111de57600080fd5b505afa1580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611216919081019061226c565b905061122b610c27828663ffffffff61162b16565b9150505b61123e8f8881518110610c4057fe5b61124e8c8363ffffffff610e5716565b9b506112608b8263ffffffff610e5716565b9a508d8c1061127457505050505050611283565b5050505050505b600101610f83565b50505050935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b8484846040516024016112e593929190612405565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161139491906122e8565b6000604051808303816000865af19150503d80600081146113d1576040519150601f19603f3d011682016040523d82523d6000602084013e6113d6565b606091505b5091509150811561141a5780516113ee575050611423565b80516020141561141a576000611405826000611949565b9050806001141561141857505050611423565b505b6103e2816101f6565b5050565b6060631de45ad160e01b8383604051602401611444929190612325565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b60006114dc83601063ffffffff61063616565b9050610431813384611955565b806001146114fd576114fd6100908261198d565b600061151083601063ffffffff61063616565b9050600061152584602463ffffffff61194916565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd9061157e9030903390869060040161234c565b600060405180830381600087803b15801561159857600080fd5b505af11580156115ac573d6000803e3d6000fd5b5050505050505050565b6060637996a27160e01b8260405160240161017291906123a3565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8c0e562b0000000000000000000000000000000000000000000000000000000017905290565b6000828211156116445761164461009060028585611818565b50900390565b6000808460e001516000148061166f575061166f856101a001518661016001516119a8565b156116dd5760006116898660a00151876080015186611b47565b9050611693611d23565b61169e878388611b71565b90506116cf81608001516116c383606001518460200151610e5790919063ffffffff16565b9063ffffffff610e5716565b905190935091506117879050565b6116f1856101a001518661014001516119a8565b156117765760006117218660a0015161171b8860e00151896080015161162b90919063ffffffff16565b86611b47565b905061172b611d23565b611736878388611b71565b905061175381608001518260200151610e5790919063ffffffff16565b6060820151825191955061176d919063ffffffff61162b16565b92505050611787565b611787610090866101a00151611cde565b935093915050565b60008183101561179f5781610e73565b5090919050565b60606391353a0c60e01b838360405160240161144492919061257d565b6060631174fb8060e01b826040516024016101729190612574565b606063cdcbed5d60e01b838360405160240161144492919061257d565b606063ecf40fd960e01b838360405160240161144492919061257d565b606063e946c1bb60e01b8484846040516024016112e5939291906123e3565b600082611846575060006105d6565b8282028284828161185357fe5b0414610e7357610e7361009060018686611818565b60008161187e5761187e61009060038585611818565b600082848161188957fe5b04949350505050565b6000808460e00151600014806118b757506118b7856101a001518661014001516119a8565b1561190e576118c4611d23565b6118cf868587611b71565b90506118ec81608001518260200151610e5790919063ffffffff16565b60608201518251919450611906919063ffffffff61162b16565b915050611787565b611922856101a001518661016001516119a8565b156117765760a085015160e08601516000916116899161171b90829063ffffffff610e5716565b6000610e738383611cf9565b6040516060907fa9059cbb00000000000000000000000000000000000000000000000000000000906106ae908590859060240161237d565b606063baffa47460e01b826040516024016101729190612574565b6000806119bb848263ffffffff61058616565b905060006119cf848263ffffffff61058616565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fdc1600f3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416821480611a6757507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b8015611ac557507fffffffff000000000000000000000000000000000000000000000000000000008381169083161480611ac557507fffffffff00000000000000000000000000000000000000000000000000000000838116908216145b15611b30576000611add88601063ffffffff61063616565b90506000611af288601063ffffffff61063616565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161496505050505050506105d6565b60009450505050506105d6565b5050505092915050565b6000610e9c83610e90611b6182600163ffffffff61162b16565b6116c3888763ffffffff61183716565b611b79611d23565b6040516060907f9b44d5560000000000000000000000000000000000000000000000000000000090611bb390879087908790602401612413565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600154915190925073ffffffffffffffffffffffffffffffffffffffff909116906000906060908390611c649086906122e8565b6000604051808303816000865af19150503d8060008114611ca1576040519150601f19603f3d011682016040523d82523d6000602084013e611ca6565b606091505b50915091508115611cd357805160a014611cbc57fe5b80806020019051611cd0919081019061221b565b94505b505050509392505050565b60606331360af160e01b8260405160240161017291906123d0565b60008160200183511015611d1a57611d1a61009060058551856020016112c6565b50016020015190565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b80356105d681612614565b600082601f830112611d6d578081fd5b8135611d80611d7b826125c8565b6125a1565b8181529150602080830190840160005b83811015611b3d57611da88760208435890101611fcc565b83526020928301929190910190600101611d90565b600082601f830112611dcd578081fd5b8135611ddb611d7b826125c8565b818152915060208083019084810160005b84811015611f7a57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c03011215611e2c57600080fd5b611e35816125a1565b611e418b878501611d52565b8152611e508b60408501611d52565b86820152611e618b60608501611d52565b6040820152611e738b60808501611d52565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff80821115611ed857600080fd5b611ee68f8b848a0101611fcc565b84860152610180935083870135915080821115611f0257600080fd5b611f108f8b848a0101611fcc565b838601526101a0925082870135915080821115611f2c57600080fd5b611f3a8f8b848a0101611fcc565b8486015285870135935080841115611f5157600080fd5b5050611f618d8984880101611fcc565b9083015250865250509282019290820190600101611dec565b505050505092915050565b60008083601f840112611f96578182fd5b50813567ffffffffffffffff811115611fad578182fd5b602083019150836020828501011115611fc557600080fd5b9250929050565b600082601f830112611fdc578081fd5b813567ffffffffffffffff811115611ff2578182fd5b61202360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016125a1565b915080825283602082850101111561203a57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612064578081fd5b8135610e7381612614565b600060208284031215612080578081fd5b8151610e7381612614565b600080600080608085870312156120a0578283fd5b843567ffffffffffffffff808211156120b7578485fd5b6120c388838901611dbd565b955060208701359150808211156120d8578485fd5b506120e587828801611d5d565b9350506040850135915060608501356120fd81612614565b939692955090935050565b600080600080600060a0868803121561211f578081fd5b853567ffffffffffffffff80821115612136578283fd5b61214289838a01611dbd565b965060208801359550604088013591508082111561215e578283fd5b5061216b88828901611d5d565b93505060608601359150608086013561218381612614565b809150509295509295909350565b600080602083850312156121a3578182fd5b823567ffffffffffffffff8111156121b9578283fd5b6121c585828601611f85565b90969095509350505050565b6000806000604084860312156121e5578283fd5b833567ffffffffffffffff8111156121fb578384fd5b61220786828701611f85565b909790965060209590950135949350505050565b600060a0828403121561222c578081fd5b61223660a06125a1565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b60006020828403121561227d578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b600081518084526122b68160208601602086016125e8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516122fa8184602087016125e8565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b600060208252610e73602083018461229e565b60608101600485106123f157fe5b938152602081019290925260409091015290565b60608101600885106123f157fe5b600060608252612427606083018651612284565b60208501516124396080840182612284565b50604085015161244c60a0840182612284565b50606085015161245f60c0840182612284565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a081818801526124d561022088018661229e565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa09450848882030183890152612511818761229e565b925050828a0151945083878303016101e088015261252f828661229e565b9250808a015194505050818582030161020086015261254e818461229e565b9150508560208501528381036040850152612569818661229e565b979650505050505050565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff811182821017156125c057600080fd5b604052919050565b600067ffffffffffffffff8211156125de578081fd5b5060209081020190565b60005b838110156126035781810151838201526020016125eb565b838111156103e25750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461058357600080fdfea365627a7a723158206b46b28e3e02b6a8f8e2d3f8301ffac3b31c4d183245d9faedf1b2973ea8db6b6c6578706572696d656e74616cf564736f6c634300050d0040" } } }, "compiler": { "name": "solc", - "version": "soljson-v0.5.12+commit.7709ece9.js", + "version": "soljson-v0.5.13+commit.5b0b510c.js", "settings": { "optimizer": { "enabled": true, @@ -199,5 +208,5 @@ "evmVersion": "constantinople" } }, - "networks": {} + "chains": {} } diff --git a/packages/contract-wrappers/src/generated-wrappers/forwarder.ts b/packages/contract-wrappers/src/generated-wrappers/forwarder.ts index af5c8ad561..ba99e19d60 100644 --- a/packages/contract-wrappers/src/generated-wrappers/forwarder.ts +++ b/packages/contract-wrappers/src/generated-wrappers/forwarder.ts @@ -7,6 +7,7 @@ import { ContractTxFunctionObj, SendTransactionOpts, BaseContract, + SubscriptionManager, PromiseWithTransactionHash, methodAbiToFunctionSignature, } from '@0x/base-contract'; @@ -19,6 +20,7 @@ import { ContractAbi, ContractArtifact, DecodedLogArgs, + LogWithDecodedArgs, MethodAbi, TransactionReceiptWithDecodedLogs, TxData, @@ -32,6 +34,17 @@ import { assert } from '@0x/assert'; import * as ethers from 'ethers'; // tslint:enable:no-unused-variable +export type ForwarderEventArgs = ForwarderOwnershipTransferredEventArgs; + +export enum ForwarderEvents { + OwnershipTransferred = 'OwnershipTransferred', +} + +export interface ForwarderOwnershipTransferredEventArgs extends DecodedLogArgs { + previousOwner: string; + newOwner: string; +} + /* istanbul ignore next */ // tslint:disable:no-parameter-reassignment // tslint:disable-next-line:class-name @@ -41,13 +54,14 @@ export class ForwarderContract extends BaseContract { */ public static deployedBytecode: string | undefined; private readonly _methodABIIndex: { [name: string]: number } = {}; + private readonly _subscriptionManager: SubscriptionManager; public static async deployFrom0xArtifactAsync( artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, logDecodeDependencies: { [contractName: string]: ContractArtifact | SimpleContractArtifact }, _exchange: string, - _wethAssetData: string, + _weth: string, ): Promise { assert.doesConformToSchema('txDefaults', txDefaults, schemas.txDataSchema, [ schemas.addressSchema, @@ -73,7 +87,7 @@ export class ForwarderContract extends BaseContract { txDefaults, logDecodeDependenciesAbiOnly, _exchange, - _wethAssetData, + _weth, ); } public static async deployAsync( @@ -83,7 +97,7 @@ export class ForwarderContract extends BaseContract { txDefaults: Partial, logDecodeDependencies: { [contractName: string]: ContractAbi }, _exchange: string, - _wethAssetData: string, + _weth: string, ): Promise { assert.isHexString('bytecode', bytecode); assert.doesConformToSchema('txDefaults', txDefaults, schemas.txDataSchema, [ @@ -93,14 +107,14 @@ export class ForwarderContract extends BaseContract { ]); const provider = providerUtils.standardizeOrThrow(supportedProvider); const constructorAbi = BaseContract._lookupConstructorAbi(abi); - [_exchange, _wethAssetData] = BaseContract._formatABIDataItemList( + [_exchange, _weth] = BaseContract._formatABIDataItemList( constructorAbi.inputs, - [_exchange, _wethAssetData], + [_exchange, _weth], BaseContract._bigNumberToString, ); const iface = new ethers.utils.Interface(abi); const deployInfo = iface.deployFunction; - const txData = deployInfo.encode(bytecode, [_exchange, _wethAssetData]); + const txData = deployInfo.encode(bytecode, [_exchange, _weth]); const web3Wrapper = new Web3Wrapper(provider); const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync( { @@ -119,7 +133,7 @@ export class ForwarderContract extends BaseContract { txDefaults, logDecodeDependencies, ); - contractInstance.constructorArgs = [_exchange, _wethAssetData]; + contractInstance.constructorArgs = [_exchange, _weth]; return contractInstance; } @@ -135,8 +149,8 @@ export class ForwarderContract extends BaseContract { type: 'address', }, { - name: '_wethAssetData', - type: 'bytes', + name: '_weth', + type: 'address', }, ], outputs: [], @@ -144,6 +158,24 @@ export class ForwarderContract extends BaseContract { stateMutability: 'nonpayable', type: 'constructor', }, + { + anonymous: false, + inputs: [ + { + name: 'previousOwner', + type: 'address', + indexed: true, + }, + { + name: 'newOwner', + type: 'address', + indexed: true, + }, + ], + name: 'OwnershipTransferred', + outputs: [], + type: 'event', + }, { inputs: [], outputs: [], @@ -744,11 +776,10 @@ export class ForwarderContract extends BaseContract { }; } /** - * Withdraws assets from this contract. The contract formerly required a ZRX balance in order - * to function optimally, and this function allows the ZRX to be withdrawn by owner. - * It may also be used to withdraw assets that were accidentally sent to this contract. + * Withdraws assets from this contract. It may be used by the owner to withdraw assets + * that were accidentally sent to this contract. * @param assetData Byte array encoded for the respective asset proxy. - * @param amount Amount of ERC20 token to withdraw. + * @param amount Amount of the asset to withdraw. */ public withdrawAsset(assetData: string, amount: BigNumber): ContractTxFunctionObj { const self = (this as any) as ForwarderContract; @@ -798,6 +829,74 @@ export class ForwarderContract extends BaseContract { }; } + /** + * Subscribe to an event type emitted by the Forwarder contract. + * @param eventName The Forwarder contract event you would like to subscribe to. + * @param indexFilterValues An object where the keys are indexed args returned by the event and + * the value is the value you are interested in. E.g `{maker: aUserAddressHex}` + * @param callback Callback that gets called when a log is added/removed + * @param isVerbose Enable verbose subscription warnings (e.g recoverable network issues encountered) + * @return Subscription token used later to unsubscribe + */ + public subscribe( + eventName: ForwarderEvents, + indexFilterValues: IndexedFilterValues, + callback: EventCallback, + isVerbose: boolean = false, + blockPollingIntervalMs?: number, + ): string { + assert.doesBelongToStringEnum('eventName', eventName, ForwarderEvents); + assert.doesConformToSchema('indexFilterValues', indexFilterValues, schemas.indexFilterValuesSchema); + assert.isFunction('callback', callback); + const subscriptionToken = this._subscriptionManager.subscribe( + this.address, + eventName, + indexFilterValues, + ForwarderContract.ABI(), + callback, + isVerbose, + blockPollingIntervalMs, + ); + return subscriptionToken; + } + /** + * Cancel a subscription + * @param subscriptionToken Subscription token returned by `subscribe()` + */ + public unsubscribe(subscriptionToken: string): void { + this._subscriptionManager.unsubscribe(subscriptionToken); + } + /** + * Cancels all existing subscriptions + */ + public unsubscribeAll(): void { + this._subscriptionManager.unsubscribeAll(); + } + /** + * Gets historical logs without creating a subscription + * @param eventName The Forwarder contract event you would like to subscribe to. + * @param blockRange Block range to get logs from. + * @param indexFilterValues An object where the keys are indexed args returned by the event and + * the value is the value you are interested in. E.g `{_from: aUserAddressHex}` + * @return Array of logs that match the parameters + */ + public async getLogsAsync( + eventName: ForwarderEvents, + blockRange: BlockRange, + indexFilterValues: IndexedFilterValues, + ): Promise>> { + assert.doesBelongToStringEnum('eventName', eventName, ForwarderEvents); + assert.doesConformToSchema('blockRange', blockRange, schemas.blockRangeSchema); + assert.doesConformToSchema('indexFilterValues', indexFilterValues, schemas.indexFilterValuesSchema); + const logs = await this._subscriptionManager.getLogsAsync( + this.address, + eventName, + blockRange, + indexFilterValues, + ForwarderContract.ABI(), + ); + return logs; + } constructor( address: string, supportedProvider: SupportedProvider, @@ -815,6 +914,10 @@ export class ForwarderContract extends BaseContract { deployedBytecode, ); classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', '_web3Wrapper']); + this._subscriptionManager = new SubscriptionManager( + ForwarderContract.ABI(), + this._web3Wrapper, + ); ForwarderContract.ABI().forEach((item, index) => { if (item.type === 'function') { const methodAbi = item as MethodAbi; diff --git a/packages/contract-wrappers/src/index.ts b/packages/contract-wrappers/src/index.ts index d4d9d22436..599f190f48 100644 --- a/packages/contract-wrappers/src/index.ts +++ b/packages/contract-wrappers/src/index.ts @@ -30,7 +30,7 @@ export { ExchangeProtocolFeeMultiplierEventArgs, ExchangeTransactionExecutionEventArgs, } from './generated-wrappers/exchange'; -export { ForwarderContract } from './generated-wrappers/forwarder'; +export { ForwarderContract, ForwarderEventArgs, ForwarderEvents } from './generated-wrappers/forwarder'; export { WETH9EventArgs, WETH9Events,