@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
158 lines • 314 kB
JSON
{
"contractName": "TestParaswapTrader",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_paraswapAugustusRouter",
"type": "address"
},
{
"internalType": "address",
"name": "_paraswapTransferProxy",
"type": "address"
},
{
"internalType": "address",
"name": "_dolomiteMargin",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"constant": true,
"inputs": [],
"name": "DOLOMITE_MARGIN",
"outputs": [
{
"internalType": "contract IDolomiteMargin",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PARASWAP_AUGUSTUS_ROUTER",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PARASWAP_TRANSFER_PROXY",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "_receiver",
"type": "address"
},
{
"internalType": "address",
"name": "_makerToken",
"type": "address"
},
{
"internalType": "address",
"name": "_takerToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_requestedFillAmount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_orderData",
"type": "bytes"
}
],
"name": "exchange",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "getExchangeCost",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_paraswapAugustusRouter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_paraswapTransferProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PARASWAP_AUGUSTUS_ROUTER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PARASWAP_TRANSFER_PROXY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_makerToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_takerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedFillAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_orderData\",\"type\":\"bytes\"}],\"name\":\"exchange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getExchangeCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestParaswapTrader.sol\":\"TestParaswapTrader\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xe40babc0a6dd2a767d76f3e0f0a22de124c4c480f2b2227a7b924b44e57526ea\",\"urls\":[\"bzz-raw://458f7f1f16eacd4faae597090503dc1e58446e9d371640c77b2e01e3e3113f17\",\"dweb:/ipfs/QmXqTG4sWJeDh5XA286KarbqHT4qJ7m3dphS16enpqtQiX\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/ERC20Lib.sol\":{\"keccak256\":\"0x331086cc36f95ff0d8950848a2aef99f0ff6ce574e2bddf5d6a32a272e8d06c5\",\"urls\":[\"bzz-raw://fe2191ab91ac1a16a3131608f1221939033db21d6778cc763ae68ca1c7286bfa\",\"dweb:/ipfs/QmUauBwNu7EpZyhtMAvB7QayUBCqvAeDQWDTMKasQAuTvc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0x74799c3fac16738be41e270a70d3f7ad4f75d1dc7e5d8c58f0fe4c6128345112\",\"urls\":[\"bzz-raw://d9602af1001189d199736d17266d5fb34a32f71cd05fbcf4c0f97c0b3a642eee\",\"dweb:/ipfs/QmPto2DkZ1nKqicBMdMkaek7kGSSXqSKnf697h5zuthvsy\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/testing/TestParaswapTrader.sol\":{\"keccak256\":\"0x559d8c77069e37ffbeb44c78e263afc9052bc5172f20e78d7c331c6177dcbb8e\",\"urls\":[\"bzz-raw://950f3ce15343b1a8dd7b4dfb699500fd03d4009bdb662a8c552ef1985b475186\",\"dweb:/ipfs/QmW6z8YTg9tAMgSYPDVLw7yZLLZyDzSBm2Ny9DvYXKLz8E\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\",\"urls\":[\"bzz-raw://7d8ec81683520c06baeef3f7e06cd82bd6fd5fa611f26857f475f6c829540aff\",\"dweb:/ipfs/QmTDkFzKnrpiV1UKnSoiZAHPuguWzokrr4pFbSPvyaSo56\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b506040516200183a3803806200183a833981016040819052620000349162000088565b600080546001600160a01b03199081166001600160a01b03938416179091556001805482169483169490941790935560028054909316911617905562000108565b80516200008281620000ee565b92915050565b6000806000606084860312156200009e57600080fd5b6000620000ac868662000075565b9350506020620000bf8682870162000075565b9250506040620000d28682870162000075565b9150509250925092565b60006001600160a01b03821662000082565b620000f981620000dc565b81146200010557600080fd5b50565b61172280620001186000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80633a8fdd7d116100505780633a8fdd7d1461009f5780637d98ebac146100bf57806384796caf146100d257610067565b806315c14a4a1461006c57806317f5e7881461008a575b600080fd5b6100746100da565b60405161008191906114ee565b60405180910390f35b6100926100f6565b60405161008191906114aa565b6100b26100ad366004610f64565b610112565b604051610081919061154d565b6100b26100cd366004610ebf565b6101b4565b610092610371565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600061013d7f546573745061726173776170547261646572000000000000000000000000000061038d565b60405160200161014d9190611470565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526101ab916004016114fc565b60405180910390fd5b60008054339061021e9073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610467565b60025461024390879073ffffffffffffffffffffffffffffffffffffffff1687610505565b6000606061025385870187611053565b91509150610260816105fd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8b16906370a08231906102b59030906004016114aa565b60206040518083038186803b1580156102cd57600080fd5b505afa1580156102e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103059190810190611035565b9050610357838210157f54657374506172617377617054726164657200000000000000000000000000007f696e73756666696369656e74206f757470757420616d6f756e74000000000000848761070d565b6103628a8c83610505565b9b9a5050505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b606080826040516020016103a19190611357565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561044a5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061040d57fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156104455760010181529050610462565b6103d4565b5060408051600080825260208201909252905b509150505b919050565b836104ff576104758361038d565b7f3a2000000000000000000000000000000000000000000000000000000000000061049f8461038d565b7f203c0000000000000000000000000000000000000000000000000000000000006104c9856107d8565b60405161014d9594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161137f565b50505050565b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152819073ffffffffffffffffffffffffffffffffffffffff85169063dd62ed3e9061055b90309087906004016114b8565b60206040518083038186803b15801561057357600080fd5b505afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105ab9190810190611035565b10156105f8576105f873ffffffffffffffffffffffffffffffffffffffff8416837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61094f16565b505050565b60015460405160009160609173ffffffffffffffffffffffffffffffffffffffff9091169061062d90859061136c565b6000604051808303816000865af19150503d806000811461066a576040519150601f19603f3d011682016040523d82523d6000602084013e61066f565b606091505b5091509150816105f8576044815110156106bc576106ac7f546573745061726173776170547261646572000000000000000000000000000061038d565b60405160200161014d9190611459565b6004016106e87f546573745061726173776170547261646572000000000000000000000000000061038d565b818060200190516106fc9190810190611000565b60405160200161014d929190611487565b846107d15761071b8461038d565b7f3a200000000000000000000000000000000000000000000000000000000000006107458561038d565b7f203c00000000000000000000000000000000000000000000000000000000000061076f86610af0565b7f2c2000000000000000000000000000000000000000000000000000000000000061079987610af0565b60405161014d97969594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016113dd565b5050505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061082457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061086557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561045d57600281026108b0600f8516610bff565b8382602903815181106108bf57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350610901600f8516610bff565b83826028038151811061091057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101610897565b8015806109fd57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906109ab90309086906004016114b8565b60206040518083038186803b1580156109c357600080fd5b505afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109fb9190810190611035565b155b610a33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab9061152d565b6040516105f89084907f095ea7b30000000000000000000000000000000000000000000000000000000090610a6e90869086906024016114d3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c21565b606081610b31575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610462565b8160005b8115610b4957600101600a82049150610b35565b6060816040519080825280601f01601f191660200182016040528015610b76576020820181803883390190505b508593509050815b8015610bf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110610bbc57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610b7e565b50949350505050565b6000600a821015610c1757506030810160f81b610462565b5060570160f81b90565b610c408273ffffffffffffffffffffffffffffffffffffffff16610d6e565b610c76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab9061153d565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610c9f919061136c565b6000604051808303816000865af19150503d8060008114610cdc576040519150601f19603f3d011682016040523d82523d6000602084013e610ce1565b606091505b509150915081610d1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab9061150d565b8051156104ff5780806020019051610d389190810190610fe2565b6104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab9061151d565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610da257508115155b949350505050565b8035610db5816116b6565b92915050565b8051610db5816116cd565b60008083601f840112610dd857600080fd5b50813567ffffffffffffffff811115610df057600080fd5b602083019150836001820283011115610e0857600080fd5b9250929050565b600082601f830112610e2057600080fd5b8135610e33610e2e82611582565b61155b565b91508082526020830160208301858383011115610e4f57600080fd5b610e5a838284611656565b50505092915050565b600082601f830112610e7457600080fd5b8151610e82610e2e82611582565b91508082526020830160208301858383011115610e9e57600080fd5b610e5a838284611662565b8035610db5816116d6565b8051610db5816116d6565b600080600080600080600060c0888a031215610eda57600080fd5b6000610ee68a8a610daa565b9750506020610ef78a828b01610daa565b9650506040610f088a828b01610daa565b9550506060610f198a828b01610daa565b9450506080610f2a8a828b01610ea9565b93505060a088013567ffffffffffffffff811115610f4757600080fd5b610f538a828b01610dc6565b925092505092959891949750929550565b600080600080600060808688031215610f7c57600080fd5b6000610f888888610daa565b9550506020610f9988828901610daa565b9450506040610faa88828901610ea9565b935050606086013567ffffffffffffffff811115610fc757600080fd5b610fd388828901610dc6565b92509250509295509295909350565b600060208284031215610ff457600080fd5b6000610da28484610dbb565b60006020828403121561101257600080fd5b815167ffffffffffffffff81111561102957600080fd5b610da284828501610e63565b60006020828403121561104757600080fd5b6000610da28484610eb4565b6000806040838503121561106657600080fd5b60006110728585610ea9565b925050602083013567ffffffffffffffff81111561108f57600080fd5b61109b85828601610e0f565b9150509250929050565b6110ae816115d5565b82525050565b6110ae6110c0826115e5565b61162f565b6110ae6110c08261160a565b6110ae6110c08261162f565b60006110e8826115c8565b6110f28185610462565b9350611102818560208601611662565b9290920192915050565b6110ae8161164b565b6000611120826115c8565b61112a81856115cc565b935061113a818560208601611662565b6111438161168e565b9093019392505050565b600061115a6020836115cc565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000611193600883610462565b7f3a20726576657274000000000000000000000000000000000000000000000000815260080192915050565b60006111cc602283610462565b7f3a3a67657445786368616e6765436f73743a206e6f7420696d706c656d656e7481527f6564000000000000000000000000000000000000000000000000000000000000602082015260220192915050565b600061122b602a836115cc565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e81527f6f74207375636365656400000000000000000000000000000000000000000000602082015260400192915050565b600061128a600283610462565b7f3a20000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006112c36036836115cc565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015260400192915050565b6000611322601f836115cc565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6110ae8161162f565b600061136382846110d1565b50602001919050565b600061137882846110dd565b9392505050565b600061138b82896110dd565b915061139782886110c5565b6002820191506113a782876110dd565b91506113b382866110c5565b6002820191506113c382856110dd565b91506113cf82846110b4565b506001019695505050505050565b60006113e9828b6110dd565b91506113f5828a6110c5565b60028201915061140582896110dd565b915061141182886110c5565b60028201915061142182876110dd565b915061142d82866110c5565b60028201915061143d82856110dd565b915061144982846110b4565b5060010198975050505050505050565b600061146582846110dd565b915061137882611186565b600061147c82846110dd565b9150611378826111bf565b600061149382856110dd565b915061149e8261127d565b9150610da282846110dd565b60208101610db582846110a5565b604081016114c682856110a5565b61137860208301846110a5565b604081016114e182856110a5565b611378602083018461134e565b60208101610db5828461110c565b602080825281016113788184611115565b60208082528101610db58161114d565b60208082528101610db58161121e565b60208082528101610db5816112b6565b60208082528101610db581611315565b60208101610db5828461134e565b60405181810167ffffffffffffffff8111828210171561157a57600080fd5b604052919050565b600067ffffffffffffffff82111561159957600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b90815260200190565b6000610db582611632565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000610db5826115d5565b82818337506000910152565b60005b8381101561167d578181015183820152602001611665565b838111156104ff5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6116bf816115d5565b81146116ca57600080fd5b50565b6116bf816115e0565b6116bf8161162f56fea365627a7a7231582056f320d3b3dfb5cb9a0fa757f463209a479d51ab886684810611a7bc50c2322a6c6578706572696d656e74616cf564736f6c63430005100040",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80633a8fdd7d116100505780633a8fdd7d1461009f5780637d98ebac146100bf57806384796caf146100d257610067565b806315c14a4a1461006c57806317f5e7881461008a575b600080fd5b6100746100da565b60405161008191906114ee565b60405180910390f35b6100926100f6565b60405161008191906114aa565b6100b26100ad366004610f64565b610112565b604051610081919061154d565b6100b26100cd366004610ebf565b6101b4565b610092610371565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600061013d7f546573745061726173776170547261646572000000000000000000000000000061038d565b60405160200161014d9190611470565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526101ab916004016114fc565b60405180910390fd5b60008054339061021e9073ffffffffffffffffffffffffffffffffffffffff1682147f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e0084610467565b60025461024390879073ffffffffffffffffffffffffffffffffffffffff1687610505565b6000606061025385870187611053565b91509150610260816105fd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8b16906370a08231906102b59030906004016114aa565b60206040518083038186803b1580156102cd57600080fd5b505afa1580156102e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103059190810190611035565b9050610357838210157f54657374506172617377617054726164657200000000000000000000000000007f696e73756666696369656e74206f757470757420616d6f756e74000000000000848761070d565b6103628a8c83610505565b9b9a5050505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b606080826040516020016103a19190611357565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561044a5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061040d57fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156104455760010181529050610462565b6103d4565b5060408051600080825260208201909252905b509150505b919050565b836104ff576104758361038d565b7f3a2000000000000000000000000000000000000000000000000000000000000061049f8461038d565b7f203c0000000000000000000000000000000000000000000000000000000000006104c9856107d8565b60405161014d9594939291907f3e000000000000000000000000000000000000000000000000000000000000009060200161137f565b50505050565b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152819073ffffffffffffffffffffffffffffffffffffffff85169063dd62ed3e9061055b90309087906004016114b8565b60206040518083038186803b15801561057357600080fd5b505afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105ab9190810190611035565b10156105f8576105f873ffffffffffffffffffffffffffffffffffffffff8416837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61094f16565b505050565b60015460405160009160609173ffffffffffffffffffffffffffffffffffffffff9091169061062d90859061136c565b6000604051808303816000865af19150503d806000811461066a576040519150601f19603f3d011682016040523d82523d6000602084013e61066f565b606091505b5091509150816105f8576044815110156106bc576106ac7f546573745061726173776170547261646572000000000000000000000000000061038d565b60405160200161014d9190611459565b6004016106e87f546573745061726173776170547261646572000000000000000000000000000061038d565b818060200190516106fc9190810190611000565b60405160200161014d929190611487565b846107d15761071b8461038d565b7f3a200000000000000000000000000000000000000000000000000000000000006107458561038d565b7f203c00000000000000000000000000000000000000000000000000000000000061076f86610af0565b7f2c2000000000000000000000000000000000000000000000000000000000000061079987610af0565b60405161014d97969594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016113dd565b5050505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061082457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061086557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561045d57600281026108b0600f8516610bff565b8382602903815181106108bf57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350610901600f8516610bff565b83826028038151811061091057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101610897565b8015806109fd57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906109ab90309086906004016114b8565b60206040518083038186803b1580156109c357600080fd5b505afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109fb9190810190611035565b155b610a33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab9061152d565b6040516105f89084907f095ea7b30000000000000000000000000000000000000000000000000000000090610a6e90869086906024016114d3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c21565b606081610b31575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610462565b8160005b8115610b4957600101600a82049150610b35565b6060816040519080825280601f01601f191660200182016040528015610b76576020820181803883390190505b508593509050815b8015610bf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b828281518110610bbc57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610b7e565b50949350505050565b6000600a821015610c1757506030810160f81b610462565b5060570160f81b90565b610c408273ffffffffffffffffffffffffffffffffffffffff16610d6e565b610c76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab9061153d565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610c9f919061136c565b6000604051808303816000865af19150503d8060008114610cdc576040519150601f19603f3d011682016040523d82523d6000602084013e610ce1565b606091505b509150915081610d1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab9061150d565b8051156104ff5780806020019051610d389190810190610fe2565b6104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ab9061151d565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610da257508115155b949350505050565b8035610db5816116b6565b92915050565b8051610db5816116cd565b60008083601f840112610dd857600080fd5b50813567ffffffffffffffff811115610df057600080fd5b602083019150836001820283011115610e0857600080fd5b9250929050565b600082601f830112610e2057600080fd5b8135610e33610e2e82611582565b61155b565b91508082526020830160208301858383011115610e4f57600080fd5b610e5a838284611656565b50505092915050565b600082601f830112610e7457600080fd5b8151610e82610e2e82611582565b91508082526020830160208301858383011115610e9e57600080fd5b610e5a838284611662565b8035610db5816116d6565b8051610db5816116d6565b600080600080600080600060c0888a031215610eda57600080fd5b6000610ee68a8a610daa565b9750506020610ef78a828b01610daa565b9650506040610f088a828b01610daa565b9550506060610f198a828b01610daa565b9450506080610f2a8a828b01610ea9565b93505060a088013567ffffffffffffffff811115610f4757600080fd5b610f538a828b01610dc6565b925092505092959891949750929550565b600080600080600060808688031215610f7c57600080fd5b6000610f888888610daa565b9550506020610f9988828901610daa565b9450506040610faa88828901610ea9565b935050606086013567ffffffffffffffff811115610fc757600080fd5b610fd388828901610dc6565b92509250509295509295909350565b600060208284031215610ff457600080fd5b6000610da28484610dbb565b60006020828403121561101257600080fd5b815167ffffffffffffffff81111561102957600080fd5b610da284828501610e63565b60006020828403121561104757600080fd5b6000610da28484610eb4565b6000806040838503121561106657600080fd5b60006110728585610ea9565b925050602083013567ffffffffffffffff81111561108f57600080fd5b61109b85828601610e0f565b9150509250929050565b6110ae816115d5565b82525050565b6110ae6110c0826115e5565b61162f565b6110ae6110c08261160a565b6110ae6110c08261162f565b60006110e8826115c8565b6110f28185610462565b9350611102818560208601611662565b9290920192915050565b6110ae8161164b565b6000611120826115c8565b61112a81856115cc565b935061113a818560208601611662565b6111438161168e565b9093019392505050565b600061115a6020836115cc565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000611193600883610462565b7f3a20726576657274000000000000000000000000000000000000000000000000815260080192915050565b60006111cc602283610462565b7f3a3a67657445786368616e6765436f73743a206e6f7420696d706c656d656e7481527f6564000000000000000000000000000000000000000000000000000000000000602082015260220192915050565b600061122b602a836115cc565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e81527f6f74207375636365656400000000000000000000000000000000000000000000602082015260400192915050565b600061128a600283610462565b7f3a20000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006112c36036836115cc565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015260400192915050565b6000611322601f836115cc565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6110ae8161162f565b600061136382846110d1565b50602001919050565b600061137882846110dd565b9392505050565b600061138b82896110dd565b915061139782886110c5565b6002820191506113a782876110dd565b91506113b382866110c5565b6002820191506113c382856110dd565b91506113cf82846110b4565b506001019695505050505050565b60006113e9828b6110dd565b91506113f5828a6110c5565b60028201915061140582896110dd565b915061141182886110c5565b60028201915061142182876110dd565b915061142d82866110c5565b60028201915061143d82856110dd565b915061144982846110b4565b5060010198975050505050505050565b600061146582846110dd565b915061137882611186565b600061147c82846110dd565b9150611378826111bf565b600061149382856110dd565b915061149e8261127d565b9150610da282846110dd565b60208101610db582846110a5565b604081016114c682856110a5565b61137860208301846110a5565b604081016114e182856110a5565b611378602083018461134e565b60208101610db5828461110c565b602080825281016113788184611115565b60208082528101610db58161114d565b60208082528101610db58161121e565b60208082528101610db5816112b6565b60208082528101610db581611315565b60208101610db5828461134e565b60405181810167ffffffffffffffff8111828210171561157a57600080fd5b604052919050565b600067ffffffffffffffff82111561159957600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b90815260200190565b6000610db582611632565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000610db5826115d5565b82818337506000910152565b60005b8381101561167d578181015183820152602001611665565b838111156104ff5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6116bf816115d5565b81146116ca57600080fd5b50565b6116bf816115e0565b6116bf8161162f56fea365627a7a7231582056f320d3b3dfb5cb9a0fa757f463209a479d51ab886684810611a7bc50c2322a6c6578706572696d656e74616cf564736f6c63430005100040",
"sourceMap": "1084:2635:133:-;;;1396:312;8:9:-1;5:2;;;30:1;27;20:12;5:2;1396:312:133;;;;;;;;;;;;;;;;;;;;;1302:15:6;:50;;-1:-1:-1;;;;;;1302:50:6;;;-1:-1:-1;;;;;1302:50:6;;;;;;;-1:-1:-1;1593:50:133;;;;;;;;;;;;;;1653:23;:48;;;;;;;;;;1084:2635;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:535;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;311:1;308;301:12;263:2;346:1;363:64;419:7;399:9;363:64;;;353:74;;325:108;464:2;482:64;538:7;529:6;518:9;514:22;482:64;;;472:74;;443:109;583:2;601:64;657:7;648:6;637:9;633:22;601:64;;;591:74;;562:109;257:424;;;;;;688:91;;-1:-1;;;;;848:54;;750:24;831:76;914:117;983:24;1001:5;983:24;;;976:5;973:35;963:2;;1022:1;1019;1012:12;963:2;957:74;;;1084:2635:133;;;;;;",
"deployedSourceMap": "1084:2635:133:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1084:2635:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1130:38:6;;;:::i;:::-;;;;;;;;;;;;;;;;1260:39:133;;;:::i;:::-;;;;;;;;2662:271;;;;;;;;;:::i;:::-;;;;;;;;1765:891;;;;;;;;;:::i;1305:38::-;;;:::i;1130::6:-;;;;;;:::o;1260:39:133:-;;;;;;:::o;2662:271::-;2803:7;2853:32;2880:4;2853:26;:32::i;:::-;2836:88;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;2836:88:133;;;;2822:104;;;;;;;;;;;;;;;;;1765:891;2025:7;1505:15:6;;2000:10:133;;1462:153:6;;1505:15;;1488:33;;1535:4;1462:153;2000:10:133;1462:12:6;:153::i;:::-;2091:23:133;;2044:93;;2078:11;;2091:23;;2116:20;2044:33;:93::i;:::-;2149:23;2174:29;2207:40;;;;2218:10;2207:40;;;2148:99;;;;2258:38;2279:16;2258:20;:38::i;:::-;2324:44;;;;;2307:14;;2324:29;;;;;;:44;;2362:4;;2324:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2324:44:133;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2324:44:133;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2324:44:133;;;;;;;;;2307:61;;2379:170;2415:15;2405:6;:25;;2444:4;2379:170;2504:6;2524:15;2379:12;:170::i;:::-;2560:65;2594:11;2607:9;2618:6;2560:33;:65::i;:::-;2643:6;1765:891;-1:-1:-1;;;;;;;;;;;1765:891:133:o;1305:38::-;;;;;;:::o;6359:968:99:-;6463:12;6538:19;6577:5;6560:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6560:23:99;;;;-1:-1:-1;49:4;6689:572:99;6710:6;;6689:572;;6962:9;;6864:3;;;;;6962:6;;6864:3;;6962:9;;;;;;;;;;;;:14;6958:293;;7017:1;7013:5;7143:22;;7150:6;-1:-1:-1;7223:13:99;;6958:293;6689:572;;;-1:-1:-1;7308:12:99;;;7318:1;7308:12;;;;;;;;;;;;7301:19;;;6359:968;;;;:::o;2962:561::-;3122:4;3117:400;;3236:24;3255:4;3236:18;:24::i;:::-;3286:5;3317:26;3336:6;3317:18;:26::i;:::-;3369:6;3401:19;3411:8;3401:9;:19::i;:::-;3194:280;;;;;;;;;3446:6;;3194:280;;;;3117:400;2962:561;;;;:::o;1008:269:38:-;1143:47;;;;;1193:6;;1143:23;;;;;;:47;;1175:4;;1182:7;;1143:47;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1143:47:38;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1143:47:38;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1143:47:38;;;;;;;;;:56;1139:132;;;1215:45;:25;;;1241:7;1255:3;1215:45;:25;:45;:::i;:::-;1008:269;;;:::o;2991:726:133:-;3174:24;;:48;;3137:12;;3151:19;;3174:24;;;;;:48;;3204:17;;3174:48;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3136:86:133;;;;3237:7;3232:479;;3280:2;3264:6;:13;:18;3260:441;;;3333:32;3360:4;3333:26;:32::i;:::-;3316:62;;;;;;;;;3260:441;3544:4;3532:17;3615:32;3642:4;3615:26;:32::i;:::-;3666:6;3655:28;;;;;;;;;;;;;;3598:86;;;;;;;;;;2293:663:99;2479:4;2474:476;;2593:24;2612:4;2593:18;:24::i;:::-;2643:5;2674:26;2693:6;2674:18;:26::i;:::-;2726:6;2758:19;2768:8;2758:9;:19::i;:::-;2803:5;2834:19;2844:8;2834:9;:19::i;:::-;2551:356;;;;;;;;;;;2879:6;;2551:356;;;;2474:476;2293:663;;;;;:::o;8252:958::-;8524:13;;;8534:2;8524:13;;;8346:12;8524:13;;;;;;8386:14;;;;8346:12;;8524:13;;;21:6:-1;;104:10;8524:13:99;87:34:-1;135:17;;-1:-1;8524:13:99;8502:35;;902:2;8601:23;;8589:6;8596:1;8589:9;;;;;;;;;;;:35;;;;;;;;;;;1010:3;8646:27;;8634:6;8641:1;8634:9;;;;;;;;;;;:39;;;;;;;;;;;8787:9;8782:398;8802:2;8798:1;:6;8782:398;;;8891:1;8887:5;;8984:23;1232:3;8989:17;;8984:4;:23::i;:::-;8963:6;8975:5;8970:2;:10;8963:18;;;;;;;;;;;:44;;;;;;;;;;;9030:1;9025;:6;;9021:10;;9122:23;1232:3;9127:1;:17;9122:4;:23::i;:::-;9101:6;9113:5;9108:2;:10;9101:18;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;;9168:1:99;9163:6;;;;;8806:3;;8782:398;;1050:612:153;1415:10;;;1414:62;;-1:-1:-1;1431:39:153;;;;;:15;;;;;;:39;;1455:4;;1462:7;;1431:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1431:39:153;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1431:39:153;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1431:39:153;;;;;;;;;:44;1414:62;1406:150;;;;;;;;;;;;;;1592:62;;1566:89;;1585:5;;1615:22;;1592:62;;1639:7;;1648:5;;1592:62;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1592:62:153;;;49:4:-1;25:18;;61:17;;1592:62:153;182:15:-1;1592:62:153;;;;179:29:-1;;;;160:49;;;1566:18:153;:89::i;7333:913:99:-;7427:12;7459:10;7455:51;;-1:-1:-1;7485:10:99;;;;;;;;;;;;;;;;;;;7455:51;7567:5;7555:9;7606:69;7613:6;;7606:69;;7635:8;;7662:2;7657:7;;;;7606:69;;;7716:17;7746:6;7736:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7736:17:99;87:34:-1;135:17;;-1:-1;7736:17:99;-1:-1:-1;7845:5:99;;-1:-1:-1;7716:37:99;-1:-1:-1;7877:6:99;7860:358;7885:6;;7860:358;;8039:3;;8135:2;8131:1;:6;902:2;8117:21;8106:34;;8096:4;8101:1;8096:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;8205:2:99;8200:7;;;;7860:358;;;-1:-1:-1;8235:4:99;7333:913;-1:-1:-1;;;;7333:913:99:o;10178:325::-;10267:4;10335:2;10327:5;:10;10323:79;;;-1:-1:-1;902:2:99;10371:18;;10360:31;;10353:38;;10323:79;-1:-1:-1;956:2:99;10467:27;10456:40;;;10178:325::o;2666:1095:153:-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:153;;;;3479:7;3471:52;;;;;;;;;;;;;;3538:17;;:21;3534:221;;3678:10;3667:30;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;686:610:154;746:4;1207:20;;1052:66;1246:23;;;;;;:42;;-1:-1:-1;1273:15:154;;;1246:42;1238:51;686:610;-1:-1:-1;;;;686:610:154:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:128;217:13;;235:30;217:13;235:30;;291:336;;;405:3;398:4;390:6;386:17;382:27;372:2;;423:1;420;413:12;372:2;-1:-1;443:20;;483:18;472:30;;469:2;;;515:1;512;505:12;469:2;549:4;541:6;537:17;525:29;;600:3;592:4;584:6;580:17;570:8;566:32;563:41;560:2;;;617:1;614;607:12;560:2;365:262;;;;;;636:432;;733:3;726:4;718:6;714:17;710:27;700:2;;751:1;748;741:12;700:2;788:6;775:20;810:60;825:44;862:6;825:44;;;810:60;;;801:69;;890:6;883:5;876:21;926:4;918:6;914:17;959:4;952:5;948:16;994:3;985:6;980:3;976:16;973:25;970:2;;;1011:1;1008;1001:12;970:2;1021:41;1055:6;1050:3;1045;1021:41;;;693:375;;;;;;;;1077:436;;1186:3;1179:4;1171:6;1167:17;1163:27;1153:2;;1204:1;1201;1194:12;1153:2;1234:6;1228:13;1256:61;1271:45;1309:6;1271:45;;1256:61;1247:70;;1337:6;1330:5;1323:21;1373:4;1365:6;1361:17;1406:4;1399:5;1395:16;1441:3;1432:6;1427:3;1423:16;1420:25;1417:2;;;1458:1;1455;1448:12;1417:2;1468:39;1500:6;1495:3;1490;1468:39;;1521:130;1588:20;;1613:33;1588:20;1613:33;;1658:134;1736:13;;1754:33;1736:13;1754:33;;1799:993;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:53;2554:7;2545:6;2534:9;2530:22;2509:53;;;2499:63;;2469:99;2627:3;2616:9;2612:19;2599:33;2652:18;2644:6;2641:30;2638:2;;;2684:1;2681;2674:12;2638:2;2712:64;2768:7;2759:6;2748:9;2744:22;2712:64;;;2702:74;;;;2578:204;1969:823;;;;;;;;;;;2799:741;;;;;;2973:3;2961:9;2952:7;2948:23;2944:33;2941:2;;;2990:1;2987;2980:12;2941:2;3025:1;3042:53;3087:7;3067:9;3042:53;;;3032:63;;3004:97;3132:2;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;;;3140:63;;3111:98;3240:2;3258:53;3303:7;3294:6;3283:9;3279:22;3258:53;;;3248:63;;3219:98;3376:2;3365:9;3361:18;3348:32;3400:18;3392:6;3389:30;3386:2;;;3432:1;3429;3422:12;3386:2;3460:64;3516:7;3507:6;3496:9;3492:22;3460:64;;;3450:74;;;;3327:203;2935:605;;;;;;;;;3547:257;;3659:2;3647:9;3638:7;3634:23;3630:32;3627:2;;;3675:1;3672;3665:12;3627:2;3710:1;3727:61;3780:7;3760:9;3727:61;;3811:354;;3932:2;3920:9;3911:7;3907:23;3903:32;3900:2;;;3948:1;3945;3938:12;3900:2;3983:24;;4027:18;4016:30;;4013:2;;;4059:1;4056;4049:12;4013:2;4079:70;4141:7;4132:6;4121:9;4117:22;4079:70;;4172:263;;4287:2;4275:9;4266:7;4262:23;4258:32;4255:2;;;4303:1;4300;4293:12;4255:2;4338:1;4355:64;4411:7;4391:9;4355:64;;4442:462;;;4568:2;4556:9;4547:7;4543:23;4539:32;4536:2;;;4584:1;4581;4574:12;4536:2;4619:1;4636:53;4681:7;4661:9;4636:53;;;4626:63;;4598:97;4754:2;4743:9;4739:18;4726:32;4778:18;4770:6;4767:30;4764:2;;;4810:1;4807;4800:12;4764:2;4830:58;4880:7;4871:6;4860:9;4856:22;4830:58;;;4820:68;;4705:189;4530:374;;;;;;4911:113;4994:24;5012:5;4994:24;;;4989:3;4982:37;4976:48;;;5031:148;5130:43;5149:23;5166:5;5149:23;;;5130:43;;5186:148;5285:43;5304:23;5321:5;5304:23;;5341:152;5442:45;5462:24;5480:5;5462:24;;5500:356;;5628:38;5660:5;5628:38;;;5678:88;5759:6;5754:3;5678:88;;;5671:95;;5771:52;5816:6;5811:3;5804:4;5797:5;5793:16;5771:52;;;5835:16;;;;;5608:248;-1:-1;;5608:248;5863:176;5971:62;6027:5;5971:62;;6046:347;;6158:39;6191:5;6158:39;;;6209:71;6273:6;6268:3;6209:71;;;6202:78;;6285:52;6330:6;6325:3;6318:4;6311:5;6307:16;6285:52;;;6358:29;6380:6;6358:29;;;6349:39;;;;6138:255;-1:-1;;;6138:255;6760:332;;6920:67;6984:2;6979:3;6920:67;;;7020:34;7000:55;;7083:2;7074:12;;6906:186;-1:-1;;6906:186;7101:342;;7279:84;7361:1;7356:3;7279:84;;;7396:10;7376:31;;7435:1;7426:11;;7265:178;-1:-1;;7265:178;7452:407;;7630:85;7712:2;7707:3;7630:85;;;7748:34;7728:55;;7817:4;7812:2;7803:12;;7796:26;7850:2;7841:12;;7616:243;-1:-1;;7616:243;7868:379;;8028:67;8092:2;8087:3;8028:67;;;8128:34;8108:55;;8197:12;8192:2;8183:12;;8176:34;8238:2;8229:12;;8014:233;-1:-1;;8014:233;8256:336;;8434:84;8516:1;8511:3;8434:84;;;8551:4;8531:25;;8584:1;8575:11;;8420:172;-1:-1;;8420:172;8601:391;;8761:67;8825:2;8820:3;8761:67;;;8861:34;8841:55;;8930:24;8925:2;8916:12;;8909:46;8983:2;8974:12;;8747:245;-1:-1;;8747:245;9001:331;;9161:67;9225:2;9220:3;9161:67;;;9261:33;9241:54;;9323:2;9314:12;;9147:185;-1:-1;;9147:185;9340:113;9423:24;9441:5;9423:24;;9460:244;;9579:75;9650:3;9641:6;9579:75;;;-1:-1;9676:2;9667:12;;9567:137;-1:-1;9567:137;9711:262;;9855:93;9944:3;9935:6;9855:93;;;9848:100;9836:137;-1:-1;;;9836:137;9980:978;;10294:93;10383:3;10374:6;10294:93;;;10287:100;;10398:73;10467:3;10458:6;10398:73;;;10493:1;10488:3;10484:11;10477:18;;10513:93;10602:3;10593:6;10513:93;;;10506:100;;10617:73;10686:3;10677:6;10617:73;;;10712:1;10707:3;10703:11;10696:18;;10732:93;10821:3;108