0 txs
0 calls
constructor
constructor((address orderBook, ((address interpreter, address store, bytes bytecode) evaluable, (address signer, bytes32[] context, bytes signature)[] signedContext) task, bytes implementationData) config)
functions
iRouteProcessor
viewfunction iRouteProcessor() view returns (address)
iTaskHash
viewfunction iTaskHash() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
arb4
payablefunction arb4(address orderBook, tuple takeOrders, tuple task) payable
onTakeOrders2
nonpayablefunction onTakeOrders2(address inputToken, address outputToken, bytes32 inputAmountSent, bytes32 totalOutputAmount, bytes takeOrdersData)
events
Construct
event Construct(address sender, (address orderBook, ((address interpreter, address store, bytes bytecode) evaluable, (address signer, bytes32[] context, bytes signature)[] signedContext) task, bytes implementationData) config)
errors
CoefficientOverflow
error CoefficientOverflow(int256 signedCoefficient, int256 exponent)
ExponentOverflow
error ExponentOverflow(int256 signedCoefficient, int256 exponent)
InvalidSignature
error InvalidSignature(uint256 i)
LossyConversionFromFloat
error LossyConversionFromFloat(int256 signedCoefficient, int256 exponent)
NegativeFixedDecimalConversion
error NegativeFixedDecimalConversion(int256 signedCoefficient, int256 exponent)
NoOrders
error NoOrders()
TokenDecimalsReadFailure
error TokenDecimalsReadFailure(address token, uint8 tofuOutcome)
WrongTask
error WrongTask()
creation bytecode
0x60c0604052600060805234801561001557600080fd5b5060405161362b38038061362b83398101604081905261003491610396565b808060016000819055507f3a5f92e1700a303557ddae1bed800da2d50036e5b24950a948611540f0928e79338260405161006f92919061060f565b60405180910390a16020810151516040015151156100b65760208082015160405161009a920161066f565b60408051601f1981840301815291905280516020909101206080525b5050600081604001518060200190518101906100d29190610689565b6001600160a01b031660a052506106a69050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561011e5761011e6100e6565b60405290565b604080519081016001600160401b038111828210171561011e5761011e6100e6565b604051601f8201601f191681016001600160401b038111828210171561016e5761016e6100e6565b604052919050565b6001600160a01b038116811461018b57600080fd5b50565b60005b838110156101a9578181015183820152602001610191565b50506000910152565b600082601f8301126101c357600080fd5b81516001600160401b038111156101dc576101dc6100e6565b6101ef601f8201601f1916602001610146565b81815284602083860101111561020457600080fd5b61021582602083016020870161018e565b949350505050565b60006001600160401b03821115610236576102366100e6565b5060051b60200190565b600082601f83011261025157600080fd5b815160206102666102618361021d565b610146565b82815260059290921b8401810191818101908684111561028557600080fd5b8286015b8481101561038b5780516001600160401b03808211156102a857600080fd5b908801906060828b03601f190112156102c15760008081fd5b6102c96100fc565b868301516102d681610176565b8152604083810151838111156102ec5760008081fd5b8401603f81018d136102fe5760008081fd5b8881015161030e6102618261021d565b81815260059190911b82018301908a8101908f83111561032e5760008081fd5b928401925b8284101561034c5783518252928b0192908b0190610333565b858c01525050506060840151838111156103665760008081fd5b6103748d8a838801016101b2565b918301919091525085525050918301918301610289565b509695505050505050565b600060208083850312156103a957600080fd5b82516001600160401b03808211156103c057600080fd5b90840190606082870312156103d457600080fd5b6103dc6100fc565b82516103e781610176565b815282840151828111156103fa57600080fd5b83016040818903121561040c57600080fd5b610414610124565b81518481111561042357600080fd5b82016060818b03121561043557600080fd5b61043d6100fc565b815161044881610176565b81528188015161045781610176565b8189015260408201518681111561046d57600080fd5b6104798c8285016101b2565b604083015250825250818601518481111561049357600080fd5b61049f8a828501610240565b87830152508086840152505060408301519350818411156104bf57600080fd5b6104cb878585016101b2565b60408201529695505050505050565b600081518084526104f281602086016020860161018e565b601f01601f19169290920160200192915050565b6000604082516040855260018060a01b03808251166040870152602080830151606083821660608a015260408501519450606060808a015261054b60a08a01866104da565b888401518a82038b86015280518083529196508401925083860190600581901b870185016000805b838110156105fd57898303601f19018552865180518a168452888101518985018890528051888601819052908a0190849060808701905b808310156105ca5783518252928c019260019290920191908c01906105aa565b508e84015193508681038f8801526105e281856104da565b96505050505087870196508785019450600181019050610573565b50909c9b505050505050505050505050565b6001600160a01b0383811682526040602080840182905284519092169083015282015160608083015260009061064860a0840182610506565b90506040840151603f1984830301608085015261066582826104da565b9695505050505050565b6020815260006106826020830184610506565b9392505050565b60006020828403121561069b57600080fd5b815161068281610176565b60805160a051612f376106f46000396000818160af01528181610594015281816105c901528181610604015261075701526000818161012e0152818161025601526102a70152612f376000f3fe60806040526004361061005a5760003560e01c80634ed39461116100435780634ed39461146100e9578063691f9ed7146100fc57806393be095e1461011c5761005a565b806301ffc9a7146100685780630f8cc55c1461009d575b34801561006657600080fd5b005b34801561007457600080fd5b50610088610083366004611e81565b61015e565b60405190151581526020015b60405180910390f35b3480156100a957600080fd5b506100d17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610094565b6100666100f7366004611ee2565b610243565b34801561010857600080fd5b50610066610117366004611f67565b610585565b34801561012857600080fd5b506101507f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610094565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f9ed70000000000000000000000000000000000000000000000000000000014806101f157507fffffffff0000000000000000000000000000000000000000000000000000000082167f4ed3946100000000000000000000000000000000000000000000000000000000145b8061023d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61024b610787565b6102548161228f565b7f0000000000000000000000000000000000000000000000000000000000000000158015906102c957508060405160200161028f91906123dd565b604051602081830303815290604052805190602001207f000000000000000000000000000000000000000000000000000000000000000014155b15610300576040517f8812562900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61030d60608401846124bd565b9050600003610348576040517f9c95219f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061035760608501856124bd565b600081811061036857610368612507565b905060200281019061037a919061251d565b610384908061253d565b610392906040810190612553565b61039f60608701876124bd565b60008181106103b0576103b0612507565b90506020028101906103c2919061251d565b602001358181106103d5576103d5612507565b6103eb926020604090920201908101915061259d565b905060006103fc60608601866124bd565b600081811061040d5761040d612507565b905060200281019061041f919061251d565b610429908061253d565b610437906060810190612553565b61044460608801886124bd565b600081811061045557610455612507565b9050602002810190610467919061251d565b6040013581811061047a5761047a612507565b610490926020604090920201908101915061259d565b90506104a76001600160a01b0383168760006107e5565b6104bd6001600160a01b038316876000196107e5565b600080876001600160a01b031663d0f7a862886040518263ffffffff1660e01b81526004016104ec919061282c565b60408051808303816000875af115801561050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052e9190612a47565b90925090506105486001600160a01b0385168960006107e5565b6105716105548761228f565b85610560600188610993565b8661056c600189610993565b610a1e565b50505050506105806001600055565b505050565b6105ba6001600160a01b0387167f000000000000000000000000000000000000000000000000000000000000000060006107e5565b6105f06001600160a01b0387167f00000000000000000000000000000000000000000000000000000000000000006000196107e5565b60006105fe82840184612a6b565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632646478b8961069d898c6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610674573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106989190612aa0565b610d0e565b8a6106e08a8d6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610674573d6000803e3d6000fd5b30886040518763ffffffff1660e01b815260040161070396959493929190612ac3565b6020604051808303816000875af1158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190612b0f565b905061077d6001600160a01b0389167f000000000000000000000000000000000000000000000000000000000000000060006107e5565b5050505050505050565b6002600054036107de5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600055565b80158061087857506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190612b0f565b155b6108ea5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016107d5565b6040516001600160a01b0383166024820152604481018290526105809084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610d4b565b60008060006109a28585610e33565b909250905060018260038111156109bb576109bb612b28565b141580156109db575060008260038111156109d8576109d8612b28565b14155b15610a165783826040517fee07877f0000000000000000000000000000000000000000000000000000000081526004016107d5929190612b3e565b949350505050565b604080516001808252818301909252600091816020015b6060815260200190600190039081610a35575050604080516003808252608082019092529192506000919060208201606080368337019050506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af59190612b0f565b90508015610b1157610b116001600160a01b0388163383610f01565b600080610b1e8389610f4a565b915091508184600081518110610b3657610b36612507565b602090810291909101015250506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091506001600160a01b038616906370a0823190602401602060405180830381865afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190612b0f565b90508015610be457610be46001600160a01b0386163383610f01565b600080610bf18387610f4a565b915091508184600181518110610c0957610c09612507565b602090810291909101015250479150610c2490503382610f8e565b610c4e817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee6110a7565b82600281518110610c6157610c61612507565b602002602001018181525050508082600081518110610c8257610c82612507565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160a08101825260009181018281526060808301939093526080820183905281526020810191909152815260200190600190039081610ca45790505090508781600081518110610cf957610cf9612507565b602002602001018190525061077d8382611103565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316601b0b60e084901d610d428282866112f4565b95945050505050565b6000610da0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113529092919063ffffffff16565b9050805160001480610dc1575080806020019051810190610dc19190612b79565b6105805760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d5565b600080600080610e438686611361565b90925090506000826003811115610e5c57610e5c612b28565b03610ef4576040805180820182526001815260ff83811660208084019182526001600160a01b038a166000908152908b9052939093209151825493517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff161761010093909116929092029190911790555b90925090505b9250929050565b6040516001600160a01b0383166024820152604481018290526105809084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161092f565b6000806000806000610f5c87876114c3565b925092509250600080610f6f8585611521565b9150915081838015610f7e5750815b9650965050505050509250929050565b80471015610fde5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107d5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461102b576040519150601f19603f3d011682016040523d82523d6000602084013e611030565b606091505b50509050806105805760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107d5565b60008060006110b68585611521565b91509150806110fb576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016107d5565b509392505050565b3360008181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b865181101561077d5786818151811061116b5761116b612507565b6020026020010151935060008460000151604001515111156112ec576000808560000151600001516001600160a01b031663d04dfe236040518060e001604052808960000151602001516001600160a01b031681526020018a81526020018960000151604001518152602001600081526020016111ec8e8b602001516115f5565b8152602001888152602001878152506040518263ffffffff1660e01b81526004016112179190612bf5565b600060405180830381865afa158015611234573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261125c9190810190612cf1565b80519193509150156112e9578551602001516040517f04b19db40000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906304b19db4906112b6908b908590600401612dad565b600060405180830381600087803b1580156112d057600080fd5b505af11580156112e4573d6000803e3d6000fd5b505050505b50505b600101611150565b60008060006113048686866118fb565b9150915080611349576040517f05e4767800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526044016107d5565b50949350505050565b6060610a168484600085611a53565b6001600160a01b03811660008181526020848152604080832081518083018352905460ff80821615158352610100909104168184015281518083018352600481527f313ce5670000000000000000000000000000000000000000000000000000000093810193909352905192938493919284928392916113e091612dc6565b600060405180830381855afa9150503d806000811461141b576040519150601f19603f3d011682016040523d82523d6000602084013e611420565b606091505b509150915081158061143457508051602014155b1561144a57505060200151600392509050610efa565b6000818060200190518101906114609190612b0f565b905060ff81111561147d5750505060200151600392509050610efa565b8351819061149557600096509450610efa9350505050565b846020015160ff168160ff16146114ad5760026114b0565b60015b8560200151965096505050505050610efa565b6000808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86111561151057600a860460018201600a88066000149350935093505061151a565b8593509150600190505b9250925092565b6000601b83900b83148061157f577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000084051561156457620186a0840593506005830192505b8384601b0b1461157f57600a84059350826001019250611564565b828360030b146115c5576040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101859052602481018490526044016107d5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931660e09290921b91909117929050565b60606000825167ffffffffffffffff81111561161357611613612011565b60405190808252806020026020018201604052801561163c578160200160208202803683370190505b509050600080845111611650576000611656565b83516001015b855160010101905060008167ffffffffffffffff81111561167957611679612011565b6040519080825280602002602001820160405280156116ac57816020015b60608152602001906001900390816116975790505b50905060006116d1604080516002815233602082015230818301526060810190915290565b8282815181106116e3576116e3612507565b602002602001018190525060005b875181101561174157818060010192505087818151811061171457611714612507565b602002602001015183838151811061172e5761172e612507565b60209081029190910101526001016116f1565b508551156118f15780806001019150508382828151811061176457611764612507565b602002602001018190525060005b86518110156118ef5761182387828151811061179057611790612507565b6020026020010151600001516118006117cd8a85815181106117b4576117b4612507565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b89848151811061181257611812612507565b602002602001015160400151611b45565b61185c576040517f52bf9848000000000000000000000000000000000000000000000000000000008152600481018290526024016107d5565b86818151811061186e5761186e612507565b6020026020010151600001516001600160a01b031660001b85828151811061189857611898612507565b60200260200101818152505081806001019250508681815181106118be576118be612507565b6020026020010151602001518383815181106118dc576118dc612507565b6020908102919091010152600101611772565b505b5095945050505050565b6000806000851215611943576040517f4a7d166b00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016107d5565b846000036119575750600090506001611a4b565b8460ff84168501858112156119a2576040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101889052602481018790526044016107d5565b6000806000831215611a10577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb38312156119e6576000809550955050505050611a4b565b82600003600a0a91508184816119fe576119fe612dd8565b0495505084029091149150611a4b9050565b6000831315611a4057611a2483600a612ee8565b9150611a308285612ef4565b955060019450611a4b9350505050565b509193506001925050505b935093915050565b606082471015611acb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107d5565b600080866001600160a01b03168587604051611ae79190612dc6565b60006040518083038185875af1925050503d8060008114611b24576040519150601f19603f3d011682016040523d82523d6000602084013e611b29565b606091505b5091509150611b3a87838387611ba6565b979650505050505050565b6000806000611b548585611c1f565b90925090506000816004811115611b6d57611b6d612b28565b148015611b8b5750856001600160a01b0316826001600160a01b0316145b80611b9c5750611b9c868686611c61565b9695505050505050565b60608315611c15578251600003611c0e576001600160a01b0385163b611c0e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d5565b5081610a16565b610a168383611d93565b6000808251604103611c555760208301516040840151606085015160001a611c4987828585611dbd565b94509450505050610efa565b50600090506002610efa565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401611c8b929190612f0b565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611cf69190612dc6565b600060405180830381855afa9150503d8060008114611d31576040519150601f19603f3d011682016040523d82523d6000602084013e611d36565b606091505b5091509150818015611d4a57506020815110155b8015611b9c575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090611d889083016020908101908401612b0f565b149695505050505050565b815115611da35781518083602001fd5b8060405162461bcd60e51b81526004016107d59190612f24565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611df45750600090506003611e78565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e48573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611e7157600060019250925050611e78565b9150600090505b94509492505050565b600060208284031215611e9357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ec357600080fd5b9392505050565b6001600160a01b0381168114611edf57600080fd5b50565b600080600060608486031215611ef757600080fd5b8335611f0281611eca565b9250602084013567ffffffffffffffff80821115611f1f57600080fd5b9085019060a08288031215611f3357600080fd5b90925060408501359080821115611f4957600080fd5b50840160408187031215611f5c57600080fd5b809150509250925092565b60008060008060008060a08789031215611f8057600080fd5b8635611f8b81611eca565b95506020870135611f9b81611eca565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611fc657600080fd5b818901915089601f830112611fda57600080fd5b813581811115611fe957600080fd5b8a6020828501011115611ffb57600080fd5b6020830194508093505050509295509295509295565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561204a5761204a612011565b60405290565b6040805190810167ffffffffffffffff8111828210171561204a5761204a612011565b604051601f8201601f1916810167ffffffffffffffff8111828210171561209c5761209c612011565b604052919050565b600082601f8301126120b557600080fd5b813567ffffffffffffffff8111156120cf576120cf612011565b6120e26020601f19601f84011601612073565b8181528460208386010111156120f757600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff82111561212e5761212e612011565b5060051b60200190565b600082601f83011261214957600080fd5b8135602061215e61215983612114565b612073565b82815260059290921b8401810191818101908684111561217d57600080fd5b8286015b8481101561228457803567ffffffffffffffff808211156121a157600080fd5b908801906060828b03601f190112156121ba5760008081fd5b6121c2612027565b868301356121cf81611eca565b8152604083810135838111156121e55760008081fd5b8401603f81018d136121f75760008081fd5b8881013561220761215982612114565b81815260059190911b82018301908a8101908f8311156122275760008081fd5b928401925b828410156122455783358252928b0192908b019061222c565b858c015250505060608401358381111561225f5760008081fd5b61226d8d8a838801016120a4565b918301919091525085525050918301918301612181565b509695505050505050565b6000604082360312156122a157600080fd5b6122a9612050565b823567ffffffffffffffff808211156122c157600080fd5b8185019150606082360312156122d657600080fd5b6122de612027565b82356122e981611eca565b815260208301356122f981611eca565b602082015260408301358281111561231057600080fd5b61231c368286016120a4565b6040830152508352602085013591508082111561233857600080fd5b5061234536828601612138565b60208301525092915050565b60005b8381101561236c578181015183820152602001612354565b50506000910152565b6000815180845261238d816020860160208601612351565b601f01601f19169290920160200192915050565b60008151808452602080850194506020840160005b838110156123d2578151875295820195908201906001016123b6565b509495945050505050565b6000602080835260608451604080848701526001600160a01b03808351166060880152808584015116608088015260408301519250606060a088015261242660c0880184612375565b925084880151601f19808986030160408a01528482518087528887019150888160051b880101898501945060005b828110156124ac578489830301845285518781511683528b8101518b8d8501526124808c8501826123a1565b918a0151848303858c01529190506124988183612375565b978d0197958d019593505050600101612454565b509c9b505050505050505050505050565b6000808335601e198436030181126124d457600080fd5b83018035915067ffffffffffffffff8211156124ef57600080fd5b6020019150600581901b3603821315610efa57600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235607e1983360301811261253357600080fd5b9190910192915050565b60008235609e1983360301811261253357600080fd5b6000808335601e1984360301811261256a57600080fd5b83018035915067ffffffffffffffff82111561258557600080fd5b6020019150600681901b3603821315610efa57600080fd5b6000602082840312156125af57600080fd5b8135611ec381611eca565b6000808335601e198436030181126125d157600080fd5b830160208101925035905067ffffffffffffffff8111156125f157600080fd5b8060051b3603821315610efa57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261263757600080fd5b90910192915050565b6000808335601e1984360301811261265757600080fd5b830160208101925035905067ffffffffffffffff81111561267757600080fd5b803603821315610efa57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6000808335601e198436030181126126c857600080fd5b830160208101925035905067ffffffffffffffff8111156126e857600080fd5b8060061b3603821315610efa57600080fd5b8183526000602080850194508260005b858110156123d257813561271d81611eca565b6001600160a01b0316875281830135838801526040968701969091019060010161270a565b818352602080840193600091600585811b830182018585805b8981101561281d57601f19878503018b52612776838a612603565b6060813561278381611eca565b6001600160a01b0316865261279a828901836125ba565b828a8901528083890152608092507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111156127d4578586fd5b881b8082898501378701905060406127ee84820185612640565b94508389840301828a01526128068484018683612686565b9f8b019f985050509488019450505060010161275b565b50919998505050505050505050565b6000602080835260c08301843582850152604082860135818601526060818701358187015261285d818801886125ba565b60a060808901528481865260e08901905060e08260051b8a010195508260005b83811015612a1a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208b89030183528135607e198636030181126128c057600080fd5b8501803536829003609e190181126128d757600080fd5b60808a52810180356128e881611eca565b6001600160a01b0380821660808d01526129048d840184612603565b915060a0808d0152813561291781611eca565b81166101208d0152818d013561292c81611eca565b166101408c015261293f818b0182612640565b9150896101608d01526129576101808d018383612686565b9150506129668a8301836126b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80808e85030160c08f015261299c8483856126fa565b93506129aa8c8601866126b1565b93509150808e85030160e08f0152506129c48383836126fa565b9250505060808201356101008c01528b8301358c8c0152898301358a8c01526129ef898401846125ba565b935091508a8103898c0152612a05818484612742565b9a50505092890192509088019060010161287d565b50505050505050612a2e6080860186612640565b9250601f198583030160a0860152611b9c828483612686565b60008060408385031215612a5a57600080fd5b505080516020909101519092909150565b600060208284031215612a7d57600080fd5b813567ffffffffffffffff811115612a9457600080fd5b610a16848285016120a4565b600060208284031215612ab257600080fd5b815160ff81168114611ec357600080fd5b60006001600160a01b038089168352876020840152808716604084015285606084015280851660808401525060c060a0830152612b0360c0830184612375565b98975050505050505050565b600060208284031215612b2157600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03831681526040810160048310612b6c57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b600060208284031215612b8b57600080fd5b81518015158114611ec357600080fd5b60008282518085526020808601955060208260051b8401016020860160005b84811015612be857601f19868403018952612bd68383516123a1565b98840198925090830190600101612bba565b5090979650505050505050565b602081526001600160a01b038251166020820152602082015160408201526000604083015160e06060840152612c2f610100840182612375565b9050606084015160808401526080840151601f19808584030160a0860152612c578383612b9b565b925060a08601519150808584030160c0860152612c7483836123a1565b925060c08601519150808584030160e086015250610d4282826123a1565b600082601f830112612ca357600080fd5b81516020612cb361215983612114565b8083825260208201915060208460051b870101935086841115612cd557600080fd5b602086015b848110156122845780518352918301918301612cda565b60008060408385031215612d0457600080fd5b825167ffffffffffffffff80821115612d1c57600080fd5b818501915085601f830112612d3057600080fd5b81516020612d4061215983612114565b82815260059290921b84018101918181019089841115612d5f57600080fd5b948201945b83861015612d7d57855182529482019490820190612d64565b91880151919650909350505080821115612d9657600080fd5b50612da385828601612c92565b9150509250929050565b828152604060208201526000610a1660408301846123a1565b60008251612533818460208701612351565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612e3f578160001904821115612e2557612e25612dee565b80851615612e3257918102915b93841c9390800290612e09565b509250929050565b600082612e565750600161023d565b81612e635750600061023d565b8160018114612e795760028114612e8357612e9f565b600191505061023d565b60ff841115612e9457612e94612dee565b50506001821b61023d565b5060208310610133831016604e8410600b8410161715612ec2575081810a61023d565b612ecc8383612e04565b8060001904821115612ee057612ee0612dee565b029392505050565b6000611ec38383612e47565b808202811582820484141761023d5761023d612dee565b828152604060208201526000610a166040830184612375565b602081526000611ec3602083018461237556000000000000000000000000000000000000000000000000000000000000002000000000000000000000000093e7298a2c7d05c151ba4572140b8b52e06792bd00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000544ba588efd839d2692fc31ea991cd39993c135f