0 txs
2 calls
constructor
constructor()
functions
arbitrumSequencer
viewfunction arbitrumSequencer() view returns (address)
assetFee
viewfunction assetFee(address) view returns (uint24)
chainlinkOracle
viewfunction chainlinkOracle(address) view returns (address)
closeSwapRequests
viewfunction closeSwapRequests(bytes32) view returns (bytes32 key, uint256 longAmount, uint256 shortAmount, address longToken, address gmMarketToken, bool done)
eighteenDecimalAsset
viewfunction eighteenDecimalAsset(address) view returns (bool)
feeReceiver
viewfunction feeReceiver() view returns (address)
getDepositRecord
viewfunction getDepositRecord(bytes32 key) view returns (tuple)
getEstimatedMarketTokenPrice
viewfunction getEstimatedMarketTokenPrice(address longToken) view returns (int256, uint256, uint256, uint256)
getLatestData
viewfunction getLatestData(address _token) view returns (uint256)
getWithdrawRecord
viewfunction getWithdrawRecord(bytes32 key) view returns (tuple)
isManualRequest
viewfunction isManualRequest(bytes32) view returns (bool)
manualWithdraw
viewfunction manualWithdraw(address) view returns (bool)
nineDecimalAsset
viewfunction nineDecimalAsset(address) view returns (bool)
orderRefunded
viewfunction orderRefunded(bytes32) view returns (uint256 feesRefunded, uint256 amountRefunded, uint256 amountRepaid, uint256 gmTokensRefunded, uint256 depositOrWithdrawal, bool cancelled)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
RoleStore
viewfunction RoleStore() view returns (address)
sixDecimalAsset
viewfunction sixDecimalAsset(address) view returns (bool)
strategyAddresses
viewfunction strategyAddresses() view returns (address USDC, address WaterContract, address VodkaV2, address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
tempPayableAddress
viewfunction tempPayableAddress() view returns (address)
univ3Fee
viewfunction univ3Fee() view returns (uint24)
usdcReceivedFromFallback
viewfunction usdcReceivedFromFallback(bytes32) view returns (uint256)
userRefunds
viewfunction userRefunds(address, uint256) view returns (bytes32)
userToRefund
viewfunction userToRefund(bytes32) view returns (address)
VodkaV2Swapper
viewfunction VodkaV2Swapper() view returns (address)
WETH
viewfunction WETH() view returns (address)
WrappedBTC
viewfunction WrappedBTC() view returns (address)
afterDepositCancellation
nonpayablefunction afterDepositCancellation(bytes32 key, tuple deposit, tuple eventData)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32 key, tuple deposit, tuple eventData)
afterWithdrawalCancellation
nonpayablefunction afterWithdrawalCancellation(bytes32 key, tuple withdrawal, tuple eventData)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32 key, tuple withdrawal, tuple eventData)
finalizeClosePosition
nonpayablefunction finalizeClosePosition(bytes32 key, uint256 _receivedUSDC)
fixDepositExecution
nonpayablefunction fixDepositExecution(bytes32 key, uint256 _gmAmountReceived)
fixWithdrawal
nonpayablefunction fixWithdrawal(bytes32 key, uint256 longAmountFromGMX, uint256 usdcAmountFromGMX)
fixWithdrawalManual
nonpayablefunction fixWithdrawalManual(bytes32 key, uint256 _receivedFromManualSwap)
initialize
nonpayablefunction initialize(address _USDC, address _WaterContract, address _VodkaV2)
refundExecutionFee
payablefunction refundExecutionFee(bytes32 key, tuple eventData) payable
renounceOwnership
nonpayablefunction renounceOwnership()
requestGMXV2Swap
payablefunction requestGMXV2Swap(bytes32 _key) payable
setArbitrumSequencer
nonpayablefunction setArbitrumSequencer(address _arbitrumSequencer)
setChainlinkOracleForAsset
nonpayablefunction setChainlinkOracleForAsset(address _token, address _oracle)
setManualWithdraw
nonpayablefunction setManualWithdraw(address _token, bool _manual)
setNineDecimalAsset
nonpayablefunction setNineDecimalAsset(address _asset, bool _nineDecimal)
setRoleStore
nonpayablefunction setRoleStore(address _roleStore)
setSixDecimalAsset
nonpayablefunction setSixDecimalAsset(address _asset, bool _sixDecimal)
setStrategyParams
nonpayablefunction setStrategyParams(address _univ3Router, address _dataStore, address _oracle, address _reader, address _depositHandler, address _withdrawalHandler)
setUniv3Fee
nonpayablefunction setUniv3Fee(uint24 _univ3Fee, address _asset)
takeAll
nonpayablefunction takeAll(address _inputAsset)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ChainlinkOracleSet
event ChainlinkOracleSet(address token, address oracle)
CloseFinalized
event CloseFinalized(bytes32 key, uint256 totalAmount)
FeeReceiverSet
event FeeReceiverSet(address receiver)
Initialized
event Initialized(uint8 version)
KeysPendingSwap
event KeysPendingSwap(bytes32 key, uint256 longAmount, uint256 shortAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RepayDepositFailure
event RepayDepositFailure(address user, string reason, bytes data)
StrategyParamsSet
event StrategyParamsSet(address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
SwapRequested
event SwapRequested(bytes32 key, uint256 amount)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615e7c80620000f36000396000f3fe6080604052600436106102325760003560e01c80630269628c1461023e5780630fa63fe41461027b578063100e196d146102ae5780631b0079221461035957806321d41b321461037b5780632f2708a2146103bc5780633201ab4d146103dc578063373142e4146103fc578063395aef8e146104385780633a2cb99f1461047b5780633c372240146104bb578063438ee9a5146104ce57806344815229146104ee578063542059431461050e5780635c6329f41461052e5780635c975abb1461054e5780635f82eba814610566578063715018a61461058657806372ccfa601461059b578063753672d5146105bb5780637db2bd3e146105dc5780638da5cb5b1461060d57806394fce92b146106225780639f0938711461064f5780639f17af99146106d1578063a5ab05ab146106f1578063a5efb24d14610711578063a7c49f5a14610731578063a8f098d214610768578063ad5c464814610789578063b2fd9495146107aa578063b3f00674146107bd578063b63d5354146107de578063c0c53b8b146107ff578063c4b2b9801461081f578063c9888ec11461083f578063c9ac221a1461085f578063cc6624661461087f578063ceb0c4451461089f578063e88c35611461092d578063ed13e422146109cc578063f2f201dc146109fd578063f2fde38b14610a1d578063f36e2ea914610a3d578063f5faa89214610a5e578063fb4f120f14610a8f578063fd77d17514610aaf578063ff06f7b214610acf578063ffbde15e14610aef57600080fd5b3661023957005b600080fd5b34801561024a57600080fd5b506101085461026290600160a01b900462ffffff1681565b60405162ffffff90911681526020015b60405180910390f35b34801561028757600080fd5b50610262610296366004613aa7565b61010d6020526000908152604090205462ffffff1681565b3480156102ba57600080fd5b5060c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d1546102ff986001600160a01b03908116988116978116968116958116948116938116928116911689565b604080516001600160a01b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e083015290911661010082015261012001610272565b34801561036557600080fd5b50610379610374366004613aa7565b610b20565b005b34801561038757600080fd5b506103ac610396366004613aa7565b6101126020526000908152604090205460ff1681565b6040519015158152602001610272565b3480156103c857600080fd5b506103796103d7366004613ae6565b610b4b565b3480156103e857600080fd5b506103796103f7366004613b1f565b610b7f565b34801561040857600080fd5b5061042a610417366004613b41565b61010f6020526000908152604090205481565b604051908152602001610272565b34801561044457600080fd5b5061046e610453366004613aa7565b60d4602052600090815260409020546001600160a01b031681565b6040516102729190613b5a565b34801561048757600080fd5b5061049b610496366004613aa7565b610daf565b604080519485526020850193909352918301526060820152608001610272565b6103796104c9366004614fc5565b611038565b3480156104da57600080fd5b506103796104e9366004613b1f565b6112db565b3480156104fa57600080fd5b50610379610509366004613b1f565b6114dc565b34801561051a57600080fd5b50610379610529366004613ae6565b611581565b34801561053a57600080fd5b5061037961054936600461500b565b6115b5565b34801561055a57600080fd5b5060975460ff166103ac565b34801561057257600080fd5b5060d55461046e906001600160a01b031681565b34801561059257600080fd5b506103796119ad565b3480156105a757600080fd5b506103796105b6366004615107565b6119c1565b3480156105c757600080fd5b506101145461046e906001600160a01b031681565b3480156105e857600080fd5b506103ac6105f7366004613aa7565b6101106020526000908152604090205460ff1681565b34801561061957600080fd5b5061046e611b82565b34801561062e57600080fd5b5061064261063d366004613b41565b611b91565b6040516102729190615272565b34801561065b57600080fd5b506106a261066a366004613b41565b60d260205260009081526040902080546001820154600283015460038401546004850154600590950154939492939192909160ff1686565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610272565b3480156106dd57600080fd5b506103796106ec366004613ae6565b611c81565b3480156106fd57600080fd5b5061037961070c366004613aa7565b611cb5565b34801561071d57600080fd5b5061037961072c366004615313565b611da6565b34801561073d57600080fd5b5061046e61074c366004613b41565b610115602052600090815260409020546001600160a01b031681565b34801561077457600080fd5b5061010c5461046e906001600160a01b031681565b34801561079557600080fd5b506101085461046e906001600160a01b031681565b6103796107b8366004613b41565b611e4a565b3480156107c957600080fd5b5061010b5461046e906001600160a01b031681565b3480156107ea57600080fd5b506101095461046e906001600160a01b031681565b34801561080b57600080fd5b5061037961081a366004615349565b61212b565b34801561082b57600080fd5b5061037961083a366004615394565b612292565b34801561084b57600080fd5b5061042a61085a36600461550f565b6126cf565b34801561086b57600080fd5b5061037961087a366004615107565b612700565b34801561088b57600080fd5b5061037961089a36600461553b565b612e28565b3480156108ab57600080fd5b506108bf6108ba366004613b41565b612ec3565b604051610272919081516001600160a01b0390811682526020808401519083015260408084015190830152606080840151908301526080808401519083015260a08381015115159083015260c08084015161ffff169083015260e09283015116918101919091526101000190565b34801561093957600080fd5b50610991610948366004613b41565b61011360205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160a01b039081169190811690600160a01b900460ff1686565b604080519687526020870195909552938501929092526001600160a01b039081166060850152166080830152151560a082015260c001610272565b3480156109d857600080fd5b506103ac6109e7366004613b41565b6101116020526000908152604090205460ff1681565b348015610a0957600080fd5b5061042a610a18366004613aa7565b612f6e565b348015610a2957600080fd5b50610379610a38366004613aa7565b61322c565b348015610a4957600080fd5b5061010a5461046e906001600160a01b031681565b348015610a6a57600080fd5b506103ac610a79366004613aa7565b61010e6020526000908152604090205460ff1681565b348015610a9b57600080fd5b50610379610aaa366004613aa7565b6132a2565b348015610abb57600080fd5b50610379610aca366004615394565b6132cd565b348015610adb57600080fd5b50610379610aea366004615559565b61340b565b348015610afb57600080fd5b506103ac610b0a366004613aa7565b6101166020526000908152604090205460ff1681565b610b286134ce565b61010a80546001600160a01b0319166001600160a01b0392909216919091179055565b610b536134ce565b6001600160a01b0391909116600090815261011060205260409020805460ff1916911515919091179055565b610b8761352d565b610114546001600160a01b03163314610bd55760405162461bcd60e51b815260206004820152600b60248201526a2737ba1039bbb0b83832b960a91b60448201526064015b60405180910390fd5b6000610be083611b91565b600084815261011360205260409020600481015491925090600160a01b900460ff16610c395760405162461bcd60e51b81526020600482015260086024820152674e6f7420646f6e6560c01b6044820152606401610bcc565b6000838260020154610c4b91906155f1565b60cb5460c954919250610c6b916001600160a01b03908116911683613586565b826101000151610cef5760cb5460405163139fb1fb60e21b81526001600160a01b0390911690634e7ec7ec90610ca79088908590600401615604565b6020604051808303816000875af1158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea919061561d565b610d64565b60cb5460405163382169db60e11b81526001600160a01b0390911690637042d3b690610d219088908590600401615604565b6020604051808303816000875af1158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d64919061561d565b507f743cc7d5567c7f27952e3de23f56909c0ba91262027a172ce4886727fcfe250b8582604051610d96929190615604565b60405180910390a1505050610dab6001606555565b5050565b60cb54604051639c735fbb60e01b815260009182918291829182916001600160a01b031690639c735fbb90610de8908990600401613b5a565b608060405180830381865afa158015610e05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e299190615645565b90506000604051806080016040528083604001516001600160a01b0316815260200183606001516001600160a01b0316815260200183600001516001600160a01b0316815260200183602001516001600160a01b0316815250905060006040518060400160405280610e9e8560600151612f6e565b8152602001610eb08560600151612f6e565b815250905060006040518060400160405280610ecb8b612f6e565b8152602001610ed98b612f6e565b90526040805180820190915260c9549192506000918190610f02906001600160a01b0316612f6e565b815260c954602090910190610f1f906001600160a01b0316612f6e565b905260cf5460cd546040519293506000926001600160a01b039283169263095ce6c59216908890889088908890610f88906020016020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6040516020818303038152906040528051906020012060006040518863ffffffff1660e01b8152600401610fc297969594939291906156c9565b61018060405180830381865afa158015610fe0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110049190615764565b50905061101664e8d4a510008261582e565b602094850151938501519290940151939b929a50909850919650945050505050565b610109546040516001600160a01b039091169063ac4ab3fb90339061105f9060200161585c565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401611092929190615880565b602060405180830381865afa1580156110af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d3919061561d565b6110ef5760405162461bcd60e51b8152600401610bcc90615899565b60006110fa83612ec3565b9050600061110784611b91565b82519091506001600160a01b03166112795760cb54604051631f6f85f960e11b8152600481018690526001600160a01b0390911690633edf0bf290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611186919061561d565b1561121e5760cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa1580156111d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f991906158c2565b60d580546001600160a01b0319166001600160a01b039290921691909117905561129b565b806101000151156112535761014081015160d580546001600160a01b0319166001600160a01b0390921691909117905561129b565b805160d580546001600160a01b0319166001600160a01b0390921691909117905561129b565b815160d580546001600160a01b0319166001600160a01b039092169190911790555b60d5546040516001600160a01b03909116903480156108fc02916000818181858888f193505050501580156112d4573d6000803e3d6000fd5b5050505050565b6112e36134ce565b60006112ee83611b91565b6000848152610111602052604090205490915060ff166113505760405162461bcd60e51b815260206004820152601d60248201527f4d616e75616c2066756c66696c6c20646f6573206e6f742065786973740000006044820152606401610bcc565b600083815261011160205260409020805460ff1916905560c95461137f906001600160a01b03163330856135e3565b600083815261010f60205260408120549061139a84836155f1565b60cb5460c9549192506113ba916001600160a01b03908116911683613586565b825160d580546001600160a01b0319166001600160a01b0390921691909117905561010083015161145f5760cb5460405163139fb1fb60e21b81526001600160a01b0390911690634e7ec7ec906114179088908590600401615604565b6020604051808303816000875af1158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a919061561d565b6114d4565b60cb5460405163382169db60e11b81526001600160a01b0390911690637042d3b6906114919088908590600401615604565b6020604051808303816000875af11580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d4919061561d565b505050505050565b6114e46134ce565b60006114ef83612ec3565b805160d580546001600160a01b0319166001600160a01b0392831617905560cb546040516310c5504160e31b8152929350169063862a8208906115389086908690600401615604565b6020604051808303816000875af1158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b919061561d565b50505050565b6115896134ce565b6001600160a01b0391909116600090815261011660205260409020805460ff1916911515919091179055565b6115bd6134ce565b60006115c884611b91565b61012081015160cc5460405163095ea7b360e01b81529293506001600160a01b039182169263095ea7b3926116039216908790600401615880565b6020604051808303816000875af1158015611622573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611646919061561d565b50610108546101208201516000916001600160a01b0391821691161461176d576040805160a0810182526101208401516001600160a01b03808216600090815261010d602052848120546101085483168083529582205460c954929686956116c295909462ffffff948516949293909216911660c087016158df565b60408051601f19818403018152918152908252306020830152428282015260608201889052600060809092019190915260cc54905163c04b8d5960e01b81529192506001600160a01b03169063c04b8d599061172290849060040161597c565b6020604051808303816000875af1158015611741573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176591906159d4565b91505061185e565b6040805161010081018252610120840180516001600160a01b03908116835260c9548116602080850191909152915116600090815261010d9091528281205462ffffff1692820192909252306060820152608081016117ce4261012c6155f1565b8152602081018790526000604080830182905260609092015260cc54905163414bf38960e01b81529192506001600160a01b03169063414bf389906118179084906004016159ed565b6020604051808303816000875af1158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a91906159d4565b9150505b600061186a82856155f1565b60cb5460c95491925061188a916001600160a01b03908116911683613586565b825160d580546001600160a01b0319166001600160a01b0390921691909117905561010083015161192f5760cb5460405163139fb1fb60e21b81526001600160a01b0390911690634e7ec7ec906118e79089908590600401615604565b6020604051808303816000875af1158015611906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192a919061561d565b6119a4565b60cb5460405163382169db60e11b81526001600160a01b0390911690637042d3b6906119619089908590600401615604565b6020604051808303816000875af1158015611980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a4919061561d565b50505050505050565b6119b56134ce565b6119bf600061361b565b565b60cb548251516001600160a01b039081169116146119f15760405162461bcd60e51b8152600401610bcc90615a56565b610109546040516001600160a01b039091169063ac4ab3fb903390611a189060200161585c565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401611a4b929190615880565b602060405180830381865afa158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c919061561d565b611aa85760405162461bcd60e51b8152600401610bcc90615899565b6000611ab384611b91565b600085815260d260205260409081902060cb5491516365f1680b60e11b815260048101889052929350916001600160a01b039091169063cbe2d01690602401600060405180830381600087803b158015611b0c57600080fd5b505af1158015611b20573d6000803e3d6000fd5b50505060209485015160a0015182555081840151600382015560058101805460ff19166001908117909155600490910181905590516001600160a01b0316600090815260d3845260408120805492830181558152929092209091019190915550565b6033546001600160a01b031690565b611c0d60405180610160016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b60cb5460405163191618a160e21b8152600481018490526001600160a01b039091169063645862849060240161016060405180830381865afa158015611c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b9190615a84565b92915050565b611c896134ce565b6001600160a01b0391909116600090815261010e60205260409020805460ff1916911515919091179055565b611cbd6134ce565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611cec903090600401613b5a565b602060405180830381865afa158015611d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2d91906159d4565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb90611d5e9033908590600401615880565b6020604051808303816000875af1158015611d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da1919061561d565b505050565b611dae6134ce565b6001600160a01b038116611dd45760405162461bcd60e51b8152600401610bcc90615b34565b6113888262ffffff161115611e1a5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b6044820152606401610bcc565b6001600160a01b0316600090815261010d60205260409020805462ffffff191662ffffff92909216919091179055565b611e5261352d565b60cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec091906158c2565b6001600160a01b0316336001600160a01b031614611f0d5760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b6044820152606401610bcc565b60008181526101136020526040902060038101546001600160a01b0316611f685760405162461bcd60e51b815260206004820152600f60248201526e139bc81cddd85c081c995c5d595cdd608a1b6044820152606401610bcc565b6004810154600160a01b900460ff1615611fb35760405162461bcd60e51b815260206004820152600c60248201526b416c726561647920646f6e6560a01b6044820152606401610bcc565b600381015460048083018054600185015460ff60a01b198216600160a01b179092556101145460405163095ea7b360e01b81526001600160a01b039586169592831694869363095ea7b39361200d93911691869101615880565b6020604051808303816000875af115801561202c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612050919061561d565b506101145460008681526101156020526040908190205490516341c70b0160e11b81526001600160a01b03868116600483015285811660248301526044820189905260648201859052918216608482015291169063838e160290349060a4016000604051808303818588803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b50505050507f45579223fec6cb578b03c6d062e4b45df7b15aa5699bc5bf65d791a986c2dd958582604051612112929190615604565b60405180910390a1505050506121286001606555565b50565b600054610100900460ff161580801561214b5750600054600160ff909116105b8061216c575061215a3061366d565b15801561216c575060005460ff166001145b6121cf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bcc565b6000805460ff1916600117905580156121f2576000805461ff0019166101001790555b60cb80546001600160a01b038085166001600160a01b03199283161790925560ca805486841690831617905560c980549287169290911691909117905561223761367c565b61223f6136ab565b6122476136da565b801561157b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b60cb548251516001600160a01b039081169116146122c25760405162461bcd60e51b8152600401610bcc90615a56565b610109546040516001600160a01b039091169063ac4ab3fb9033906122e99060200161585c565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161231c929190615880565b602060405180830381865afa158015612339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235d919061561d565b6123795760405162461bcd60e51b8152600401610bcc90615899565b600061238484612ec3565b60cb5460e0820151604051639c735fbb60e01b81529293506000926001600160a01b0390921691639c735fbb916123bd91600401613b5a565b608060405180830381865afa1580156123da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fe9190615645565b600086815260d2602090815260409182902060cb548451938701519287015194955090936001600160a01b0390911692632eef441792909161244091906155f1565b6040518363ffffffff1660e01b815260040161245d929190615880565b600060405180830381600087803b15801561247757600080fd5b505af115801561248b573d6000803e3d6000fd5b505060c9548551602087015160405163a9059cbb60e01b81526001600160a01b03909316945063a9059cbb93506124c492600401615880565b6020604051808303816000875af19250505080156124ff575060408051601f3d908101601f191682019092526124fc9181019061561d565b60015b6125995761250b615b5a565b806308c379a00361258d575061251f615b76565b8061252a575061258f565b61254d612535611b82565b602086015160c9546001600160a01b03169190613586565b83516040517f82c0c6a1ad712f85d6b95668f665366b6764e416954dd8e158cba05305b13f329161257f918490615bff565b60405180910390a1506125df565b505b3d6000803e3d6000fd5b806125dd5760405162461bcd60e51b81526020600482015260146024820152731554d110c81d1c985b9cd9995c8819985a5b195960621b6044820152606401610bcc565b505b60ca54604084015160c954612602926001600160a01b0391821692911690613709565b60ca54604080850151905163015cb0a560e01b81526001600160a01b039092169163015cb0a591612637918190600401615604565b600060405180830381600087803b15801561265157600080fd5b505af1158015612665573d6000803e3d6000fd5b50505060209586015160a0015182555082850151600180830191909155604080850151600284015560058301805460ff1916831790556000600490930183905593516001600160a01b0316825260d386529281208054938401815581529390932001929092555050565b60d360205281600052604060002081815481106126eb57600080fd5b90600052602060002001600091509150505481565b60cb548251516001600160a01b039081169116146127305760405162461bcd60e51b8152600401610bcc90615a56565b610109546040516001600160a01b039091169063ac4ab3fb9033906127579060200161585c565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161278a929190615880565b602060405180830381865afa1580156127a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cb919061561d565b6127e75760405162461bcd60e51b8152600401610bcc90615899565b60006127f284611b91565b60cb54610120820151604051639c735fbb60e01b81529293506000926001600160a01b0390921691639c735fbb9161282c91600401613b5a565b608060405180830381865afa158015612849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286d9190615645565b6101208301516001600160a01b0316600090815261010e602052604090205490915060ff16612cb15760008360200151600001516000815181106128b3576128b3615c3d565b602002602001015160200151905060008460200151600001516001815181106128de576128de615c3d565b602090810291909101810151015161012085015160cc5460405163095ea7b360e01b81529293506001600160a01b039182169263095ea7b3926129279216908690600401615880565b6020604051808303816000875af1158015612946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296a919061561d565b50610108546101208501516000916001600160a01b03918216911614612a91576040805160a0810182526101208701516001600160a01b03808216600090815261010d602052848120546101085483168083529582205460c954929686956129e695909462ffffff948516949293909216911660c087016158df565b60408051601f19818403018152918152908252306020830152428282015260608201879052600060809092019190915260cc54905163c04b8d5960e01b81529192506001600160a01b03169063c04b8d5990612a4690849060040161597c565b6020604051808303816000875af1158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8991906159d4565b915050612b82565b6040805161010081018252610120870180516001600160a01b03908116835260c9548116602080850191909152915116600090815261010d9091528281205462ffffff169282019290925230606082015260808101612af24261012c6155f1565b8152602081018690526000604080830182905260609092015260cc54905163414bf38960e01b81529192506001600160a01b03169063414bf38990612b3b9084906004016159ed565b6020604051808303816000875af1158015612b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7e91906159d4565b9150505b6000612b8e82846155f1565b60cb5460c954919250612bae916001600160a01b03908116911683613586565b856101000151612c325760cb5460405163139fb1fb60e21b81526001600160a01b0390911690634e7ec7ec90612bea908c908590600401615604565b6020604051808303816000875af1158015612c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2d919061561d565b612ca7565b60cb5460405163382169db60e11b81526001600160a01b0390911690637042d3b690612c64908c908590600401615604565b6020604051808303816000875af1158015612c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca7919061561d565b50505050506112d4565b60008581526101136020908152604082208781559085015151805191929091612cdc57612cdc615c3d565b6020026020010151602001518160010181905550836020015160000151600181518110612d0b57612d0b615c3d565b60209081029190910181015181015160028301556101208401516003830180546001600160a01b039283166001600160a01b031990911617905560408401516004840180546001600160a81b031916919092161790558401515180516001908110612d7857612d78615c3d565b602090810291909101810151810151600088815261010f835260408082209290925561011183528181208054600160ff199091168117909155865161011585529183902080546001600160a01b0319166001600160a01b0390931692909217909155830154600284015482518a815293840191909152908201527f4401575353e798e4b9855d5f81bb264f1115f08129e335d35c0db45f16ad6a83906060015b60405180910390a1505050505050565b612e306134ce565b6001600160a01b038216612e565760405162461bcd60e51b8152600401610bcc90615b34565b6001600160a01b03828116600090815260d460205260409081902080546001600160a01b03191692841692909217909155517fafdfd513be71799b20ea13372c27dacb2e35615c8031a10bb6970412890ef0d390612eb79084908490615c53565b60405180910390a15050565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082015260cb54915163546fcf3960e01b81526004810184905290916001600160a01b03169063546fcf399060240161010060405180830381865afa158015612f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b9190615c7f565b600080600061010a60009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612feb9190615d3e565b5091945092505082159050806130375760405162461bcd60e51b815260206004820152601160248201527029b2b8bab2b731b2b91034b9903237bbb760791b6044820152606401610bcc565b60006130438342615d8e565b9050610e10811161308e5760405162461bcd60e51b815260206004820152601560248201527423b930b1b2903832b934b7b2103737ba1037bb32b960591b6044820152606401610bcc565b6001600160a01b03808716600090815260d46020526040808220548151633fabe5a360e21b815291519293169163feaf968c9160048082019260a0929091908290030181865afa1580156130e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310a9190615d3e565b5050506001600160a01b03891660009081526101106020526040812054919350915060ff161561315757613143826402540be400615da1565b61315090620f4240615da1565b9050613221565b61010c546001600160a01b03908116908916036131895761317d826402540be400615da1565b61315090612710615da1565b6001600160a01b0388166000908152610112602052604090205460ff16156131cc57662386f26fc100006131c2836402540be400615da1565b6131509190615db8565b6001600160a01b0388166000908152610116602052604090205460ff161561320157620186a06131c2836402540be400615da1565b620f4240613214836402540be400615da1565b61321e9190615db8565b90505b979650505050505050565b6132346134ce565b6001600160a01b0381166132995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bcc565b6121288161361b565b6132aa6134ce565b61010980546001600160a01b0319166001600160a01b0392909216919091179055565b60cb548251516001600160a01b039081169116146132fd5760405162461bcd60e51b8152600401610bcc90615a56565b610109546040516001600160a01b039091169063ac4ab3fb9033906133249060200161585c565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401613357929190615880565b602060405180830381865afa158015613374573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613398919061561d565b6133b45760405162461bcd60e51b8152600401610bcc90615899565b60cb5460208201515180516001600160a01b039092169163862a82089186916000906133e2576133e2615c3d565b6020026020010151602001516040518363ffffffff1660e01b8152600401611538929190615604565b6134136134ce565b60cc80546001600160a01b038881166001600160a01b0319928316811790935560cd8054898316908416811790915560ce8054898416908516811790915560cf8054898516908616811790915560d08054898616908716811790915560d18054958916959096168517909555604080519687526020870193909352918501526060840152608083019190915260a08201527f03f1afd7ce30865f51a6e0b71bd812eb2a48c45e187b710c8e67eaaa53c15c579060c001612e18565b336134d7611b82565b6001600160a01b0316146119bf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bcc565b60026065540361357f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bcc565b6002606555565b611da18363a9059cbb60e01b84846040516024016135a5929190615880565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526137a5565b6001606555565b6040516001600160a01b038085166024830152831660448201526064810182905261157b9085906323b872dd60e01b906084016135a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03163b151590565b600054610100900460ff166136a35760405162461bcd60e51b8152600401610bcc90615dcc565b6119bf61387a565b600054610100900460ff166136d25760405162461bcd60e51b8152600401610bcc90615dcc565b6119bf6138aa565b600054610100900460ff166137015760405162461bcd60e51b8152600401610bcc90615dcc565b6119bf6138dd565b604051636eb1769f60e11b81526000906001600160a01b0385169063dd62ed3e9061373a9030908790600401615c53565b602060405180830381865afa158015613757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377b91906159d4565b905061157b8463095ea7b360e01b8561379486866155f1565b6040516024016135a5929190615880565b60006137fa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166139049092919063ffffffff16565b905080516000148061381b57508080602001905181019061381b919061561d565b611da15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bcc565b600054610100900460ff166138a15760405162461bcd60e51b8152600401610bcc90615dcc565b6119bf3361361b565b600054610100900460ff166138d15760405162461bcd60e51b8152600401610bcc90615dcc565b6097805460ff19169055565b600054610100900460ff166135dc5760405162461bcd60e51b8152600401610bcc90615dcc565b6060613913848460008561391b565b949350505050565b60608247101561397c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bcc565b600080866001600160a01b031685876040516139989190615e17565b60006040518083038185875af1925050503d80600081146139d5576040519150601f19603f3d011682016040523d82523d6000602084013e6139da565b606091505b50915091506132218783838760608315613a53578251600003613a4c57613a008561366d565b613a4c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bcc565b5081613913565b6139138383815115613a685781518083602001fd5b8060405162461bcd60e51b8152600401610bcc9190615e33565b6001600160a01b038116811461212857600080fd5b8035613aa281613a82565b919050565b600060208284031215613ab957600080fd5b8135613ac481613a82565b9392505050565b6001600160a01b03169052565b801515811461212857600080fd5b60008060408385031215613af957600080fd5b8235613b0481613a82565b91506020830135613b1481613ad8565b809150509250929050565b60008060408385031215613b3257600080fd5b50508035926020909101359150565b600060208284031215613b5357600080fd5b5035919050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604081016001600160401b0381118282101715613ba357613ba3613b6e565b60405250565b606081016001600160401b0381118282101715613ba357613ba3613b6e565b601f8201601f191681016001600160401b0381118282101715613bed57613bed613b6e565b6040525050565b60405160e081016001600160401b0381118282101715613c1657613c16613b6e565b60405290565b60405161012081016001600160401b0381118282101715613c1657613c16613b6e565b60405161016081016001600160401b0381118282101715613c1657613c16613b6e565b60006001600160401b03821115613c7b57613c7b613b6e565b5060051b60200190565b600082601f830112613c9657600080fd5b81356001600160401b03811115613caf57613caf613b6e565b604051613cc6601f8301601f191660200182613bc8565b818152846020838601011115613cdb57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613d0957600080fd5b81356020613d1682613c62565b604051613d238282613bc8565b83815260059390931b8501820192828101915086841115613d4357600080fd5b8286015b84811015613d67578035613d5a81613a82565b8352918301918301613d47565b509695505050505050565b600082601f830112613d8357600080fd5b81356020613d9082613c62565b60408051613d9e8382613bc8565b84815260059490941b8601830193838101925087851115613dbe57600080fd5b8387015b85811015613e5c5780356001600160401b0380821115613de25760008081fd5b90890190818b03601f1901851315613dfa5760008081fd5b8451613e0581613b84565b8783013582811115613e175760008081fd5b613e258d8a83870101613c85565b8252508583013582811115613e3a5760008081fd5b613e488d8a83870101613cf8565b828a01525086525050928401928401613dc2565b50979650505050505050565b60006040808385031215613e7b57600080fd5b8051613e8681613b84565b91508183356001600160401b0380821115613ea057600080fd5b818601915086601f830112613eb457600080fd5b81356020613ec182613c62565b8651613ecd8282613bc8565b83815260059390931b850182019282810191508a841115613eed57600080fd5b8286015b84811015613f6f57803586811115613f095760008081fd5b8701808d03601f19018a1315613f1f5760008081fd5b8951613f2a81613b84565b8582013588811115613f3c5760008081fd5b613f4a8f8883860101613c85565b825250908a013590613f5b82613a82565b808601919091528352918301918301613ef1565b5086525087810135955082861115613f8657600080fd5b613f9289878a01613d72565b8186015250505050505092915050565b600082601f830112613fb357600080fd5b81356020613fc082613c62565b60408051613fce8382613bc8565b848152600594851b8701840194848201935088861115613fed57600080fd5b8488015b868110156140ec5780356001600160401b03808211156140115760008081fd5b908a0190818c03601f19018613156140295760008081fd5b855161403481613b84565b88830135828111156140465760008081fd5b6140548e8b83870101613c85565b82525086830135828111156140695760008081fd5b8084019350508c603f84011261408157600091508182fd5b88830135915061409082613c62565b875161409c8282613bc8565b83815292861b84018801928a810191508e8411156140ba5760008081fd5b938801935b838510156140d85784358252938a0193908a01906140bf565b828b01525087525050938501938501613ff1565b509098975050505050505050565b6000604080838503121561410d57600080fd5b805161411881613b84565b91508183356001600160401b038082111561413257600080fd5b818601915086601f83011261414657600080fd5b8135602061415382613c62565b865161415f8282613bc8565b83815260059390931b850182019282810191508a84111561417f57600080fd5b8286015b848110156141f45780358681111561419b5760008081fd5b8701808d03601f19018a13156141b15760008081fd5b89516141bc81613b84565b85820135888111156141ce5760008081fd5b6141dc8f8883860101613c85565b825250908a0135858201528352918301918301614183565b508652508781013595508286111561420b57600080fd5b613f9289878a01613fa2565b600082601f83011261422857600080fd5b8135602061423582613c62565b604080516142438382613bc8565b848152600594851b870184019484820193508886111561426257600080fd5b8488015b868110156140ec5780356001600160401b03808211156142865760008081fd5b908a0190818c03601f190186131561429e5760008081fd5b85516142a981613b84565b88830135828111156142bb5760008081fd5b6142c98e8b83870101613c85565b82525086830135828111156142de5760008081fd5b8084019350508c603f8401126142f657600091508182fd5b88830135915061430582613c62565b87516143118282613bc8565b83815292861b84018801928a810191508e84111561432f5760008081fd5b938801935b8385101561434d5784358252938a0193908a0190614334565b828b01525087525050938501938501614266565b6000604080838503121561437457600080fd5b805161437f81613b84565b91508183356001600160401b038082111561439957600080fd5b818601915086601f8301126143ad57600080fd5b813560206143ba82613c62565b86516143c68282613bc8565b83815260059390931b850182019282810191508a8411156143e657600080fd5b8286015b8481101561445b578035868111156144025760008081fd5b8701808d03601f19018a13156144185760008081fd5b895161442381613b84565b85820135888111156144355760008081fd5b6144438f8883860101613c85565b825250908a01358582015283529183019183016143ea565b508652508781013595508286111561447257600080fd5b613f9289878a01614217565b600082601f83011261448f57600080fd5b8135602061449c82613c62565b604080516144aa8382613bc8565b848152600594851b87018401948482019350888611156144c957600080fd5b8488015b868110156140ec5780356001600160401b03808211156144ed5760008081fd5b908a0190818c03601f19018613156145055760008081fd5b855161451081613b84565b88830135828111156145225760008081fd5b6145308e8b83870101613c85565b82525086830135828111156145455760008081fd5b8084019350508c603f84011261455d57600091508182fd5b88830135915061456c82613c62565b87516145788282613bc8565b83815292861b84018801928a810191508e8411156145965760008081fd5b938801935b838510156145bd5784356145ae81613ad8565b8252938a0193908a019061459b565b828b015250875250509385019385016144cd565b600060408083850312156145e457600080fd5b80516145ef81613b84565b91508183356001600160401b038082111561460957600080fd5b818601915086601f83011261461d57600080fd5b8135602061462a82613c62565b86516146368282613bc8565b83815260059390931b850182019282810191508a84111561465657600080fd5b8286015b848110156146d8578035868111156146725760008081fd5b8701808d03601f19018a13156146885760008081fd5b895161469381613b84565b85820135888111156146a55760008081fd5b6146b38f8883860101613c85565b825250908a0135906146c482613ad8565b80860191909152835291830191830161465a565b50865250878101359550828611156146ef57600080fd5b613f9289878a0161447e565b600082601f83011261470c57600080fd5b8135602061471982613c62565b604080516147278382613bc8565b848152600594851b870184019484820193508886111561474657600080fd5b8488015b868110156140ec5780356001600160401b038082111561476a5760008081fd5b908a0190818c03601f19018613156147825760008081fd5b855161478d81613b84565b888301358281111561479f5760008081fd5b6147ad8e8b83870101613c85565b82525086830135828111156147c25760008081fd5b8084019350508c603f8401126147da57600091508182fd5b8883013591506147e982613c62565b87516147f58282613bc8565b83815292861b84018801928a810191508e8411156148135760008081fd5b938801935b838510156148315784358252938a0193908a0190614818565b828b0152508752505093850193850161474a565b6000604080838503121561485857600080fd5b805161486381613b84565b91508183356001600160401b038082111561487d57600080fd5b818601915086601f83011261489157600080fd5b8135602061489e82613c62565b86516148aa8282613bc8565b83815260059390931b850182019282810191508a8411156148ca57600080fd5b8286015b8481101561493f578035868111156148e65760008081fd5b8701808d03601f19018a13156148fc5760008081fd5b895161490781613b84565b85820135888111156149195760008081fd5b6149278f8883860101613c85565b825250908a01358582015283529183019183016148ce565b508652508781013595508286111561495657600080fd5b613f9289878a016146fb565b600082601f83011261497357600080fd5b8135602061498082613c62565b60405161498d8282613bc8565b83815260059390931b85018201928281019150868411156149ad57600080fd5b8286015b84811015613d67576001600160401b0381358110156149cf57600080fd5b813588016040818b03601f190112156149e757600080fd5b6040516149f381613b84565b8682013583811115614a0457600080fd5b614a128c8983860101613c85565b825250604082013583811115614a2757600080fd5b8083019250508a603f830112614a3c57600080fd5b86820135614a4981613c62565b604051614a568282613bc8565b82815260059290921b84016040019189810191508d831115614a7757600080fd5b604085015b83811015614aaf578681351115614a9257600080fd5b614aa28f60408335890101613c85565b8352918a01918a01614a7c565b50838a01525050855250509183019183016149b1565b60006040808385031215614ad857600080fd5b8051614ae381613b84565b91508183356001600160401b0380821115614afd57600080fd5b818601915086601f830112614b1157600080fd5b81356020614b1e82613c62565b8651614b2a8282613bc8565b83815260059390931b850182019282810191508a841115614b4a57600080fd5b8286015b84811015614bdd57803586811115614b665760008081fd5b8701808d03601f19018a1315614b7c5760008081fd5b8951614b8781613b84565b8582013588811115614b995760008081fd5b614ba78f8883860101613c85565b8252508a82013588811115614bbc5760008081fd5b614bca8f8883860101613c85565b8288015250845250918301918301614b4e565b5086525087810135955082861115614bf457600080fd5b613f9289878a01614962565b600082601f830112614c1157600080fd5b81356020614c1e82613c62565b604051614c2b8282613bc8565b83815260059390931b8501820192828101915086841115614c4b57600080fd5b8286015b84811015613d67576001600160401b038135811015614c6d57600080fd5b813588016040818b03601f19011215614c8557600080fd5b604051614c9181613b84565b8682013583811115614ca257600080fd5b614cb08c8983860101613c85565b825250604082013583811115614cc557600080fd5b8083019250508a603f830112614cda57600080fd5b86820135614ce781613c62565b604051614cf48282613bc8565b82815260059290921b84016040019189810191508d831115614d1557600080fd5b604085015b83811015614d4d578681351115614d3057600080fd5b614d408f60408335890101613c85565b8352918a01918a01614d1a565b50838a0152505085525050918301918301614c4f565b60006040808385031215614d7657600080fd5b8051614d8181613b84565b91508183356001600160401b0380821115614d9b57600080fd5b818601915086601f830112614daf57600080fd5b81356020614dbc82613c62565b8651614dc88282613bc8565b83815260059390931b850182019282810191508a841115614de857600080fd5b8286015b84811015614e7b57803586811115614e045760008081fd5b8701808d03601f19018a1315614e1a5760008081fd5b8951614e2581613b84565b8582013588811115614e375760008081fd5b614e458f8883860101613c85565b8252508a82013588811115614e5a5760008081fd5b614e688f8883860101613c85565b8288015250845250918301918301614dec565b5086525087810135955082861115614e9257600080fd5b613f9289878a01614c00565b600060e08284031215614eb057600080fd5b614eb8613bf4565b905081356001600160401b0380821115614ed157600080fd5b614edd85838601613e68565b83526020840135915080821115614ef357600080fd5b614eff858386016140fa565b60208401526040840135915080821115614f1857600080fd5b614f2485838601614361565b60408401526060840135915080821115614f3d57600080fd5b614f49858386016145d1565b60608401526080840135915080821115614f6257600080fd5b614f6e85838601614845565b608084015260a0840135915080821115614f8757600080fd5b614f9385838601614ac5565b60a084015260c0840135915080821115614fac57600080fd5b50614fb984828501614d63565b60c08301525092915050565b60008060408385031215614fd857600080fd5b8235915060208301356001600160401b03811115614ff557600080fd5b61500185828601614e9e565b9150509250929050565b60008060006060848603121561502057600080fd5b505081359360208301359350604090920135919050565b600060e0828403121561504957600080fd5b60405160e081016001600160401b038111828210171561506b5761506b613b6e565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b6000602082840312156150cc57600080fd5b604051602081016001600160401b03811182821017156150ee576150ee613b6e565b60405290508082356150ff81613ad8565b905292915050565b60008060006060848603121561511c57600080fd5b8335925060208401356001600160401b038082111561513a57600080fd5b90850190610120828803121561514f57600080fd5b60405161515b81613ba9565b82358281111561516a57600080fd5b830160e0818a03121561517c57600080fd5b615184613bf4565b61518d82613a97565b815261519b60208301613a97565b60208201526151ac60408301613a97565b60408201526151bd60608301613a97565b60608201526151ce60808301613a97565b608082015260a0820135848111156151e557600080fd5b6151f18b828501613cf8565b60a08301525060c08201358481111561520957600080fd5b6152158b828501613cf8565b60c08301525082525061522b8860208501615037565b602082015261523e8861010085016150ba565b604082015280945050604086013591508082111561525b57600080fd5b5061526886828701614e9e565b9150509250925092565b600061016082019050615286828451613acb565b6020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e08301516152d560e084018215159052565b5061010083810151151590830152610120808401516152f682850182613acb565b50506101408084015161530b82850182613acb565b505092915050565b6000806040838503121561532657600080fd5b823562ffffff8116811461533957600080fd5b91506020830135613b1481613a82565b60008060006060848603121561535e57600080fd5b833561536981613a82565b9250602084013561537981613a82565b9150604084013561538981613a82565b809150509250925092565b6000806000606084860312156153a957600080fd5b8335925060208401356001600160401b03808211156153c757600080fd5b81860191506101208083890312156153de57600080fd5b6040516153ea81613ba9565b8335838111156153f957600080fd5b8401808a0383131561540a57600080fd5b615412613c1c565b925061541d81613a97565b835261542b60208201613a97565b602084015261543c60408201613a97565b604084015261544d60608201613a97565b606084015261545e60808201613a97565b608084015261546f60a08201613a97565b60a084015261548060c08201613a97565b60c084015260e08101358481111561549757600080fd5b6154a38b828401613cf8565b60e08501525061010080820135858111156154bd57600080fd5b6154c98c828501613cf8565b82860152508383526154de8b60208801615037565b60208401526154ef8b8288016150ba565b604084015250508095505050604086013591508082111561525b57600080fd5b6000806040838503121561552257600080fd5b823561552d81613a82565b946020939093013593505050565b6000806040838503121561554e57600080fd5b823561533981613a82565b60008060008060008060c0878903121561557257600080fd5b863561557d81613a82565b9550602087013561558d81613a82565b9450604087013561559d81613a82565b935060608701356155ad81613a82565b925060808701356155bd81613a82565b915060a08701356155cd81613a82565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b80820180821115611c7b57611c7b6155db565b918252602082015260400190565b8051613aa281613ad8565b60006020828403121561562f57600080fd5b8151613ac481613ad8565b8051613aa281613a82565b60006080828403121561565757600080fd5b604051608081016001600160401b038111828210171561567957615679613b6e565b604052825161568781613a82565b8152602083015161569781613a82565b602082015260408301516156aa81613a82565b604082015260608301516156bd81613a82565b60608201529392505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a01511660808401525061572360a083018880518252602090810151910152565b855160e08301526020860151610100830152845161012083015260208501516101408301528361016083015282151561018083015298975050505050505050565b60008082840361018081121561577957600080fd5b8351925061016080601f198301121561579157600080fd5b615799613c3f565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b634e487b7160e01b600052601260045260246000fd5b60008261583d5761583d615818565b600160ff1b821460001984141615615857576158576155db565b500590565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b6001600160a01b03929092168252602082015260400190565b6020808252600f908201526e4e6f742070726f70657220726f6c6560881b604082015260600190565b6000602082840312156158d457600080fd5b8151613ac481613a82565b6001600160601b0319606096871b811682526001600160e81b031960e896871b8116601484015294871b811660178301529290941b909216602b840152921b909116602e82015260420190565b60005b8381101561594757818101518382015260200161592f565b50506000910152565b6000815180845261596881602086016020860161592c565b601f01601f19169290920160200192915050565b602081526000825160a0602084015261599860c0840182615950565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b6000602082840312156159e657600080fd5b5051919050565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c0808401519083015260e09283015116918101919091526101000190565b60208082526014908201527320b1b1b7bab73a1034b9b73a102b37b235b0ab1960611b604082015260600190565b60006101608284031215615a9757600080fd5b615a9f613c3f565b615aa88361563a565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c0820152615af260e08401615612565b60e0820152610100615b05818501615612565b90820152610120615b1784820161563a565b90820152610140615b2984820161563a565b908201529392505050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b600060033d1115615b735760046000803e5060005160e01c5b90565b600060443d1015615b845790565b6040516003193d81016004833e81513d6001600160401b038083116024840183101715615bb357505050505090565b8285019150815181811115615bcb5750505050505090565b843d8701016020828501011115615be55750505050505090565b615bf460208286010187613bc8565b509095945050505050565b6001600160a01b0383168152606060208201819052600090615c2390830184615950565b828103604084015260008152602081019150509392505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b805161ffff81168114613aa257600080fd5b6000610100808385031215615c9357600080fd5b604051908101906001600160401b0382118183101715615cb557615cb5613b6e565b81604052615cc28461563a565b815260208401516020820152604084015160408201526060840151606082015260808401516080820152615cf860a08501615612565b60a0820152615d0960c08501615c6d565b60c0820152615d1a60e0850161563a565b60e0820152949350505050565b80516001600160501b0381168114613aa257600080fd5b600080600080600060a08688031215615d5657600080fd5b615d5f86615d27565b9450602086015193506040860151925060608601519150615d8260808701615d27565b90509295509295909350565b81810381811115611c7b57611c7b6155db565b8082028115828204841417611c7b57611c7b6155db565b600082615dc757615dc7615818565b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251615e2981846020870161592c565b9190910192915050565b602081526000613ac4602083018461595056fea26469706673582212206570c69564f63d89c6426700b436c4b89039a5b2d970972fe5e1d6eb81563ba164736f6c63430008130033