6 txs
13 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
0x60c0604052600060805234801561001557600080fd5b50604051613a89380380613a8983398101604081905261003491610396565b808060016000819055507f3a5f92e1700a303557ddae1bed800da2d50036e5b24950a948611540f0928e79338260405161006f92919061060f565b60405180910390a16020810151516040015151156100b65760208082015160405161009a920161066f565b60408051601f1981840301815291905280516020909101206080525b5050600081604001518060200190518101906100d29190610689565b6001600160a01b031660a052506106a69050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561011e5761011e6100e6565b60405290565b604080519081016001600160401b038111828210171561011e5761011e6100e6565b604051601f8201601f191681016001600160401b038111828210171561016e5761016e6100e6565b604052919050565b6001600160a01b038116811461018b57600080fd5b50565b60005b838110156101a9578181015183820152602001610191565b50506000910152565b600082601f8301126101c357600080fd5b81516001600160401b038111156101dc576101dc6100e6565b6101ef601f8201601f1916602001610146565b81815284602083860101111561020457600080fd5b61021582602083016020870161018e565b949350505050565b60006001600160401b03821115610236576102366100e6565b5060051b60200190565b600082601f83011261025157600080fd5b815160206102666102618361021d565b610146565b82815260059290921b8401810191818101908684111561028557600080fd5b8286015b8481101561038b5780516001600160401b03808211156102a857600080fd5b908801906060828b03601f190112156102c15760008081fd5b6102c96100fc565b868301516102d681610176565b8152604083810151838111156102ec5760008081fd5b8401603f81018d136102fe5760008081fd5b8881015161030e6102618261021d565b81815260059190911b82018301908a8101908f83111561032e5760008081fd5b928401925b8284101561034c5783518252928b0192908b0190610333565b858c01525050506060840151838111156103665760008081fd5b6103748d8a838801016101b2565b918301919091525085525050918301918301610289565b509695505050505050565b600060208083850312156103a957600080fd5b82516001600160401b03808211156103c057600080fd5b90840190606082870312156103d457600080fd5b6103dc6100fc565b82516103e781610176565b815282840151828111156103fa57600080fd5b83016040818903121561040c57600080fd5b610414610124565b81518481111561042357600080fd5b82016060818b03121561043557600080fd5b61043d6100fc565b815161044881610176565b81528188015161045781610176565b8189015260408201518681111561046d57600080fd5b6104798c8285016101b2565b604083015250825250818601518481111561049357600080fd5b61049f8a828501610240565b87830152508086840152505060408301519350818411156104bf57600080fd5b6104cb878585016101b2565b60408201529695505050505050565b600081518084526104f281602086016020860161018e565b601f01601f19169290920160200192915050565b6000604082516040855260018060a01b03808251166040870152602080830151606083821660608a015260408501519450606060808a015261054b60a08a01866104da565b888401518a82038b86015280518083529196508401925083860190600581901b870185016000805b838110156105fd57898303601f19018552865180518a168452888101518985018890528051888601819052908a0190849060808701905b808310156105ca5783518252928c019260019290920191908c01906105aa565b508e84015193508681038f8801526105e281856104da565b96505050505087870196508785019450600181019050610573565b50909c9b505050505050505050505050565b6001600160a01b0383811682526040602080840182905284519092169083015282015160608083015260009061064860a0840182610506565b90506040840151603f1984830301608085015261066582826104da565b9695505050505050565b6020815260006106826020830184610506565b9392505050565b60006020828403121561069b57600080fd5b815161068281610176565b60805160a0516133956106f46000396000818160af01528181610600015281816106420152818161069b015261082201526000818161013b0152818161026301526102b401526133956000f3fe60806040526004361061005a5760003560e01c80634ed39461116100435780634ed39461146100f6578063691f9ed71461010957806393be095e146101295761005a565b806301ffc9a7146100685780630f8cc55c1461009d575b34801561006657600080fd5b005b34801561007457600080fd5b5061008861008336600461212d565b61016b565b60405190151581526020015b60405180910390f35b3480156100a957600080fd5b506100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610094565b61006661010436600461219b565b610250565b34801561011557600080fd5b50610066610124366004612220565b6105e4565b34801561013557600080fd5b5061015d7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610094565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f9ed70000000000000000000000000000000000000000000000000000000014806101fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4ed3946100000000000000000000000000000000000000000000000000000000145b8061024a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610258610852565b61026181612561565b7f0000000000000000000000000000000000000000000000000000000000000000158015906102d657508060405160200161029c91906126af565b604051602081830303815290604052805190602001207f000000000000000000000000000000000000000000000000000000000000000014155b1561030d576040517f8812562900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031a606084018461279c565b9050600003610355576040517f9c95219f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610364606085018561279c565b6000818110610375576103756127e6565b90506020028101906103879190612815565b6103919080612853565b61039f906040810190612887565b6103ac606087018761279c565b60008181106103bd576103bd6127e6565b90506020028101906103cf9190612815565b602001358181106103e2576103e26127e6565b6103f892602060409092020190810191506128d1565b90506000610409606086018661279c565b600081811061041a5761041a6127e6565b905060200281019061042c9190612815565b6104369080612853565b610444906060810190612887565b610451606088018861279c565b6000818110610462576104626127e6565b90506020028101906104749190612815565b60400135818110610487576104876127e6565b61049d92602060409092020190810191506128d1565b90506104c173ffffffffffffffffffffffffffffffffffffffff83168760006108ca565b61050273ffffffffffffffffffffffffffffffffffffffff8316877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ca565b6000808773ffffffffffffffffffffffffffffffffffffffff1663d0f7a862886040518263ffffffff1660e01b815260040161053e9190612b7a565b60408051808303816000875af115801561055c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105809190612dde565b90925090506105a773ffffffffffffffffffffffffffffffffffffffff85168960006108ca565b6105d06105b387612561565b856105bf600188610aac565b866105cb600189610aac565b610b37565b50505050506105df6001600055565b505050565b61062673ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000060006108ca565b61068773ffffffffffffffffffffffffffffffffffffffff87167f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ca565b600061069582840184612e02565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632646478b8961074e898c73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107499190612e37565b610e5b565b8a61079e8a8d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610725573d6000803e3d6000fd5b30886040518763ffffffff1660e01b81526004016107c196959493929190612e5a565b6020604051808303816000875af11580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190612eb3565b905061084873ffffffffffffffffffffffffffffffffffffffff89167f000000000000000000000000000000000000000000000000000000000000000060006108ca565b5050505050505050565b6002600054036108c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600055565b80158061096a57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109689190612eb3565b155b6109f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016108ba565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105df9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610e98565b6000806000610abb8585610fa7565b90925090506001826003811115610ad457610ad4612ecc565b14158015610af457506000826003811115610af157610af1612ecc565b14155b15610b2f5783826040517fee07877f0000000000000000000000000000000000000000000000000000000081526004016108ba929190612efb565b949350505050565b604080516001808252818301909252600091816020015b6060815260200190600190039081610b4e575050604080516003808252608082019092529192506000919060208201606080368337019050506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b9190612eb3565b90508015610c4457610c4473ffffffffffffffffffffffffffffffffffffffff88163383611082565b600080610c5183896110d8565b915091508184600081518110610c6957610c696127e6565b602090810291909101015250506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000915073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d089190612eb3565b90508015610d3157610d3173ffffffffffffffffffffffffffffffffffffffff86163383611082565b600080610d3e83876110d8565b915091508184600181518110610d5657610d566127e6565b602090810291909101015250479150610d719050338261111c565b610d9b817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee611276565b82600281518110610dae57610dae6127e6565b602002602001018181525050508082600081518110610dcf57610dcf6127e6565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160a08101825260009181018281526060808301939093526080820183905281526020810191909152815260200190600190039081610df15790505090508781600081518110610e4657610e466127e6565b602002602001018190525061084883826112d2565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316601b0b60e084901d610e8f8282866114ea565b95945050505050565b6000610efa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115489092919063ffffffff16565b9050805160001480610f1b575080806020019051810190610f1b9190612f5c565b6105df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108ba565b600080600080610fb78686611557565b90925090506000826003811115610fd057610fd0612ecc565b03611075576040805180820182526001815260ff838116602080840191825273ffffffffffffffffffffffffffffffffffffffff8a166000908152908b9052939093209151825493517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff161761010093909116929092029190911790555b90925090505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105df9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610a48565b60008060008060006110ea87876116c6565b9250925092506000806110fd8585611724565b915091508183801561110c5750815b9650965050505050509250929050565b80471015611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108ba565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146111e0576040519150601f19603f3d011682016040523d82523d6000602084013e6111e5565b606091505b50509050806105df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108ba565b60008060006112858585611724565b91509150806112ca576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016108ba565b509392505050565b3360008181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b86518110156108485786818151811061133a5761133a6127e6565b6020026020010151935060008460000151604001515111156114e25760008085600001516000015173ffffffffffffffffffffffffffffffffffffffff1663d04dfe236040518060e0016040528089600001516020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018960000151604001518152602001600081526020016113d58e8b602001516117f8565b8152602001888152602001878152506040518263ffffffff1660e01b81526004016114009190612fd8565b600060405180830381865afa15801561141d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261144591908101906130e1565b80519193509150156114df578551602001516040517f04b19db400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906304b19db4906114ac908b90859060040161319d565b600060405180830381600087803b1580156114c657600080fd5b505af11580156114da573d6000803e3d6000fd5b505050505b50505b60010161131f565b60008060006114fa868686611b0b565b915091508061153f576040517f05e4767800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526044016108ba565b50949350505050565b6060610b2f8484600085611c63565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020848152604080832081518083018352905460ff80821615158352610100909104168184015281518083018352600481527f313ce5670000000000000000000000000000000000000000000000000000000093810193909352905192938493919284928392916115e3916131b6565b600060405180830381855afa9150503d806000811461161e576040519150601f19603f3d011682016040523d82523d6000602084013e611623565b606091505b509150915081158061163757508051602014155b1561164d5750506020015160039250905061107b565b6000818060200190518101906116639190612eb3565b905060ff811115611680575050506020015160039250905061107b565b835181906116985760009650945061107b9350505050565b846020015160ff168160ff16146116b05760026116b3565b60015b856020015196509650505050505061107b565b6000808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86111561171357600a860460018201600a88066000149350935093505061171d565b8593509150600190505b9250925092565b6000601b83900b831480611782577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e100000000000000000084051561176757620186a0840593506005830192505b8384601b0b1461178257600a84059350826001019250611767565b828360030b146117c8576040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101859052602481018490526044016108ba565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931660e09290921b91909117929050565b60606000825167ffffffffffffffff811115611816576118166122ca565b60405190808252806020026020018201604052801561183f578160200160208202803683370190505b509050600080845111611853576000611859565b83516001015b855160010101905060008167ffffffffffffffff81111561187c5761187c6122ca565b6040519080825280602002602001820160405280156118af57816020015b606081526020019060019003908161189a5790505b50905060006118d4604080516002815233602082015230818301526060810190915290565b8282815181106118e6576118e66127e6565b602002602001018190525060005b8751811015611944578180600101925050878181518110611917576119176127e6565b6020026020010151838381518110611931576119316127e6565b60209081029190910101526001016118f4565b50855115611b0157808060010191505083828281518110611967576119676127e6565b602002602001018190525060005b8651811015611aff57611a26878281518110611993576119936127e6565b602002602001015160000151611a036119d08a85815181106119b7576119b76127e6565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b898481518110611a1557611a156127e6565b602002602001015160400151611d7c565b611a5f576040517f52bf9848000000000000000000000000000000000000000000000000000000008152600481018290526024016108ba565b868181518110611a7157611a716127e6565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1660001b858281518110611aa857611aa86127e6565b6020026020010181815250508180600101925050868181518110611ace57611ace6127e6565b602002602001015160200151838381518110611aec57611aec6127e6565b6020908102919091010152600101611975565b505b5095945050505050565b6000806000851215611b53576040517f4a7d166b00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016108ba565b84600003611b675750600090506001611c5b565b8460ff8416850185811215611bb2576040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101889052602481018790526044016108ba565b6000806000831215611c20577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb3831215611bf6576000809550955050505050611c5b565b82600003600a0a9150818481611c0e57611c0e6131c8565b0495505084029091149150611c5b9050565b6000831315611c5057611c3483600a613346565b9150611c408285613352565b955060019450611c5b9350505050565b509193506001925050505b935093915050565b606082471015611cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108ba565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611d1e91906131b6565b60006040518083038185875af1925050503d8060008114611d5b576040519150601f19603f3d011682016040523d82523d6000602084013e611d60565b606091505b5091509150611d7187838387611df7565b979650505050505050565b6000806000611d8b8585611e97565b90925090506000816004811115611da457611da4612ecc565b148015611ddc57508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ded5750611ded868686611ed9565b9695505050505050565b60608315611e8d578251600003611e865773ffffffffffffffffffffffffffffffffffffffff85163b611e86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108ba565b5081610b2f565b610b2f8383612018565b6000808251604103611ecd5760208301516040840151606085015160001a611ec18782858561205c565b9450945050505061107b565b5060009050600261107b565b60008060008573ffffffffffffffffffffffffffffffffffffffff16631626ba7e60e01b8686604051602401611f10929190613369565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611f7b91906131b6565b600060405180830381855afa9150503d8060008114611fb6576040519150601f19603f3d011682016040523d82523d6000602084013e611fbb565b606091505b5091509150818015611fcf57506020815110155b8015611ded575080517f1626ba7e000000000000000000000000000000000000000000000000000000009061200d9083016020908101908401612eb3565b149695505050505050565b8151156120285781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ba9190613382565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120935750600090506003612124565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156120e7573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff811661211d57600060019250925050612124565b9150600090505b94509492505050565b60006020828403121561213f57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461216f57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461219857600080fd5b50565b6000806000606084860312156121b057600080fd5b83356121bb81612176565b9250602084013567ffffffffffffffff808211156121d857600080fd5b9085019060a082880312156121ec57600080fd5b9092506040850135908082111561220257600080fd5b5084016040818703121561221557600080fd5b809150509250925092565b60008060008060008060a0878903121561223957600080fd5b863561224481612176565b9550602087013561225481612176565b94506040870135935060608701359250608087013567ffffffffffffffff8082111561227f57600080fd5b818901915089601f83011261229357600080fd5b8135818111156122a257600080fd5b8a60208285010111156122b457600080fd5b6020830194508093505050509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561231c5761231c6122ca565b60405290565b6040805190810167ffffffffffffffff8111828210171561231c5761231c6122ca565b604051601f8201601f1916810167ffffffffffffffff8111828210171561236e5761236e6122ca565b604052919050565b600082601f83011261238757600080fd5b813567ffffffffffffffff8111156123a1576123a16122ca565b6123b46020601f19601f84011601612345565b8181528460208386010111156123c957600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff821115612400576124006122ca565b5060051b60200190565b600082601f83011261241b57600080fd5b8135602061243061242b836123e6565b612345565b82815260059290921b8401810191818101908684111561244f57600080fd5b8286015b8481101561255657803567ffffffffffffffff8082111561247357600080fd5b908801906060828b03601f1901121561248c5760008081fd5b6124946122f9565b868301356124a181612176565b8152604083810135838111156124b75760008081fd5b8401603f81018d136124c95760008081fd5b888101356124d961242b826123e6565b81815260059190911b82018301908a8101908f8311156124f95760008081fd5b928401925b828410156125175783358252928b0192908b01906124fe565b858c01525050506060840135838111156125315760008081fd5b61253f8d8a83880101612376565b918301919091525085525050918301918301612453565b509695505050505050565b60006040823603121561257357600080fd5b61257b612322565b823567ffffffffffffffff8082111561259357600080fd5b8185019150606082360312156125a857600080fd5b6125b06122f9565b82356125bb81612176565b815260208301356125cb81612176565b60208201526040830135828111156125e257600080fd5b6125ee36828601612376565b6040830152508352602085013591508082111561260a57600080fd5b506126173682860161240a565b60208301525092915050565b60005b8381101561263e578181015183820152602001612626565b50506000910152565b6000815180845261265f816020860160208601612623565b601f01601f19169290920160200192915050565b60008151808452602080850194506020840160005b838110156126a457815187529582019590820190600101612688565b509495945050505050565b60006020808352606084516040808487015273ffffffffffffffffffffffffffffffffffffffff808351166060880152808584015116608088015260408301519250606060a088015261270560c0880184612647565b925084880151601f19808986030160408a01528482518087528887019150888160051b880101898501945060005b8281101561278b578489830301845285518781511683528b8101518b8d85015261275f8c850182612673565b918a0151848303858c01529190506127778183612647565b978d0197958d019593505050600101612733565b509c9b505050505050505050505050565b6000808335601e198436030181126127b357600080fd5b83018035915067ffffffffffffffff8211156127ce57600080fd5b6020019150600581901b360382131561107b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261284957600080fd5b9190910192915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261284957600080fd5b6000808335601e1984360301811261289e57600080fd5b83018035915067ffffffffffffffff8211156128b957600080fd5b6020019150600681901b360382131561107b57600080fd5b6000602082840312156128e357600080fd5b813561216f81612176565b6000808335601e1984360301811261290557600080fd5b830160208101925035905067ffffffffffffffff81111561292557600080fd5b8060051b360382131561107b57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261296b57600080fd5b90910192915050565b6000808335601e1984360301811261298b57600080fd5b830160208101925035905067ffffffffffffffff8111156129ab57600080fd5b80360382131561107b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6000808335601e198436030181126129fc57600080fd5b830160208101925035905067ffffffffffffffff811115612a1c57600080fd5b8060061b360382131561107b57600080fd5b8183526000602080850194508260005b858110156126a4578135612a5181612176565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101612a3e565b818352602080840193600091600585811b830182018585805b89811015612b6b57601f19878503018b52612ab7838a612937565b60608135612ac481612176565b73ffffffffffffffffffffffffffffffffffffffff168652612ae8828901836128ee565b828a8901528083890152608092507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115612b22578586fd5b881b808289850137870190506040612b3c84820185612974565b94508389840301828a0152612b5484840186836129ba565b9f8b019f9850505094880194505050600101612a9c565b50919998505050505050505050565b6000602080835260c083018435828501526040828601358186015260608187013581870152612bab818801886128ee565b60a060808901528481865260e08901905060e08260051b8a010195508260005b83811015612db1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208b890301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81863603018112612c2c57600080fd5b85018035368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61018112612c6157600080fd5b60808a5281018035612c7281612176565b73ffffffffffffffffffffffffffffffffffffffff80821660808d0152612c9b8d840184612937565b915060a0808d01528135612cae81612176565b81166101208d0152818d0135612cc381612176565b166101408c0152612cd6818b0182612974565b9150896101608d0152612cee6101808d0183836129ba565b915050612cfd8a8301836129e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80808e85030160c08f0152612d33848385612a2e565b9350612d418c8601866129e5565b93509150808e85030160e08f015250612d5b838383612a2e565b9250505060808201356101008c01528b8301358c8c0152898301358a8c0152612d86898401846128ee565b935091508a8103898c0152612d9c818484612a83565b9a505050928901925090880190600101612bcb565b50505050505050612dc56080860186612974565b9250601f198583030160a0860152611ded8284836129ba565b60008060408385031215612df157600080fd5b505080516020909101519092909150565b600060208284031215612e1457600080fd5b813567ffffffffffffffff811115612e2b57600080fd5b610b2f84828501612376565b600060208284031215612e4957600080fd5b815160ff8116811461216f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152808716604084015285606084015280851660808401525060c060a0830152612ea760c0830184612647565b98975050505050505050565b600060208284031215612ec557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff831681526040810160048310612f4f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260208301529392505050565b600060208284031215612f6e57600080fd5b8151801515811461216f57600080fd5b60008282518085526020808601955060208260051b8401016020860160005b84811015612fcb57601f19868403018952612fb9838351612673565b98840198925090830190600101612f9d565b5090979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201526000604083015160e0606084015261301f610100840182612647565b9050606084015160808401526080840151601f19808584030160a08601526130478383612f7e565b925060a08601519150808584030160c08601526130648383612673565b925060c08601519150808584030160e086015250610e8f8282612673565b600082601f83011261309357600080fd5b815160206130a361242b836123e6565b8083825260208201915060208460051b8701019350868411156130c557600080fd5b602086015b8481101561255657805183529183019183016130ca565b600080604083850312156130f457600080fd5b825167ffffffffffffffff8082111561310c57600080fd5b818501915085601f83011261312057600080fd5b8151602061313061242b836123e6565b82815260059290921b8401810191818101908984111561314f57600080fd5b948201945b8386101561316d57855182529482019490820190613154565b9188015191965090935050508082111561318657600080fd5b5061319385828601613082565b9150509250929050565b828152604060208201526000610b2f6040830184612673565b60008251612849818460208701612623565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561327f57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613265576132656131f7565b8085161561327257918102915b93841c939080029061322b565b509250929050565b6000826132965750600161024a565b816132a35750600061024a565b81600181146132b957600281146132c3576132df565b600191505061024a565b60ff8411156132d4576132d46131f7565b50506001821b61024a565b5060208310610133831016604e8410600b8410161715613302575081810a61024a565b61330c8383613226565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561333e5761333e6131f7565b029392505050565b600061216f8383613287565b808202811582820484141761024a5761024a6131f7565b828152604060208201526000610b2f6040830184612647565b60208152600061216f60208301846126475600000000000000000000000000000000000000000000000000000000000000200000000000000000000000002f209e5b67a33b8fe96e28f24628df6da301c8eb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000544ba588efd839d2692fc31ea991cd39993c135f