/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, Contract, ContractFactory, Overrides } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { BoundedDerivativesPool } from "../BoundedDerivativesPool"; export class BoundedDerivativesPool__factory extends ContractFactory { constructor(signer?: Signer) { super(_abi, _bytecode, signer); } deploy( base: string, trade: string, s_trade: string, _noCallBack: boolean, overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy( base, trade, s_trade, _noCallBack, overrides || {} ) as Promise; } getDeployTransaction( base: string, trade: string, s_trade: string, _noCallBack: boolean, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction( base, trade, s_trade, _noCallBack, overrides || {} ); } attach(address: string): BoundedDerivativesPool { return super.attach(address) as BoundedDerivativesPool; } connect(signer: Signer): BoundedDerivativesPool__factory { return super.connect(signer) as BoundedDerivativesPool__factory; } static connect( address: string, signerOrProvider: Signer | Provider ): BoundedDerivativesPool { return new Contract( address, _abi, signerOrProvider ) as BoundedDerivativesPool; } } const _abi = [ { inputs: [ { internalType: "address", name: "base", type: "address", }, { internalType: "address", name: "trade", type: "address", }, { internalType: "address", name: "s_trade", type: "address", }, { internalType: "bool", name: "_noCallBack", type: "bool", }, ], stateMutability: "nonpayable", type: "constructor", }, { inputs: [], name: "BaseToken", outputs: [ { internalType: "contract ERC20", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "TradeToken", outputs: [ { internalType: "contract ERC20", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "baseBal", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getTraderPosition", outputs: [], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint16", name: "point", type: "uint16", }, { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "address", name: "recipient", type: "address", }, ], name: "makerClaimClose", outputs: [ { internalType: "uint256", name: "claimedAmount", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint16", name: "point", type: "uint16", }, { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "address", name: "recipient", type: "address", }, ], name: "makerClaimOpen", outputs: [ { internalType: "uint256", name: "claimedAmount", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint16", name: "point", type: "uint16", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "address", name: "recipient", type: "address", }, ], name: "makerClose", outputs: [ { internalType: "uint256", name: "toEscrowAmount", type: "uint256", }, { internalType: "uint128", name: "crossId", type: "uint128", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint16", name: "point", type: "uint16", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "address", name: "recipient", type: "address", }, ], name: "makerOpen", outputs: [ { internalType: "uint256", name: "toEscrowAmount", type: "uint256", }, { internalType: "uint128", name: "crossId", type: "uint128", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint16", name: "point", type: "uint16", }, { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "bool", name: "open", type: "bool", }, { internalType: "address", name: "recipient", type: "address", }, ], name: "makerPartiallyClaim", outputs: [ { internalType: "uint256", name: "baseAmount", type: "uint256", }, { internalType: "uint256", name: "tradeAmount", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint16", name: "point", type: "uint16", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "address", name: "recipient", type: "address", }, ], name: "makerReduceClose", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint16", name: "point", type: "uint16", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "address", name: "recipient", type: "address", }, ], name: "makerReduceOpen", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "maxPrice", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "pool", outputs: [ { internalType: "contract GranularBondingCurve", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint16", name: "pointLower", type: "uint16", }, { internalType: "uint16", name: "pointUpper", type: "uint16", }, { internalType: "uint128", name: "amount", type: "uint128", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "provideLiquidity", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "s_tradeToken", outputs: [ { internalType: "contract ERC20", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "int256", name: "amountIn", type: "int256", }, { internalType: "uint256", name: "priceLimit", type: "uint256", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "takerClose", outputs: [ { internalType: "uint256", name: "poolamountIn", type: "uint256", }, { internalType: "uint256", name: "poolamountOut", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "isLong", type: "bool", }, { internalType: "int256", name: "amountIn", type: "int256", }, { internalType: "uint256", name: "priceLimit", type: "uint256", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "takerOpen", outputs: [ { internalType: "uint256", name: "poolamountIn", type: "uint256", }, { internalType: "uint256", name: "poolamountOut", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint16", name: "pointLower", type: "uint16", }, { internalType: "uint16", name: "pointUpper", type: "uint16", }, { internalType: "uint128", name: "amount", type: "uint128", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "withdrawLiquidity", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x60a06040523480156200001157600080fd5b50604051620078b6380380620078b6833981016040819052620000349162000161565b600080546001600160a01b038087166001600160a01b03199283161790925560018054868416908316179055600280549285169290911691909117905560405184908490620000839062000136565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620000b7573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392909216918217905560405163215e294960e11b81523060048201526342bc529290602401600060405180830381600087803b1580156200010e57600080fd5b505af115801562000123573d6000803e3d6000fd5b50505050151560805250620001c4915050565b613f49806200396d83390190565b80516001600160a01b03811681146200015c57600080fd5b919050565b600080600080608085870312156200017857600080fd5b620001838562000144565b9350620001936020860162000144565b9250620001a36040860162000144565b915060608501518015158114620001b957600080fd5b939692955090935050565b608051613778620001f56000396000818161060b0152818161085401528181610cc50152610e9d01526137786000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806390f81702116100a2578063ba52fe6111610071578063ba52fe61146101c2578063df99f8bf14610266578063e38d6b5c14610279578063e7ca189a14610288578063f0bb81b31461029b57600080fd5b806390f817021461021a578063957343f01461022d5780639c9d7d3f14610240578063a1217e7d1461025357600080fd5b8063244d59cb116100e9578063244d59cb1461019c5780634970aa88146101af578063556769ba146101c4578063578c8579146101d757806368087cc3146101ea57600080fd5b8063082167121461011b57806308ef2b4c1461014857806310f222211461015e57806316f0115b14610189575b600080fd5b61012e6101293660046131ad565b6102ae565b604080519283526020830191909152015b60405180910390f35b61015061050e565b60405190815260200161013f565b600254610171906001600160a01b031681565b6040516001600160a01b03909116815260200161013f565b600354610171906001600160a01b031681565b61012e6101aa366004613250565b610580565b6101c26101bd3660046132cf565b6109b9565b005b61012e6101d2366004613250565b610b23565b6101c26101e53660046132cf565b610ef4565b6101fd6101f836600461332a565b6110c8565b604080519283526001600160801b0390911660208301520161013f565b600054610171906001600160a01b031681565b6101c261023b36600461332a565b611741565b6101c261024e36600461332a565b611cfe565b610150610261366004613360565b61211f565b600154610171906001600160a01b031681565b610150670de0b6b3a764000081565b6101fd61029636600461332a565b6124fe565b6101506102a9366004613360565b61292a565b600080831561037357841561033e576003546040516332530d7f60e01b81526001600160a01b03909116906332530d7f906102f29086908a906000906004016133a9565b60408051808303816000875af1158015610310573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033491906133d0565b909250905061042b565b6003546040516332530d7f60e01b81526001600160a01b03909116906332530d7f906102f29086908a906001906004016133a9565b84156103ae576003546040516332530d7f60e01b81526001600160a01b03909116906332530d7f906102f29086908a906001906004016133a9565b6003546040516332530d7f60e01b81526001600160a01b03909116906332530d7f906103e39086908a906000906004016133a9565b60408051808303816000875af1158015610401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042591906133d0565b90925090505b60005460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061045d90869086906004016133f4565b6020604051808303816000875af115801561047c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a0919061340d565b506001546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906104d390869085906004016133f4565b600060405180830381600087803b1580156104ed57600080fd5b505af1158015610501573d6000803e3d6000fd5b5050505094509492505050565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057b919061342a565b905090565b600080861561076a57600354604051624b204560e01b81526001600160a01b0390911690624b2045906105c29033906001908b908b908b908b9060040161346c565b60408051808303816000875af11580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060491906133d0565b90925090507f0000000000000000000000000000000000000000000000000000000000000000156106415761063c3382846001612cbd565b6109af565b600061064b61050e565b604051636d29069f60e11b8152909150339063da520d3e90610675908690899089906004016134ae565b600060405180830381600087803b15801561068f57600080fd5b505af11580156106a3573d6000803e3d6000fd5b5050505080836106b391906134e7565b6106bb61050e565b10156106f75760405162461bcd60e51b81526020600482015260066024820152653130b622a92960d11b60448201526064015b60405180910390fd5b6001546001600160a01b03166340c10f19610714868801886134ff565b846040518363ffffffff1660e01b81526004016107329291906133f4565b600060405180830381600087803b15801561074c57600080fd5b505af1158015610760573d6000803e3d6000fd5b50505050506109af565b600354604051624b204560e01b81526001600160a01b0390911690624b2045906107a39030906000908b908b908b908b9060040161346c565b60408051808303816000875af11580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e591906133d0565b6040805180820190915260098152681cda1bdc9d1a5b99cb60ba1b602082015291935091506108329083838061082383670de0b6b3a7640000612e43565b61082d919061351c565b612e58565b808061084684670de0b6b3a7640000612e43565b610850919061351c565b91507f00000000000000000000000000000000000000000000000000000000000000001561088a576108853384846000612cbd565b6109ad565b600061089461050e565b604051636d29069f60e11b8152909150339063da520d3e906108be9086908a908a906004016134ae565b600060405180830381600087803b1580156108d857600080fd5b505af11580156108ec573d6000803e3d6000fd5b5050505080836108fc91906134e7565b61090461050e565b101561093b5760405162461bcd60e51b81526020600482015260066024820152653130b622a92960d11b60448201526064016106ee565b6002546001600160a01b03166340c10f19610958878901896134ff565b866040518363ffffffff1660e01b81526004016109769291906133f4565b600060405180830381600087803b15801561099057600080fd5b505af11580156109a4573d6000803e3d6000fd5b50505050819350505b505b9550959350505050565b600354604051632bc34def60e21b815260009182916001600160a01b039091169063af0d37bc906109f89033908b908b908b908b908b90600401613533565b60408051808303816000875af1158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3a91906133d0565b6000546040516323b872dd60e01b81529294509092506001600160a01b0316906323b872dd90610a7290339030908790600401613579565b6020604051808303816000875af1158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab5919061340d565b50600154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac90610ae890339085906004016133f4565b600060405180830381600087803b158015610b0257600080fd5b505af1158015610b16573d6000803e3d6000fd5b5050505050505050505050565b6000808615610d0e57600354604051624b204560e01b81526001600160a01b0390911690624b204590610b659033906000908b908b908b908b9060040161346c565b60408051808303816000875af1158015610b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba791906133d0565b6040805180820182526013815272746f206275726e20616e642062616c616e636560681b602082015260015491516370a0823160e01b8152336004820152939550919350610c4b9285916001600160a01b0316906370a08231906024015b602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061342a565b612ea1565b6000546040516370a0823160e01b8152306004820152610cc39183916001600160a01b03909116906370a08231906024015b602060405180830381865afa158015610c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbe919061342a565b612eed565b7f000000000000000000000000000000000000000000000000000000000000000015610cf65761063c3382846001612f37565b61063c610d05848601866134ff565b82846001612f37565b600354604051624b204560e01b81526001600160a01b0390911690624b204590610d479033906001908b908b908b908b9060040161346c565b60408051808303816000875af1158015610d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8991906133d0565b6040805180820182526013815272746f206275726e20616e642062616c616e636560681b602082015260025491516370a0823160e01b8152336004820152939550919350610e2b92859185916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082d919061342a565b610e7b82610e4183670de0b6b3a7640000612e43565b610e4b919061351c565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401610c7d565b8180610e8f83670de0b6b3a7640000612e43565b610e99919061351c565b92507f000000000000000000000000000000000000000000000000000000000000000015610ece576108853384846000612f37565b610ee6610edd858701876134ff565b84846000612f37565b809150509550959350505050565b600354604051633f8ecd7360e11b815233600482015261ffff8088166024830152861660448201526001600160801b038516606482015260009182916001600160a01b0390911690637f1d9ae69060840160408051808303816000875af1158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8791906133d0565b6003546040516304c5e62b60e11b815233600482015261ffff808c1660248301528a1660448201526001600160801b036064820181905260848201529294509092506001600160a01b03169063098bcc569060a40160408051808303816000875af1158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e91906133d0565b505060005460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061105290339086906004016133f4565b6020604051808303816000875af1158015611071573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611095919061340d565b506001546040516340c10f1960e01b81526001600160a01b03909116906340c10f1990610ae890339085906004016133f4565b6000808315611338576003546001600160a01b0316632130ce0d84888363e7c3614f81638ce269996110fb85600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa15801561113a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115e91906135c3565b600354604051638ce2699960e01b815261ffff8f1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce91906135c3565b8c6040518463ffffffff1660e01b81526004016111ed93929190613579565b602060405180830381865afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e919061342a565b60006040518563ffffffff1660e01b815260040161124f94939291906135e0565b60408051808303816000875af115801561126d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112919190613615565b6040805180820190915260058152643432b9329f60d91b602082015291935091506112bb906130d7565b6000546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906112ef90869030908790600401613579565b6020604051808303816000875af115801561130e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611332919061340d565b50611738565b6003546001600160a01b0316632130ce0d84888363b04a69fd81638ce2699961136285600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c591906135c3565b600354604051638ce2699960e01b815261ffff8f1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa158015611411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143591906135c3565b8c6040518463ffffffff1660e01b815260040161145493929190613579565b602060405180830381865afa158015611471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611495919061342a565b60016040518563ffffffff1660e01b81526004016114b694939291906135e0565b60408051808303816000875af11580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190613615565b60035491935091506000906001600160a01b031663f9734a2481638ce269996115228b600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa158015611561573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158591906135c3565b600354604051638ce2699960e01b815261ffff8c1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f591906135c3565b896040518463ffffffff1660e01b815260040161161493929190613579565b602060405180830381865afa158015611631573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611655919061342a565b61165f908461351c565b6000546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd9061169490879030908690600401613579565b6020604051808303816000875af11580156116b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d7919061340d565b5060408051808201825260058152641c1bda5b9d60da1b60208201526003549151634a3ca71760e01b815261ffff8a1660048201819052600160248301526117359390916001600160a01b0390911690634a3ca71790604401610c05565b91505b94509492505050565b8115611990576003546000906001600160a01b0316631376ff3e83876118af8463e7c3614f81638ce2699961177786600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa1580156117b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117da91906135c3565b600354604051638ce2699960e01b815261ffff8f1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa158015611826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184a91906135c3565b8c6040518463ffffffff1660e01b815260040161186993929190613579565b602060405180830381865afa158015611886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118aa919061342a565b61311d565b60006040518563ffffffff1660e01b81526004016118d094939291906135e0565b6020604051808303816000875af11580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611913919061342a565b60005460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb9061194690859085906004016133f4565b6020604051808303816000875af1158015611965573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611989919061340d565b5050611cf8565b600354600090611aab906001600160a01b031663b04a69fd81638ce269996119b98a600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa1580156119f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1c91906135c3565b600354604051638ce2699960e01b815261ffff8b1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c91906135c3565b886040518463ffffffff1660e01b815260040161186993929190613579565b6003546040516309bb7f9f60e11b81529192506001600160a01b031690631376ff3e90611ae3908590899086906001906004016135e0565b6020604051808303816000875af1158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b26919061342a565b506000546003546001600160a01b039182169163a9059cbb9185911663f9734a2481638ce26999611b588c600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa158015611b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbb91906135c3565b600354604051638ce2699960e01b815261ffff8d1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa158015611c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2b91906135c3565b876040518463ffffffff1660e01b8152600401611c4a93929190613645565b602060405180830381865afa158015611c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8b919061342a565b611c95908861351c565b6040518363ffffffff1660e01b8152600401611cb29291906133f4565b6020604051808303816000875af1158015611cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf5919061340d565b50505b50505050565b8115611f13576003546000906001600160a01b0316631376ff3e8387611e448463b04a69fd81638ce26999611d3486600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa158015611d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9791906135c3565b600354604051638ce2699960e01b815261ffff8f1660048201526001600160a01b039283169290911690638ce2699990602401602060405180830381865afa158015611de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0b91906135c3565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604481018c9052606401611869565b60016040518563ffffffff1660e01b8152600401611e6594939291906135e0565b6020604051808303816000875af1158015611e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea8919061342a565b6001546040516340c10f1960e01b81529192506001600160a01b0316906340c10f1990611edb90859085906004016133f4565b600060405180830381600087803b158015611ef557600080fd5b505af1158015611f09573d6000803e3d6000fd5b5050505050611cf8565b6003546001600160a01b0316631376ff3e82866120508463b04a69fd81638ce26999611f4086600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa158015611f7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa391906135c3565b600354604051638ce2699960e01b815261ffff8e1660048201526001600160a01b039283169290911690638ce2699990602401602060405180830381865afa158015611ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201791906135c3565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604481018b9052606401611869565b60006040518563ffffffff1660e01b815260040161207194939291906135e0565b6020604051808303816000875af1158015612090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b4919061342a565b506002546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906120e790849087906004016133f4565b600060405180830381600087803b15801561210157600080fd5b505af1158015612115573d6000803e3d6000fd5b5050505050505050565b6000821561221b576003546040516342b6c9fb60e01b81526001600160a01b03909116906342b6c9fb9061215c90859088906001906004016133a9565b6020604051808303816000875af115801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f919061342a565b60005460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906121d290859085906004016133f4565b6020604051808303816000875af11580156121f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612215919061340d565b506124f7565b600354604051639b60808960e01b81526000916001600160a01b031690639b60808990612250908690899086906004016133a9565b602060405180830381865afa15801561226d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122919190613671565b6003546040516342b6c9fb60e01b81529192506001600160a01b0316906342b6c9fb906122c790869089906000906004016133a9565b6020604051808303816000875af11580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230a919061342a565b6003549092506001600160a01b031663f9734a2481638ce2699961232f89600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239291906135c3565b600354604051638ce2699960e01b815261ffff8a1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa1580156123de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240291906135c3565b846040518463ffffffff1660e01b815260040161242193929190613645565b602060405180830381865afa15801561243e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612462919061342a565b61247483670de0b6b3a7640000612e43565b61247e919061351c565b60005460405163a9059cbb60e01b81529193506001600160a01b03169063a9059cbb906124b190869086906004016133f4565b6020604051808303816000875af11580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f4919061340d565b50505b9392505050565b6000808315612734576003546001600160a01b0316632130ce0d84888363b04a69fd81638ce2699961253185600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259491906135c3565b600354604051638ce2699960e01b815261ffff8f1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa1580156125e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260491906135c3565b8c6040518463ffffffff1660e01b815260040161262393929190613579565b602060405180830381865afa158015612640573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612664919061342a565b60016040518563ffffffff1660e01b815260040161268594939291906135e0565b60408051808303816000875af11580156126a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c79190613615565b600154604051632770a7eb60e21b81529294509092506001600160a01b031690639dc29fac906126fd90869086906004016133f4565b600060405180830381600087803b15801561271757600080fd5b505af115801561272b573d6000803e3d6000fd5b50505050611738565b6003546001600160a01b0316632130ce0d84888363b04a69fd81638ce2699961275e85600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa15801561279d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c191906135c3565b600354604051638ce2699960e01b815261ffff8f1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa15801561280d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283191906135c3565b8c6040518463ffffffff1660e01b815260040161285093929190613579565b602060405180830381865afa15801561286d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612891919061342a565b60006040518563ffffffff1660e01b81526004016128b294939291906135e0565b60408051808303816000875af11580156128d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f49190613615565b600254604051632770a7eb60e21b81529294509092506001600160a01b031690639dc29fac906104d390869089906004016133f4565b60008215612a15576003546040516342b6c9fb60e01b81526000916001600160a01b0316906342b6c9fb90612967908690899086906004016133a9565b6020604051808303816000875af1158015612986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129aa919061342a565b6001546040516340c10f1960e01b81529192506001600160a01b0316906340c10f19906129dd90869085906004016133f4565b600060405180830381600087803b1580156129f757600080fd5b505af1158015612a0b573d6000803e3d6000fd5b50505050506124f7565b6002546003546001600160a01b03918216916340c10f19918591166380c0c3e781638ce26999612a468b600161359d565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401602060405180830381865afa158015612a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa991906135c3565b600354604051638ce2699960e01b815261ffff8c1660048201526001600160a01b0390911690638ce2699990602401602060405180830381865afa158015612af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1991906135c3565b600354604051639b60808960e01b81526001600160a01b0390911690639b60808990612b4e9033908f906001906004016133a9565b602060405180830381865afa158015612b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8f9190613671565b6040518463ffffffff1660e01b8152600401612bad93929190613645565b602060405180830381865afa158015612bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bee919061342a565b6040518363ffffffff1660e01b8152600401612c0b9291906133f4565b600060405180830381600087803b158015612c2557600080fd5b505af1158015612c39573d6000803e3d6000fd5b50506003546040516342b6c9fb60e01b81526001600160a01b0390911692506342b6c9fb9150612c7290859088906001906004016133a9565b6020604051808303816000875af1158015612c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb5919061342a565b949350505050565b612cf1604051806040016040528060118152602001701b5a5b9d0bdc1d5b1b08185b5bdd5b9d0b607a1b8152508484612ea1565b8015612d60576001546040516340c10f1960e01b81526001600160a01b03909116906340c10f1990612d2990879087906004016133f4565b600060405180830381600087803b158015612d4357600080fd5b505af1158015612d57573d6000803e3d6000fd5b50505050612dc5565b6002546040516340c10f1960e01b81526001600160a01b03909116906340c10f1990612d9290879087906004016133f4565b600060405180830381600087803b158015612dac57600080fd5b505af1158015612dc0573d6000803e3d6000fd5b505050505b6000546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612df990879030908790600401613579565b6020604051808303816000875af1158015612e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3c919061340d565b5050505050565b60006124f78383670de0b6b3a7640000613138565b611cf884848484604051602401612e7294939291906136db565b60408051601f198184030181529190526020810180516001600160e01b03166304772b3360e11b179052613157565b612ee8838383604051602401612eb99392919061370a565b60408051601f198184030181529190526020810180516001600160e01b031663969cdd0360e01b179052613157565b505050565b6040516024810183905260448101829052612f339060640160408051601f198184030181529190526020810180516001600160e01b031662d81ed360e71b179052613157565b5050565b612f6360405180604001604052806009815260200168185b5bdd5b9d1bdd5d60ba1b8152508385612ea1565b6001546040516370a0823160e01b8152306004820152612fd1916001600160a01b0316906370a0823190602401602060405180830381865afa158015612fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4b919061342a565b801561304057600154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac9061300990879086906004016133f4565b600060405180830381600087803b15801561302357600080fd5b505af1158015613037573d6000803e3d6000fd5b505050506130a5565b600254604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac9061307290879086906004016133f4565b600060405180830381600087803b15801561308c57600080fd5b505af11580156130a0573d6000803e3d6000fd5b505050505b60005460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612df990879087906004016133f4565b61311a816040516024016130eb919061372f565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052613157565b50565b806001600160801b038116811461313357600080fd5b919050565b82820281151584158583048514171661315057600080fd5b0492915050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b803561ffff8116811461313357600080fd5b801515811461311a57600080fd5b6001600160a01b038116811461311a57600080fd5b600080600080608085870312156131c357600080fd5b6131cc85613178565b935060208501356131dc8161318a565b925060408501356131ec8161318a565b915060608501356131fc81613198565b939692955090935050565b60008083601f84011261321957600080fd5b50813567ffffffffffffffff81111561323157600080fd5b60208301915083602082850101111561324957600080fd5b9250929050565b60008060008060006080868803121561326857600080fd5b85356132738161318a565b94506020860135935060408601359250606086013567ffffffffffffffff81111561329d57600080fd5b6132a988828901613207565b969995985093965092949392505050565b6001600160801b038116811461311a57600080fd5b6000806000806000608086880312156132e757600080fd5b6132f086613178565b94506132fe60208701613178565b9350604086013561330e816132ba565b9250606086013567ffffffffffffffff81111561329d57600080fd5b6000806000806080858703121561334057600080fd5b61334985613178565b93506020850135925060408501356131ec8161318a565b60008060006060848603121561337557600080fd5b61337e84613178565b9250602084013561338e8161318a565b9150604084013561339e81613198565b809150509250925092565b6001600160a01b0393909316835261ffff9190911660208301521515604082015260600190565b600080604083850312156133e357600080fd5b505080516020909101519092909150565b6001600160a01b03929092168252602082015260400190565b60006020828403121561341f57600080fd5b81516124f78161318a565b60006020828403121561343c57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b0387168152851515602082015284604082015283606082015260a0608082015260006134a260a083018486613443565b98975050505050505050565b8381526040602082015260006134c8604083018486613443565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134fa576134fa6134d1565b500190565b60006020828403121561351157600080fd5b81356124f781613198565b60008282101561352e5761352e6134d1565b500390565b6001600160a01b038716815261ffff8681166020830152851660408201526001600160801b038416606082015260a0608082018190526000906134a29083018486613443565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600061ffff8083168185168083038211156135ba576135ba6134d1565b01949350505050565b6000602082840312156135d557600080fd5b81516124f781613198565b6001600160a01b0394909416845261ffff9290921660208401526001600160801b031660408301521515606082015260800190565b6000806040838503121561362857600080fd5b82519150602083015161363a816132ba565b809150509250929050565b6001600160a01b0393841681529190921660208201526001600160801b03909116604082015260600190565b60006020828403121561368357600080fd5b81516124f7816132ba565b6000815180845260005b818110156136b457602081850181015186830182015201613698565b818111156136c6576000602083870101525b50601f01601f19169290920160200192915050565b6080815260006136ee608083018761368e565b6020830195909552506040810192909252606090910152919050565b60608152600061371d606083018661368e565b60208301949094525060400152919050565b6020815260006124f7602083018461368e56fea26469706673582212205bd323fae9e2f852d22646258685d4cc47faa2967807f831e11a59b0a1c63eb064736f6c634300080a00336101406040523480156200001257600080fd5b5060405162003f4938038062003f498339810160408190526200003591620000b7565b6001600160a01b0380821660e052821661010052600060a081905260c0819052610120526200006e670de0b6b3a76400006064620000ef565b600280546001600160801b0319166001600160801b03929092169190911790555050336080526200012d565b80516001600160a01b0381168114620000b257600080fd5b919050565b60008060408385031215620000cb57600080fd5b620000d6836200009a565b9150620000e6602084016200009a565b90509250929050565b60006001600160801b03828116848216811515828404821116156200012457634e487b7160e01b600052601160045260246000fd5b02949350505050565b60805160a05160c05160e0516101005161012051613d9b620001ae600039600061084e0152600081816108270152818161131201526115c20152600081816108880152818161133801526115e8015260006108000152600081816108af0152610db101526000818161060801528181611baa01526121110152613d9b6000f3fe608060405234801561001057600080fd5b50600436106102895760003560e01c806380c0c3e71161015c578063b29d9b6e116100ce578063d83678ac11610087578063d83678ac14610883578063ddca3f43146108aa578063e37699c9146108e5578063e7c3614f146108f8578063f83d08ba1461090b578063f9734a241461091357600080fd5b8063b29d9b6e146106b3578063b501c284146106c6578063b9033a39146106d9578063c45a0155146107fb578063c55dae6314610822578063d0c93a7c1461084957600080fd5b8063a74d74d411610120578063a74d74d414610650578063aaf5eb6814610663578063ad066f9a14610672578063ae0f28f414610679578063af0d37bc1461068d578063b04a69fd146106a057600080fd5b806380c0c3e7146105dd5780638ce26999146105f05780638da5cb5b146106035780639314b03f1461062a5780639b6080891461063d57600080fd5b80633850c7bd11610200578063514ea4bf116101b9578063514ea4bf1461049f5780635bfa896a14610565578063659a544a1461057357806367f239dd1461057c5780636ed75596146105a75780637f1d9ae6146105ca57600080fd5b80633850c7bd146103b75780633d718da014610423578063402d44fb1461045357806342b6c9fb1461046657806342bc5292146104795780634a3ca7171461048c57600080fd5b80631a686502116102525780631a686502146103055780631d2637ab146103305780631dae2436146103395780632130ce0d1461034e5780632353b18e1461037e57806332530d7f146103a457600080fd5b80624b20451461028e578063098bcc56146102bb57806311e715d6146102ce5780631376ff3e146102e9578063159054ea146102fc575b600080fd5b6102a161029c366004613561565b610926565b604080519283526020830191909152015b60405180910390f35b6102a16102c9366004613602565b6110b8565b6001546001600160a01b03165b6040519081526020016102b2565b6102db6102f7366004613667565b6111dd565b6102db61271081565b600254610318906001600160801b031681565b6040516001600160801b0390911681526020016102b2565b6102db60075481565b61034c6103473660046136bb565b6113ef565b005b61036161035c366004613667565b611445565b604080519283526001600160801b039091166020830152016102b2565b61039161038c3660046136bb565b6116ce565b60405161ffff90911681526020016102b2565b6102a16103b23660046136d4565b6116fa565b6001546103ec906001600160a01b0381169061ffff600160a01b8204169060ff600160b01b8204811691600160b81b90041684565b604080516001600160a01b03909516855261ffff909316602085015260ff90911691830191909152151560608201526080016102b2565b61034c610431366004613717565b600280546001600160801b0319166001600160801b0392909216919091179055565b610318610461366004613732565b61190b565b6102db6104743660046136d4565b6119cb565b61034c61048736600461376f565b611ba8565b6102db61049a36600461378a565b611c2e565b61050a6104ad3660046136bb565b600460208190526000918252604090912080546001820154600283015460038401549484015460058501546006909501546001600160801b0380861697600160801b96879004821697828716979096048216959190941693929189565b604080516001600160801b039a8b168152988a1660208a015296891696880196909652938716606087015295909116608085015260a084015260c083019390935260e0820192909252610100810191909152610120016102b2565b6102db662386f26fc1000081565b6102db60065481565b60055461058f906001600160a01b031681565b6040516001600160a01b0390911681526020016102b2565b6105ba6105b53660046136d4565b611c4b565b60405190151581526020016102b2565b6102a16105d83660046137bd565b611d06565b6102db6105eb366004613806565b611e15565b61058f6105fe366004613832565b611e53565b61058f7f000000000000000000000000000000000000000000000000000000000000000081565b6102db610638366004613806565b611e72565b61031861064b3660046136d4565b611e88565b6102db61065e36600461384d565b611edd565b6102db670de0b6b3a764000081565b60006102db565b6102db610687366004613832565b50600090565b6102a161069b366004613870565b611f35565b6102db6106ae366004613806565b612036565b6102db6106c1366004613806565b61206c565b6102db6106d43660046138d8565b612082565b6107776106e7366004613832565b60036020819052600091825260409091208054600182015460028301549383015460048401546005909401546001600160801b0380851696600160801b95869004600f0b9694959094600685900b94600160381b81046001600160a01b031694600160d81b820463ffffffff1694600160f81b90920460ff1693828416938190048316928083169291909104168c565b604080516001600160801b039d8e168152600f9c909c0b60208d01528b019990995260608a019790975260069590950b60808901526001600160a01b0390931660a088015263ffffffff90911660c0870152151560e086015285166101008501528416610120840152831661014083015291909116610160820152610180016102b2565b61058f7f000000000000000000000000000000000000000000000000000000000000000081565b61058f7f000000000000000000000000000000000000000000000000000000000000000081565b6108707f000000000000000000000000000000000000000000000000000000000000000081565b60405160029190910b81526020016102b2565b61058f7f000000000000000000000000000000000000000000000000000000000000000081565b6108d17f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff90911681526020016102b2565b6102db6108f336600461378a565b6120b9565b6102db610906366004613806565b6120c7565b61034c61210f565b6102db610921366004613806565b612194565b60055460009081906001600160a01b031633148061094357503330145b6109685760405162461bcd60e51b815260040161095f9061390b565b60405180910390fd5b60005460ff161561098b5760405162461bcd60e51b815260040161095f9061392e565b6000805460ff1916600117905560408051808201909152600f81526e2d2d2d4e65772054726164652d2d2d60881b60208201526109c7906121d5565b60408051608080820183526001546001600160a01b03808216845261ffff600160a01b830416602080860182905260ff600160b01b8504811687890152600160b81b90940490931615156060808701919091528651610100810188528d81526000948101859052865190931696830196909652948101949094529192662386f26fc10000929181018b610a5c57600754610a60565b6006545b8152600060208083018290526002546001600160801b03166040808501829052606094850191909152805193840181528284529083018290528281018290528301519293509091908b1390610ab5908561221b565b8015610abf57508b155b15610b0f57600183604001818151610ad79190613969565b9052506040830151610ae8906116ce565b61ffff16606084018190526001805461ffff60a01b1916600160a01b830217905560208601525b825115801590610b23575089836040015114155b15610f7d57610b7f60405180610100016040528060008152602001600061ffff1681526020016000151581526020016000815260200160008152602001600081526020016000815260200160006001600160801b031681525090565b604084015181526060840151610b9690868f612082565b60608201528c610bb65760018460600151610bb19190613981565b610bc6565b6060840151610bc69060016139a4565b61ffff1660208201526060840151610be09060039061222f565b6001600160801b031660e082015281610c1d57610c188160e001518560c00151610c0a91906139ca565b6001600160801b031661233e565b610c42565b610c428160e001518560c00151610c3491906139ca565b6001600160801b0316612375565b83526040840151610c53908e611edd565b60408085018290528501518451610c6a929061206c565b836020018181525050610c9c604051806040016040528060088152602001675f5f5f5f5f5f5f5f60c01b8152506121d5565b610cca60405180604001604052806008815260200167435552505249434560c01b81525085604001516123ac565b610d166040518060400160405280601e81526020017f74726164696e673b206c69717569646974792c20616d6f756e746c65667400008152508560c001516001600160801b03166123ac565b8351610d2a90610d25906139ec565b6123f5565b610d766040518060400160405280601881526020017f6e65787470726963656c696d69742f706f696e746e65787400000000000000008152508260600151836020015161ffff1661243a565b610d9d604051806040016040528060018152602001606160f81b81525084600001516123ac565b610dd68460400151826060015186600001517f000000000000000000000000000000000000000000000000000000000000000087612486565b60c085015260a08401908152608084019182526040808801939093528251808401909352600e83526d185b5bdd5b9d1a5b985b991bdd5d60921b602084015290519051610e2492919061243a565b610e526040518060400160405280600381526020016239963160e91b8152508460200151856040015161243a565b8115610e7457608081015184518590610e6c908390613a09565b905250610e8c565b608081015184518590610e88908390613a48565b9052505b8060a0015184602001818151610ea29190613969565b90525060c08401516001600160801b031615610ee95760c08085015190820151610ed4916001600160801b03166126a8565b84608001818151610ee59190613969565b9052505b806060015184604001511415610f775760e08101516001600160801b031615610f1e576060840151610f1e906003908f6126bd565b6020810151600654600754600092610f38926003926127b5565b90508d610f4b57610f4881613a89565b90505b610f598560c001518261190b565b6001600160801b031660c086015250602081015161ffff1660608501525b50610b0f565b610f8a8360400151612808565b600180546001600160a01b0319166001600160a01b03929092169190911790556020850151606084015161ffff918216911614610fe75760608301516001805461ffff909216600160a01b0261ffff60a01b199092169190911790555b8260c001516001600160801b03168360e001516001600160801b03161461102d5760c0830151600280546001600160801b0319166001600160801b039092169190911790555b8b1561103c5760808301516006555b8061106d5761271083602001516110539190613969565b835161105e8d6139ec565b6110689190613a48565b61109a565b8b61108857825161107e908c613a09565b836020015161109a565b8251611094908c613a09565b83602001515b6000805460ff19169055909e909d509b505050505050505050505050565b60055460009081906001600160a01b03163314806110d557503330145b6110f15760405162461bcd60e51b815260040161095f9061390b565b60005460ff16156111145760405162461bcd60e51b815260040161095f9061392e565b6000805460ff1916600117815561112e6004898989612823565b90508060050154856001600160801b03161161115357846001600160801b0316611159565b80600501545b92508060060154846001600160801b03161161117e57836001600160801b0316611184565b80600601545b915082156111a657828160050160008282546111a09190613ab9565b90915550505b81156111c657818160060160008282546111c09190613ab9565b90915550505b506000805460ff1916905590969095509350505050565b6005546000906001600160a01b03163314806111f857503330145b6112145760405162461bcd60e51b815260040161095f9061390b565b60005460ff16156112375760405162461bcd60e51b815260040161095f9061392e565b6000805460ff191660019081179091555461ffff851690611260906001600160a01b03166116ce565b61ffff1614156112be5760405162461bcd60e51b815260206004820152602360248201527f43616e277420726564756365206f7264657220666f722063757272656e74207460448201526269636b60e81b606482015260840161095f565b60006112da33866112d08160016139a4565b6004929190612823565b90506112f26112e885613a89565b829085600061288e565b611309856112ff86613a89565b6003919086612963565b600083611336577f0000000000000000000000000000000000000000000000000000000000000000611358565b7f00000000000000000000000000000000000000000000000000000000000000005b90508361139f5761139a6113706105fe8860016139a4565b6001600160a01b031661138288611e53565b6001600160a01b0316876001600160801b0316612194565b6113da565b6113da6113b06105fe8860016139a4565b6001600160a01b03166113c288611e53565b6001600160a01b0316876001600160801b0316611e15565b6000805460ff19169055979650505050505050565b6113f8816116ce565b6001805461ffff92909216600160a01b0261ffff60a01b1990921691909117905561142281612808565b600180546001600160a01b0319166001600160a01b039290921691909117905550565b60055460009081906001600160a01b031633148061146257503330145b61147e5760405162461bcd60e51b815260040161095f9061390b565b60005460ff16156114a15760405162461bcd60e51b815260040161095f9061392e565b6000805460ff191660011790558280156114d757506001546001600160a01b03166114cb86611e53565b6001600160a01b031611155b156115155760405162461bcd60e51b815260206004820152600e60248201526d61736b2062656c6f77207072696560901b604482015260640161095f565b8215801561153f57506001546001600160a01b031661153386611e53565b6001600160a01b031610155b1561157e5760405162461bcd60e51b815260206004820152600f60248201526e626964732061626f7665207072696560881b604482015260640161095f565b600061159087876112d08160016139a4565b905061159e60038786612a34565b91506115ac8186868561288e565b6115b96003878787612963565b6000846115e6577f0000000000000000000000000000000000000000000000000000000000000000611608565b7f00000000000000000000000000000000000000000000000000000000000000005b90508461164f5761164a6116206105fe8960016139a4565b6001600160a01b031661163289611e53565b6001600160a01b0316886001600160801b0316612194565b61168a565b61168a6116606105fe8960016139a4565b6001600160a01b031661167289611e53565b6001600160a01b0316886001600160801b0316611e15565b93506116b760405180604001604052806009815260200168185b5bdd5b9d189a5960ba1b815250856123ac565b50506000805460ff19169055909590945092505050565b6000670de0b6b3a76400006116ea83662386f26fc100006126a8565b6116f49190613ae6565b92915050565b60055460009081906001600160a01b031633148061171757503330145b6117335760405162461bcd60e51b815260040161095f9061390b565b60005460ff16156117565760405162461bcd60e51b815260040161095f9061392e565b6000805460ff1916600190811782556040805160808101825282546001600160a01b038116825261ffff600160a01b8204166020830152600160b01b810460ff90811693830193909352600160b81b90049091161515606082015291906117c690889088906112d09082906139a4565b60015490915061ffff8716906117e4906001600160a01b03166116ce565b61ffff16146118295760405162461bcd60e51b81526020600482015260116024820152704e6f742063757272656e7420707269636560781b604482015260640161095f565b60008561184a576001820154600160801b90046001600160801b0316611859565b60018201546001600160801b03165b905061187161186782613a89565b839088600061288e565b6118888761187e83613a89565b6003919089612963565b6118bf6118996105fe8960016139a4565b6001600160a01b031684600001516001600160a01b0316836001600160801b0316611e15565b93506118f383600001516001600160a01b03166118db89611e53565b6001600160a01b0316836001600160801b0316612194565b6000805460ff19169055989397509295505050505050565b60008082600f0b1215611978576001600160801b03831661192b83613a89565b6119359085613afa565b9150816001600160801b0316106119735760405162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015260640161095f565b6116f4565b6001600160801b03831661198c83856139ca565b9150816001600160801b031610156116f45760405162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015260640161095f565b6005546000906001600160a01b03163314806119e657503330145b611a025760405162461bcd60e51b815260040161095f9061390b565b60005460ff1615611a255760405162461bcd60e51b815260040161095f9061392e565b6000805460ff191660019081178255611a4790869086906112d09082906139a4565b90506000611a5760038686612a34565b9050600084611a705782546001600160801b0316611a83565b8254600160801b90046001600160801b03165b9050806001600160801b0316826001600160801b031611611adc5760405162461bcd60e51b8152602060048201526013602482015272141bdcda5d1a5bdb881b9bdd08199a5b1b1959606a1b604482015260640161095f565b600085611afd576001840154600160801b90046001600160801b0316611b0c565b60018401546001600160801b03165b90508515611b3e57611b37611b256105fe8960016139a4565b6001600160a01b03166118db89611e53565b9450611b7c565b611b79611b4f6105fe8960016139a4565b6001600160a01b0316611b6189611e53565b6001600160a01b0316836001600160801b0316611e15565b94505b611b92611b8882613a89565b859088600061288e565b50506000805460ff191690555090949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611c0c5760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b604482015260640161095f565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c3b60038461222f565b6001600160801b03169392505050565b600080611c5e85856112d08160016139a4565b90506000611c6e60038686612a34565b9050600084611c875782546001600160801b0316611c9a565b8254600160801b90046001600160801b03165b9050600085611cbd576001840154600160801b90046001600160801b0316611ccc565b60018401546001600160801b03165b90506000816001600160801b0316118015611cf85750816001600160801b0316836001600160801b0316115b9450505050505b9392505050565b60055460009081906001600160a01b0316331480611d2357503330145b611d3f5760405162461bcd60e51b815260040161095f9061390b565b60005460ff1615611d625760405162461bcd60e51b815260040161095f9061392e565b6000805460ff19166001178155604080516080810182526001600160a01b038916815261ffff808916602083015287169181019190915281908190611db89060608101611dae89613a89565b600f0b9052612a8c565b9250925092506000821180611dcd5750600081115b15611dfd57818360050154611de29190613969565b818460060154611df29190613969565b600685015560058401555b6000805460ff19169055909890975095505050505050565b600082841015611e375760405162461bcd60e51b815260040161095f90613b1a565b611e4b82611e458587613ab9565b90612d04565b949350505050565b60006116f4611e6d662386f26fc1000061ffff8516613b3d565b612808565b6000611e4b82611e828587613ab9565b90612d19565b600081611eb857611e9f84846112d08160016139a4565b60010154600160801b90046001600160801b0316611e4b565b611ec884846112d08160016139a4565b600101546001600160801b0316949350505050565b600080611ee9846116ce565b905082158015611f045750611f0261ffff821685613b5c565b155b611f1657611f1181611e53565b611f24565b611f246105fe600183613981565b6001600160a01b0316949350505050565b60055460009081906001600160a01b0316331480611f5257503330145b611f6e5760405162461bcd60e51b815260040161095f9061390b565b60005460ff1615611f915760405162461bcd60e51b815260040161095f9061392e565b6000805460ff191660011790556001600160801b038516611fdf5760405162461bcd60e51b81526020600482015260086024820152670c08185b5bdd5b9d60c21b604482015260640161095f565b61201c60405180608001604052808a6001600160a01b031681526020018961ffff1681526020018861ffff16815260200187600f0b815250612a8c565b6000805460ff19169055909a909950975050505050505050565b6000828410156120585760405162461bcd60e51b815260040161095f90613b1a565b611e4b6120658486613ab9565b83906126a8565b6000611e4b8261207c8587613ab9565b906126a8565b600081156120ab57826120968560016139a4565b61ffff166120a49190613b3d565b9050611cff565b6120a48361ffff8616613b3d565b6000611c3b60038484612a34565b6000828410156120e95760405162461bcd60e51b815260040161095f90613b1a565b611e4b61206560026120fb8688613969565b6121059190613ae6565b611e458688613ab9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146121735760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b604482015260640161095f565b6001805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000828410156121b65760405162461bcd60e51b815260040161095f90613b1a565b611e4b6121c4858585611e15565b60006121cf85612375565b86612d2e565b612218816040516024016121e99190613bbd565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052612d7c565b50565b60006122278284613b5c565b159392505050565b61ffff811660009081526020838152604080832081516101808101835281546001600160801b038082168352600160801b91829004600f0b95830195909552600183015493820193909352600282015460608201526003820154600681900b6080830152600160381b81046001600160a01b031660a0830152600160d81b810463ffffffff1660c0830152600160f81b900460ff16151560e0820152600482015480851661010083018190529084900485166101208301526005909201548085166101408301529290920490921661016082015290158061231c57506101208101516001600160801b0316155b61232857612328613bd0565b806101200151816101000151611e4b91906139ca565b6000811561235857611973670de0b6b3a764000083612d19565b6116f4612366836001613969565b670de0b6b3a764000090612d19565b6000811561238f57611973670de0b6b3a7640000836126a8565b6116f461239d836001613969565b670de0b6b3a7640000906126a8565b6123f182826040516024016123c2929190613be6565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b179052612d7c565b5050565b6122188160405160240161240b91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052612d7c565b61248183838360405160240161245293929190613c08565b60408051601f198184030181529190526020810180516001600160e01b031663969cdd0360e01b179052612d7c565b505050565b6000808080888810158188128015906125fb578115612538576124b989886020015189600001518a604001516001612d9d565b965093508986106125185786518a96506124d79061207c8d89613ab9565b93506125116124e989620f4240613c2d565b62ffffff16620f424061250a878b602001518c600001518d60400151612d2e565b9190612ee4565b94506125c6565b61251161252889620f4240613c2d565b8a9062ffffff16620f4240612ee4565b61255c6125498a8960200151612f03565b6020890151895160408b01516000612d9d565b965093508986116125b35786518a965061257a9061207c888e613ab9565b945061259185600089600001518a60400151612d2e565b93506125116125a389620f4240613c2d565b869062ffffff16620f4240612ee4565b6125c361252889620f4240613c2d565b94505b6125f46125e9620f42406125da8b82613c2d565b62ffffff8c8116929116612ee4565b8690620f4240612ee4565b925061269a565b811561267857600061260c8a6139ec565b88519091508c9061261d9083612f1a565b6126279190613969565b96508a871061265f5761263f8b8d8a6000015161206c565b8b975095506127106126518783613ab9565b1161265a578095505b612663565b8095505b6126748660008a600001518f612f2f565b9450505b61268b8462ffffff8a16620f4240612ee4565b92506126978385613969565b93505b505095509550955095915050565b6000611cff83670de0b6b3a764000084612ee4565b61ffff821660009081526020849052604090208115612759576004810180546001600160801b03191690556005810180546001600160801b031690600061270383613c4b565b91906101000a8154816001600160801b0302191690836001600160801b0316021790555050612754604051806040016040528060068152602001657469636b3f3f60d01b8152508461ffff166123ac565b6127af565b6004810180546001600160801b03908116909155600582018054600160801b900490911690601061278983613c4b565b91906101000a8154816001600160801b0302191690836001600160801b03160217905550505b50505050565b61ffff8316600090815260208590526040902080546001820154600160801b909104600f0b91906127e69085613ab9565b600182015560028101546127fa9084613ab9565b600290910155949350505050565b806001600160a01b038116811461281e57600080fd5b919050565b6040805160609490941b6bffffffffffffffffffffffff191660208086019190915260f093841b6001600160f01b031990811660348701529290931b909116603684015280516018818503018152603890930181528251928201929092206000908152929052902090565b81156128f85760018401546128ac906001600160801b03168461190b565b6001850180546001600160801b0319166001600160801b03929092169190911790556000600f84900b13156127545783546001600160801b03808316600160801b0291161784556127af565b600184015461291790600160801b90046001600160801b03168461190b565b6001850180546001600160801b03928316600160801b0292169190911790556000600f84900b13156127af5783546001600160801b0319166001600160801b0391909116179092555050565b80156129cc5761ffff8316600090815260208590526040902060040154612993906001600160801b03168361190b565b61ffff8416600090815260208690526040902060040180546001600160801b0319166001600160801b03929092169190911790556127af565b61ffff83166000908152602085905260409020600401546129fd90600160801b90046001600160801b03168361190b565b61ffff8416600090815260208690526040902060040180546001600160801b03928316600160801b02921691909117905550505050565b600081612a675761ffff8316600090815260208590526040902060050154600160801b90046001600160801b0316611e4b565b505061ffff16600090815260209190915260409020600501546001600160801b031690565b604080516080810182526001546001600160a01b038116825261ffff600160a01b820416602080840182905260ff600160b01b8404811685870152600160b81b90930490921615156060808501919091528551928601519486015190860151600095869586959094612b0094919390612f70565b93508460600151600f0b600014612cfc57846020015161ffff16816020015161ffff161015612b9257612b8b612b398660400151611e53565b6001600160a01b0316612b4f8760200151611e53565b6001600160a01b031660008860600151600f0b1215612b7e578760600151612b7690613a89565b600f0b611e15565b8760600151600f0b611e15565b9150612cfc565b846040015161ffff16816020015161ffff161015612c9f5760025460408601516001600160801b0390911690612c0d90612bcb90611e53565b6001600160a01b031683600001516001600160a01b031660008960600151600f0b1215612c00578860600151612b7690613a89565b8860600151600f0b611e15565b9250612c6982600001516001600160a01b0316612c2d8860200151611e53565b6001600160a01b031660008960600151600f0b1215612c5c578860600151612c5490613a89565b600f0b612194565b8860600151600f0b612194565b9350612c7981876060015161190b565b600280546001600160801b0319166001600160801b039290921691909117905550612cfc565b612cf9612caf8660400151611e53565b6001600160a01b0316612cc58760200151611e53565b6001600160a01b031660008860600151600f0b1215612cec578760600151612c5490613a89565b8760600151600f0b612194565b92505b509193909250565b6000611cff8383670de0b6b3a7640000612ee4565b6000611cff83670de0b6b3a764000084612ffc565b6000612d3a8286612d04565b612d6986612d49876002613b3d565b612d539190613969565b6002612d5f878a612d04565b611e459190613ae6565b612d739190613969565b95945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808215612e73576000670de0b6b3a7640000600286612dbe898b612d04565b612dc89190613969565b612dd29190613d56565b612ddc9190613ae6565b90506000612dea878a612d04565b612df5906002613b3d565b90506000612e1e670de0b6b3a7640000612e0f8486613969565b612e199190613b3d565b61302a565b9050600087612e2d8a8c612d04565b612e379190613969565b9050612e478961207c8385613ab9565b955087612e5e612e578c89613969565b8b90612d04565b612e689190613969565b945050505050612eda565b60006002612e81878a612d04565b612e8b9190613ae6565b612e958789612d04565b612e9f9087613969565b612ea99190613ab9565b9050612eb58882612d04565b925084612ecc612ec58a8a613ab9565b8890612d04565b612ed69190613969565b9150505b9550959350505050565b828202811515841585830485141716612efc57600080fd5b0492915050565b600081831115612f135781611cff565b5090919050565b6000611cff8383670de0b6b3a7640000612ffc565b6000612f3b8286612f1a565b612d6986612f4a876002613b3d565b612f549190613969565b6002612f60878a612f1a565b612f6a9190613ae6565b90612f1a565b6000612f7f6004878787612823565b60065460075491925090600f85900b15612fcc57600654600754612fae916003918a9188918a91906000613103565b50600654600754612fca91600391899188918a91906001613103565b505b600080612fde60038a8a89888861320a565b9092509050612fef858884846132f6565b5050505095945050505050565b82820281151584158583048514171661301457600080fd5b6001826001830304018115150290509392505050565b600181600160801b81106130435760409190911b9060801c5b68010000000000000000811061305e5760209190911b9060401c5b64010000000081106130755760109190911b9060201c5b62010000811061308a5760089190911b9060101c5b610100811061309e5760049190911b9060081c5b601081106130b15760029190911b9060041c5b600881106130c0578160011b91505b5080820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c808204818110156130fd578091505b50919050565b61ffff8616600090815260208890526040812080546001600160801b03168261312c828961190b565b6001600160801b03838116159082161581141595509091501561317f578861ffff168a61ffff16116131675760018301879055600283018690555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b038216178355846131c55782546131c0906131bb90600f8b810b91600160801b9004900b613a48565b6134e0565b6131e3565b82546131e3906131bb90600f8b810b91600160801b9004900b613a09565b83546001600160801b03918216600160801b02911617909255509098975050505050505050565b61ffff80861660008181526020899052604080822088851683529082209193849391929184918291908a161061324b5750506001820154600283015461326f565b600184015461325a9089613ab9565b915083600201548761326c9190613ab9565b90505b6000808b61ffff168b61ffff161015613293575050600183015460028401546132b7565b60018501546132a2908b613ab9565b91508460020154896132b49190613ab9565b90505b816132c2858c613ab9565b6132cc9190613ab9565b9750806132d9848b613ab9565b6132e39190613ab9565b9650505050505050965096945050505050565b604080516101208101825285546001600160801b038082168352600160801b918290048116602084015260018801548082169484019490945292048216606082015260028601549091166080820152600385015460a0820152600485015460c0820152600585015460e082015260068501546101008201526000600f85900b6133c657600082608001516001600160801b0316116133bb5760405162461bcd60e51b815260206004820152600260248201526104e560f41b604482015260640161095f565b5060808101516133d7565b6133d482608001518661190b565b90505b600061340383608001516001600160801b0316670de0b6b3a76400008560a001518861250a9190613ab9565b9050600061343184608001516001600160801b0316670de0b6b3a76400008660c001518861250a9190613ab9565b905086600f0b60001461345c576002880180546001600160801b0319166001600160801b0385161790555b60038801869055600488018590556001600160801b03821615158061348a57506000816001600160801b0316115b156134d657816001600160801b03168860050160008282546134ac9190613969565b92505081905550806001600160801b03168860060160008282546134d09190613969565b90915550505b5050505050505050565b80600f81900b811461281e57600080fd5b80356001600160a01b038116811461281e57600080fd5b8035801515811461281e57600080fd5b60008083601f84011261352a57600080fd5b50813567ffffffffffffffff81111561354257600080fd5b60208301915083602082850101111561355a57600080fd5b9250929050565b60008060008060008060a0878903121561357a57600080fd5b613583876134f1565b955061359160208801613508565b94506040870135935060608701359250608087013567ffffffffffffffff8111156135bb57600080fd5b6135c789828a01613518565b979a9699509497509295939492505050565b803561ffff8116811461281e57600080fd5b80356001600160801b038116811461281e57600080fd5b600080600080600060a0868803121561361a57600080fd5b613623866134f1565b9450613631602087016135d9565b935061363f604087016135d9565b925061364d606087016135eb565b915061365b608087016135eb565b90509295509295909350565b6000806000806080858703121561367d57600080fd5b613686856134f1565b9350613694602086016135d9565b92506136a2604086016135eb565b91506136b060608601613508565b905092959194509250565b6000602082840312156136cd57600080fd5b5035919050565b6000806000606084860312156136e957600080fd5b6136f2846134f1565b9250613700602085016135d9565b915061370e60408501613508565b90509250925092565b60006020828403121561372957600080fd5b611cff826135eb565b6000806040838503121561374557600080fd5b61374e836135eb565b9150602083013580600f0b811461376457600080fd5b809150509250929050565b60006020828403121561378157600080fd5b611cff826134f1565b6000806040838503121561379d57600080fd5b6137a6836135d9565b91506137b460208401613508565b90509250929050565b600080600080608085870312156137d357600080fd5b6137dc856134f1565b93506137ea602086016135d9565b92506137f8604086016135d9565b91506136b0606086016135eb565b60008060006060848603121561381b57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561384457600080fd5b611cff826135d9565b6000806040838503121561386057600080fd5b823591506137b460208401613508565b60008060008060008060a0878903121561388957600080fd5b613892876134f1565b95506138a0602088016135d9565b94506138ae604088016135d9565b93506138bc606088016135eb565b9250608087013567ffffffffffffffff8111156135bb57600080fd5b6000806000606084860312156138ed57600080fd5b6138f6846135d9565b92506020840135915061370e60408501613508565b6020808252600990820152684e6f7420456e74727960b81b604082015260600190565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561397c5761397c613953565b500190565b600061ffff8381169083168181101561399c5761399c613953565b039392505050565b600061ffff8083168185168083038211156139c1576139c1613953565b01949350505050565b60006001600160801b038083168185168083038211156139c1576139c1613953565b6000600160ff1b821415613a0257613a02613953565b5060000390565b60008083128015600160ff1b850184121615613a2757613a27613953565b6001600160ff1b0384018313811615613a4257613a42613953565b50500390565b600080821280156001600160ff1b0384900385131615613a6a57613a6a613953565b600160ff1b8390038412811615613a8357613a83613953565b50500190565b600081600f0b6f7fffffffffffffffffffffffffffffff19811415613ab057613ab0613953565b60000392915050565b600082821015613acb57613acb613953565b500390565b634e487b7160e01b600052601260045260246000fd5b600082613af557613af5613ad0565b500490565b60006001600160801b038381169083168181101561399c5761399c613953565b602080825260099082015268383934b1b29022a92960b91b604082015260600190565b6000816000190483118215151615613b5757613b57613953565b500290565b600082613b6b57613b6b613ad0565b500690565b6000815180845260005b81811015613b9657602081850181015186830182015201613b7a565b81811115613ba8576000602083870101525b50601f01601f19169290920160200192915050565b602081526000611cff6020830184613b70565b634e487b7160e01b600052600160045260246000fd5b604081526000613bf96040830185613b70565b90508260208301529392505050565b606081526000613c1b6060830186613b70565b60208301949094525060400152919050565b600062ffffff8083168185168083038211156139c1576139c1613953565b60006001600160801b0380831681811415613c6857613c68613953565b6001019392505050565b600181815b80851115613cad578160001904821115613c9357613c93613953565b80851615613ca057918102915b93841c9390800290613c77565b509250929050565b600082613cc4575060016116f4565b81613cd1575060006116f4565b8160018114613ce75760028114613cf157613d0d565b60019150506116f4565b60ff841115613d0257613d02613953565b50506001821b6116f4565b5060208310610133831016604e8410600b8410161715613d30575081810a6116f4565b613d3a8383613c72565b8060001904821115613d4e57613d4e613953565b029392505050565b6000611cff60ff841683613cb556fea26469706673582212202768a7542e4ad2436b3fd302d626c274440f2c21e6c498e30e33558548b80aff64736f6c634300080a0033";