@reality.eth/contracts 4.0.0-rc.3 → 4.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f815260200162002f5d603f9139620000d3565b506200005d6040518060800160405280604f815260200162003039604f9139620000d3565b50620000826040518060800160405280605a815260200162002fdf605a9139620000d3565b50620000a76040518060800160405280605c815260200162002f01605c9139620000d3565b50620000cc60405180608001604052806043815260200162002f9c60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612cec80620002155f395ff3fe608060405260043610610207575f3560e01c806377f325df11610113578063a462fb7b1161009d578063d44e293c1161006d578063d44e293c146107dd578063e12891d4146107fc578063ebbdd2b01461081b578063f6a94ecb1461083a578063fe92049d14610859575f80fd5b8063a462fb7b14610758578063acae8f4e14610777578063bc525652146107b2578063d09cc57e14610758575f80fd5b80638d552d46116100e35780638d552d461461057a578063924532fb146105a857806395addb90146105d95780639e63fa6a146106cd5780639f1025c61461071d575f80fd5b806377f325df146104eb5780637f8d429e146104fe57806382ffa9f71461052d57806383bf46091461055b575f80fd5b8063484c071411610194578063590158a711610164578063590158a71461040657806359245ff31461046f5780636fa427421461048257806370a08231146104ad578063762c38fd146104d8575f80fd5b8063484c0714146103635780634df6ca2a146103915780634e60f883146103b057806351577ea9146103db575f80fd5b80632518904c116101da5780632518904c146102a057806326d6c97b146102ef57806328828b1e1461031d5780633ccfd60b1461033c578063484b93c414610350575f80fd5b80631101a0fd1461020b578063111ec1381461022c57806312a203c31461023f5780632417395c14610271575b5f80fd5b348015610216575f80fd5b5061022a61022536600461256f565b610878565b005b61022a61023a36600461261e565b610b1a565b34801561024a575f80fd5b5061025e61025936600461266d565b610d59565b6040519081526020015b60405180910390f35b34801561027c575f80fd5b5061025e61028b3660046126b7565b5f908152600360208190526040909120015490565b3480156102ab575f80fd5b506102d76102ba3660046126b7565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610268565b3480156102fa575f80fd5b5061025e6103093660046126b7565b5f9081526003602052604090206006015490565b348015610328575f80fd5b5061022a6103373660046126ce565b610e77565b348015610347575f80fd5b5061022a61112b565b61025e61035e366004612825565b6111a2565b34801561036e575f80fd5b5061025e61037d3660046126b7565b5f9081526003602052604090206007015490565b34801561039c575f80fd5b5061022a6103ab3660046126b7565b61129e565b3480156103bb575f80fd5b5061025e6103ca3660046126b7565b60026020525f908152604090205481565b3480156103e6575f80fd5b5061025e6103f53660046126b7565b5f9081526003602052604090205490565b348015610411575f80fd5b5061044a6104203660046126b7565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610268565b61022a61047d3660046126b7565b6112eb565b34801561048d575f80fd5b5061025e61049c3660046128ab565b60056020525f908152604090205481565b3480156104b8575f80fd5b5061025e6104c73660046128ab565b60066020525f908152604090205481565b61025e6104e63660046128c4565b611486565b61022a6104f9366004612940565b611581565b348015610509575f80fd5b5061051d6105183660046126b7565b611798565b6040519015158152602001610268565b348015610538575f80fd5b5061025e6105473660046126b7565b5f9081526003602052604090206005015490565b348015610566575f80fd5b5061025e610575366004612969565b6117f3565b348015610585575f80fd5b5061025e6105943660046126b7565b5f9081526003602052604090206004015490565b3480156105b3575f80fd5b5061051d6105c23660046126b7565b5f9081526003602052604090206002015460ff1690565b3480156105e4575f80fd5b506106666105f33660046126b7565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610268565b3480156106d8575f80fd5b506107086106e73660046126b7565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610268565b348015610728575f80fd5b506107086107373660046126b7565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b348015610763575f80fd5b5061025e6107723660046126b7565b611888565b348015610782575f80fd5b506107086107913660046126b7565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b3480156107bd575f80fd5b5061025e6107cc3660046126b7565b60016020525f908152604090205481565b3480156107e8575f80fd5b5061022a6107f73660046129a3565b6118c6565b348015610807575f80fd5b5061051d61081636600461256f565b61193f565b348015610826575f80fd5b5061022a6108353660046126b7565b611adc565b348015610845575f80fd5b5061022a6108543660046129f7565b611bde565b348015610864575f80fd5b5061022a610873366004612a29565b611e05565b8461088281611798565b61089f57604051636030e5f560e11b815260040160405180910390fd5b84515f036108c0576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a7c57610973838c838151811061091857610918612a5b565b60200260200101518a848151811061093257610932612a5b565b60200260200101518c858151811061094c5761094c612a5b565b60200260200101518e868151811061096657610966612a5b565b6020026020010151611f26565b610990576040516303a479f160e11b815260040160405180910390fd5b61099a8585612a83565b93506109f68c8386898e86815181106109b5576109b5612a5b565b60200260200101518e87815181106109cf576109cf612a5b565b60200260200101518e88815181106109e9576109e9612a5b565b6020026020010151611f63565b8097508195505050888181518110610a1057610a10612a5b565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a4d57610a40602886612a9c565b610a4a9086612abb565b94505b8a8181518110610a5f57610a5f612a5b565b602002602001015192508080610a7490612ace565b9150506108f9565b8215610abe57610a8d8c878661202b565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610af9565b610ad28c87610acd8888612a83565b61202b565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610b5a5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b8c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610bc557504263ffffffff168163ffffffff1611155b15610be35760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610c1b57504263ffffffff168163ffffffff16115b15610c395760405163079994c560e31b815260040160405180910390fd5b8634805f03610c5b57604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610caa575f83815260036020526040902060070154821015610ca55760405163291784d560e01b815260040160405180910390fd5b610cd5565b610cb5816002612ae6565b821015610cd5576040516328eecafb60e21b815260040160405180910390fd5b89888015610d0e575f82815260036020526040902060060154811015610d0e5760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610d3557604051630ca6549f60e11b815260040160405180910390fd5b610d418c8c8b346120ab565b610d4b8c8c61217c565b505050505050505050505050565b5f85610d6481611798565b610d8157604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610dae57604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610dea5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610e2c57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610e5d57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b8751821015611119575f888381518110610e9657610e96612a5b565b602002602001015190505f888481518110610eb357610eb3612a5b565b602002602001015190505f8167ffffffffffffffff811115610ed757610ed761242a565b604051908082528060200260200182016040528015610f00578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610f1d57610f1d61242a565b604051908082528060200260200182016040528015610f46578160200160208202803683370190505b5090505f8367ffffffffffffffff811115610f6357610f6361242a565b604051908082528060200260200182016040528015610f8c578160200160208202803683370190505b5090505f8467ffffffffffffffff811115610fa957610fa961242a565b604051908082528060200260200182016040528015610fd2578160200160208202803683370190505b5090505f5b858110156110f2578c8881518110610ff157610ff1612a5b565b602002602001015185828151811061100b5761100b612a5b565b6020026020010181815250508b888151811061102957611029612a5b565b602002602001015184828151811061104357611043612a5b565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061107557611075612a5b565b602002602001015183828151811061108f5761108f612a5b565b6020026020010181815250508988815181106110ad576110ad612a5b565b60200260200101518282815181106110c7576110c7612a5b565b6020908102919091010152876110dc81612ace565b98505080806110ea90612ace565b915050610fd7565b6110ff8786868686610878565b50505050505050818061111190612ace565b925050610e7a565b61112161112b565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611169573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036111cf5760405163bbbf712b60e01b815260040160405180910390fd5b5f8885896040516020016111e593929190612b1f565b6040516020818303038152906040528051906020012090505f8188888630338a60405160200161121b9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161127a9796959493929190612bdb565b60405180910390a461129181838a8a8a89346121e2565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff16900361132b5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561135d576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061139657504263ffffffff168163ffffffff1611155b156113b45760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906113ec57504263ffffffff168163ffffffff16115b1561140a5760405163079994c560e31b815260040160405180910390fd5b5f8481526003602081905260409091200154611427903490612a83565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161147891349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036114b35760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016114c993929190612b1f565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016114ff9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c4260405161155e9796959493929190612bdb565b60405180910390a461157581838989895f346121e2565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036115c15760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156115f3576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061162c57504263ffffffff168163ffffffff1611155b1561164a5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061168257504263ffffffff168163ffffffff16115b156116a05760405163079994c560e31b815260040160405180910390fd5b8534805f036116c257604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611711575f8381526003602052604090206007015482101561170c5760405163291784d560e01b815260040160405180910390fd5b61173c565b61171c816002612ae6565b82101561173c576040516328eecafb60e21b815260040160405180910390fd5b88878015611775575f828152600360205260409020600601548110156117755760405163f6631e6760e01b815260040160405180910390fd5b6117818b8b33346120ab565b61178b8b8b61217c565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156117d457505f8163ffffffff16115b80156117ec57504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161181591859101612c2a565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49061186b908790612c45565b60405180910390a361187e816001612a83565b5f5590505b919050565b5f8161189381611798565b6118b057604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f86815260036020526040902060058101546006909101546118ed91908590859085611f26565b61190a576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146119275784611929565b815b9050611936878783611e05565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff16820361197e5760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119b757504263ffffffff168163ffffffff1611155b156119d55760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a0d57504263ffffffff168163ffffffff16115b15611a2b5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611a4f575080885114155b80611a5b575080875114155b15611a6a575f95505050611ad0565b5f5b81811015611ac857611a8a838c838151811061091857610918612a5b565b611a99575f9650505050611ad0565b8a8181518110611aab57611aab612a5b565b602002602001015192508080611ac090612ace565b915050611a6c565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611b1757604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611b4a5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611b7e90600160c01b900463ffffffff1642612c57565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611c1957604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611c595760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611c8b576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611cc457504263ffffffff168163ffffffff1611155b15611ce25760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611d1a57504263ffffffff168163ffffffff16115b15611d385760405163079994c560e31b815260040160405180910390fd5b86858015611d71575f82815260036020526040902060060154811015611d715760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611dac576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611e4057604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611e735760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611e9a576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611eed908690869086906120ab565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001611f40959493929190612c7b565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361201c576001600160a01b038616611fd9578495505f60035f8b81526020019081526020015f2060030154118015611f9e575060015b15611fd457611fc2898760035f8d81526020019081526020015f206003015461202b565b5f898152600360208190526040822001555b61201c565b856001600160a01b0316856001600160a01b03161461201c575f848810156120015787612003565b845b90506120148a88610acd848c612abb565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526006602052604090205461204e908290612a83565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a69061209e9085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516120d392879186918891879101612c7b565b6040516020818303038152906040528051906020012090505f821115612107575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546121ab90600160c01b900463ffffffff1642612c57565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612223576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036122495760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061227357604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906122955750336001600160a01b03881614155b1561231d576001600160a01b0387165f90815260056020526040902054808210156122d35760405163d72564c760e01b815260040160405180910390fd5b6122dd8183612abb565b6001600160a01b0389165f90815260066020526040902054909250612303908290612a83565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156123c9575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561241f575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906124169087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124675761246761242a565b604052919050565b5f67ffffffffffffffff8211156124885761248861242a565b5060051b60200190565b5f82601f8301126124a1575f80fd5b813560206124b66124b18361246f565b61243e565b82815260059290921b840181019181810190868411156124d4575f80fd5b8286015b848110156124ef57803583529183019183016124d8565b509695505050505050565b80356001600160a01b0381168114611883575f80fd5b5f82601f83011261251f575f80fd5b8135602061252f6124b18361246f565b82815260059290921b8401810191818101908684111561254d575f80fd5b8286015b848110156124ef57612562816124fa565b8352918301918301612551565b5f805f805f60a08688031215612583575f80fd5b85359450602086013567ffffffffffffffff808211156125a1575f80fd5b6125ad89838a01612492565b955060408801359150808211156125c2575f80fd5b6125ce89838a01612510565b945060608801359150808211156125e3575f80fd5b6125ef89838a01612492565b93506080880135915080821115612604575f80fd5b5061261188828901612492565b9150509295509295909350565b5f805f8060808587031215612631575f80fd5b84359350602085013592506040850135915061264f606086016124fa565b905092959194509250565b803563ffffffff81168114611883575f80fd5b5f805f805f60a08688031215612681575f80fd5b8535945060208601359350612698604087016124fa565b92506126a66060870161265a565b949793965091946080013592915050565b5f602082840312156126c7575f80fd5b5035919050565b5f805f805f8060c087890312156126e3575f80fd5b863567ffffffffffffffff808211156126fa575f80fd5b6127068a838b01612492565b9750602089013591508082111561271b575f80fd5b6127278a838b01612492565b9650604089013591508082111561273c575f80fd5b6127488a838b01612492565b9550606089013591508082111561275d575f80fd5b6127698a838b01612510565b9450608089013591508082111561277e575f80fd5b61278a8a838b01612492565b935060a089013591508082111561279f575f80fd5b506127ac89828a01612492565b9150509295509295509295565b5f82601f8301126127c8575f80fd5b813567ffffffffffffffff8111156127e2576127e261242a565b6127f5601f8201601f191660200161243e565b818152846020838601011115612809575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f60e0888a03121561283b575f80fd5b87359650602088013567ffffffffffffffff811115612858575f80fd5b6128648a828b016127b9565b965050612873604089016124fa565b94506128816060890161265a565b935061288f6080890161265a565b925060a0880135915060c0880135905092959891949750929550565b5f602082840312156128bb575f80fd5b6117ec826124fa565b5f805f805f8060c087890312156128d9575f80fd5b86359550602087013567ffffffffffffffff8111156128f6575f80fd5b61290289828a016127b9565b955050612911604088016124fa565b935061291f6060880161265a565b925061292d6080880161265a565b915060a087013590509295509295509295565b5f805f60608486031215612952575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612979575f80fd5b813567ffffffffffffffff81111561298f575f80fd5b61299b848285016127b9565b949350505050565b5f805f805f8060c087890312156129b8575f80fd5b86359550602087013594506129cf604088016124fa565b935060608701359250608087013591506129eb60a088016124fa565b90509295509295509295565b5f805f60608486031215612a09575f80fd5b83359250612a19602085016124fa565b9150604084013590509250925092565b5f805f60608486031215612a3b575f80fd5b8335925060208401359150612a52604085016124fa565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612a9657612a96612a6f565b92915050565b5f82612ab657634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612a9657612a96612a6f565b5f60018201612adf57612adf612a6f565b5060010190565b8082028115828204841417612a9657612a96612a6f565b5f5b83811015612b17578181015183820152602001612aff565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612b48816024850160208701612afd565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612bc7816020860160208601612afd565b601f01601f19169290920160200192915050565b87815260e060208201525f612bf360e0830189612bb0565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612c3b818460208701612afd565b9190910192915050565b602081525f6117ec6020830184612bb0565b63ffffffff818116838216019080821115612c7457612c74612a6f565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220519583ffc597cc04cc6fe21a998e30510a6cc9987539b8d588badccb397ce17964736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b506200001e62000024565b62000213565b620000486040518060600160405280603f815260200162002f69603f9139620000df565b506200006d6040518060800160405280604f815260200162003045604f9139620000df565b50620000926040518060800160405280605a815260200162002feb605a9139620000df565b50620000b76040518060800160405280605c815260200162002f0d605c9139620000df565b50620000dc60405180608001604052806043815260200162002fa860439139620000df565b50565b5f80548082526001602090815260408084204390555162000103918591016200019c565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200015b908790620001b9565b60405180910390a362000170816001620001ed565b5f5592915050565b5f5b83811015620001945781810151838201526020016200017a565b50505f910152565b5f8251620001af81846020870162000178565b9190910192915050565b602081525f8251806020840152620001d981604085016020870162000178565b601f01601f19169190910160400192915050565b808201808211156200020d57634e487b7160e01b5f52601160045260245ffd5b92915050565b612cec80620002215f395ff3fe608060405260043610610207575f3560e01c806377f325df11610113578063a462fb7b1161009d578063d44e293c1161006d578063d44e293c146107dd578063e12891d4146107fc578063ebbdd2b01461081b578063f6a94ecb1461083a578063fe92049d14610859575f80fd5b8063a462fb7b14610758578063acae8f4e14610777578063bc525652146107b2578063d09cc57e14610758575f80fd5b80638d552d46116100e35780638d552d461461057a578063924532fb146105a857806395addb90146105d95780639e63fa6a146106cd5780639f1025c61461071d575f80fd5b806377f325df146104eb5780637f8d429e146104fe57806382ffa9f71461052d57806383bf46091461055b575f80fd5b8063484c071411610194578063590158a711610164578063590158a71461040657806359245ff31461046f5780636fa427421461048257806370a08231146104ad578063762c38fd146104d8575f80fd5b8063484c0714146103635780634df6ca2a146103915780634e60f883146103b057806351577ea9146103db575f80fd5b80632518904c116101da5780632518904c146102a057806326d6c97b146102ef57806328828b1e1461031d5780633ccfd60b1461033c578063484b93c414610350575f80fd5b80631101a0fd1461020b578063111ec1381461022c57806312a203c31461023f5780632417395c14610271575b5f80fd5b348015610216575f80fd5b5061022a61022536600461256f565b610878565b005b61022a61023a36600461261e565b610b1a565b34801561024a575f80fd5b5061025e61025936600461266d565b610d59565b6040519081526020015b60405180910390f35b34801561027c575f80fd5b5061025e61028b3660046126b7565b5f908152600360208190526040909120015490565b3480156102ab575f80fd5b506102d76102ba3660046126b7565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610268565b3480156102fa575f80fd5b5061025e6103093660046126b7565b5f9081526003602052604090206006015490565b348015610328575f80fd5b5061022a6103373660046126ce565b610e77565b348015610347575f80fd5b5061022a61112b565b61025e61035e366004612825565b6111a2565b34801561036e575f80fd5b5061025e61037d3660046126b7565b5f9081526003602052604090206007015490565b34801561039c575f80fd5b5061022a6103ab3660046126b7565b61129e565b3480156103bb575f80fd5b5061025e6103ca3660046126b7565b60026020525f908152604090205481565b3480156103e6575f80fd5b5061025e6103f53660046126b7565b5f9081526003602052604090205490565b348015610411575f80fd5b5061044a6104203660046126b7565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610268565b61022a61047d3660046126b7565b6112eb565b34801561048d575f80fd5b5061025e61049c3660046128ab565b60056020525f908152604090205481565b3480156104b8575f80fd5b5061025e6104c73660046128ab565b60066020525f908152604090205481565b61025e6104e63660046128c4565b611486565b61022a6104f9366004612940565b611581565b348015610509575f80fd5b5061051d6105183660046126b7565b611798565b6040519015158152602001610268565b348015610538575f80fd5b5061025e6105473660046126b7565b5f9081526003602052604090206005015490565b348015610566575f80fd5b5061025e610575366004612969565b6117f3565b348015610585575f80fd5b5061025e6105943660046126b7565b5f9081526003602052604090206004015490565b3480156105b3575f80fd5b5061051d6105c23660046126b7565b5f9081526003602052604090206002015460ff1690565b3480156105e4575f80fd5b506106666105f33660046126b7565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610268565b3480156106d8575f80fd5b506107086106e73660046126b7565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610268565b348015610728575f80fd5b506107086107373660046126b7565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b348015610763575f80fd5b5061025e6107723660046126b7565b611888565b348015610782575f80fd5b506107086107913660046126b7565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b3480156107bd575f80fd5b5061025e6107cc3660046126b7565b60016020525f908152604090205481565b3480156107e8575f80fd5b5061022a6107f73660046129a3565b6118c6565b348015610807575f80fd5b5061051d61081636600461256f565b61193f565b348015610826575f80fd5b5061022a6108353660046126b7565b611adc565b348015610845575f80fd5b5061022a6108543660046129f7565b611bde565b348015610864575f80fd5b5061022a610873366004612a29565b611e05565b8461088281611798565b61089f57604051636030e5f560e11b815260040160405180910390fd5b84515f036108c0576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a7c57610973838c838151811061091857610918612a5b565b60200260200101518a848151811061093257610932612a5b565b60200260200101518c858151811061094c5761094c612a5b565b60200260200101518e868151811061096657610966612a5b565b6020026020010151611f26565b610990576040516303a479f160e11b815260040160405180910390fd5b61099a8585612a83565b93506109f68c8386898e86815181106109b5576109b5612a5b565b60200260200101518e87815181106109cf576109cf612a5b565b60200260200101518e88815181106109e9576109e9612a5b565b6020026020010151611f63565b8097508195505050888181518110610a1057610a10612a5b565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a4d57610a40602886612a9c565b610a4a9086612abb565b94505b8a8181518110610a5f57610a5f612a5b565b602002602001015192508080610a7490612ace565b9150506108f9565b8215610abe57610a8d8c878661202b565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610af9565b610ad28c87610acd8888612a83565b61202b565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610b5a5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b8c576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610bc557504263ffffffff168163ffffffff1611155b15610be35760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610c1b57504263ffffffff168163ffffffff16115b15610c395760405163079994c560e31b815260040160405180910390fd5b8634805f03610c5b57604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610caa575f83815260036020526040902060070154821015610ca55760405163291784d560e01b815260040160405180910390fd5b610cd5565b610cb5816002612ae6565b821015610cd5576040516328eecafb60e21b815260040160405180910390fd5b89888015610d0e575f82815260036020526040902060060154811015610d0e5760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610d3557604051630ca6549f60e11b815260040160405180910390fd5b610d418c8c8b346120ab565b610d4b8c8c61217c565b505050505050505050505050565b5f85610d6481611798565b610d8157604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610dae57604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610dea5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610e2c57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610e5d57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b8751821015611119575f888381518110610e9657610e96612a5b565b602002602001015190505f888481518110610eb357610eb3612a5b565b602002602001015190505f8167ffffffffffffffff811115610ed757610ed761242a565b604051908082528060200260200182016040528015610f00578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610f1d57610f1d61242a565b604051908082528060200260200182016040528015610f46578160200160208202803683370190505b5090505f8367ffffffffffffffff811115610f6357610f6361242a565b604051908082528060200260200182016040528015610f8c578160200160208202803683370190505b5090505f8467ffffffffffffffff811115610fa957610fa961242a565b604051908082528060200260200182016040528015610fd2578160200160208202803683370190505b5090505f5b858110156110f2578c8881518110610ff157610ff1612a5b565b602002602001015185828151811061100b5761100b612a5b565b6020026020010181815250508b888151811061102957611029612a5b565b602002602001015184828151811061104357611043612a5b565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061107557611075612a5b565b602002602001015183828151811061108f5761108f612a5b565b6020026020010181815250508988815181106110ad576110ad612a5b565b60200260200101518282815181106110c7576110c7612a5b565b6020908102919091010152876110dc81612ace565b98505080806110ea90612ace565b915050610fd7565b6110ff8786868686610878565b50505050505050818061111190612ace565b925050610e7a565b61112161112b565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611169573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036111cf5760405163bbbf712b60e01b815260040160405180910390fd5b5f8885896040516020016111e593929190612b1f565b6040516020818303038152906040528051906020012090505f8188888630338a60405160200161121b9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161127a9796959493929190612bdb565b60405180910390a461129181838a8a8a89346121e2565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff16900361132b5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561135d576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061139657504263ffffffff168163ffffffff1611155b156113b45760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906113ec57504263ffffffff168163ffffffff16115b1561140a5760405163079994c560e31b815260040160405180910390fd5b5f8481526003602081905260409091200154611427903490612a83565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161147891349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036114b35760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016114c993929190612b1f565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016114ff9796959493929190612b57565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c4260405161155e9796959493929190612bdb565b60405180910390a461157581838989895f346121e2565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036115c15760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156115f3576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061162c57504263ffffffff168163ffffffff1611155b1561164a5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061168257504263ffffffff168163ffffffff16115b156116a05760405163079994c560e31b815260040160405180910390fd5b8534805f036116c257604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611711575f8381526003602052604090206007015482101561170c5760405163291784d560e01b815260040160405180910390fd5b61173c565b61171c816002612ae6565b82101561173c576040516328eecafb60e21b815260040160405180910390fd5b88878015611775575f828152600360205260409020600601548110156117755760405163f6631e6760e01b815260040160405180910390fd5b6117818b8b33346120ab565b61178b8b8b61217c565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156117d457505f8163ffffffff16115b80156117ec57504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161181591859101612c2a565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49061186b908790612c45565b60405180910390a361187e816001612a83565b5f5590505b919050565b5f8161189381611798565b6118b057604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f86815260036020526040902060058101546006909101546118ed91908590859085611f26565b61190a576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146119275784611929565b815b9050611936878783611e05565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff16820361197e5760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119b757504263ffffffff168163ffffffff1611155b156119d55760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a0d57504263ffffffff168163ffffffff16115b15611a2b5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611a4f575080885114155b80611a5b575080875114155b15611a6a575f95505050611ad0565b5f5b81811015611ac857611a8a838c838151811061091857610918612a5b565b611a99575f9650505050611ad0565b8a8181518110611aab57611aab612a5b565b602002602001015192508080611ac090612ace565b915050611a6c565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611b1757604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611b4a5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611b7e90600160c01b900463ffffffff1642612c57565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611c1957604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611c595760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611c8b576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611cc457504263ffffffff168163ffffffff1611155b15611ce25760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611d1a57504263ffffffff168163ffffffff16115b15611d385760405163079994c560e31b815260040160405180910390fd5b86858015611d71575f82815260036020526040902060060154811015611d715760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611dac576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611e4057604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611e735760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611e9a576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611eed908690869086906120ab565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001611f40959493929190612c7b565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361201c576001600160a01b038616611fd9578495505f60035f8b81526020019081526020015f2060030154118015611f9e575060015b15611fd457611fc2898760035f8d81526020019081526020015f206003015461202b565b5f898152600360208190526040822001555b61201c565b856001600160a01b0316856001600160a01b03161461201c575f848810156120015787612003565b845b90506120148a88610acd848c612abb565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f9081526006602052604090205461204e908290612a83565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a69061209e9085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516120d392879186918891879101612c7b565b6040516020818303038152906040528051906020012090505f821115612107575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546121ab90600160c01b900463ffffffff1642612c57565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612223576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036122495760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061227357604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906122955750336001600160a01b03881614155b1561231d576001600160a01b0387165f90815260056020526040902054808210156122d35760405163d72564c760e01b815260040160405180910390fd5b6122dd8183612abb565b6001600160a01b0389165f90815260066020526040902054909250612303908290612a83565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156123c9575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561241f575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906124169087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124675761246761242a565b604052919050565b5f67ffffffffffffffff8211156124885761248861242a565b5060051b60200190565b5f82601f8301126124a1575f80fd5b813560206124b66124b18361246f565b61243e565b82815260059290921b840181019181810190868411156124d4575f80fd5b8286015b848110156124ef57803583529183019183016124d8565b509695505050505050565b80356001600160a01b0381168114611883575f80fd5b5f82601f83011261251f575f80fd5b8135602061252f6124b18361246f565b82815260059290921b8401810191818101908684111561254d575f80fd5b8286015b848110156124ef57612562816124fa565b8352918301918301612551565b5f805f805f60a08688031215612583575f80fd5b85359450602086013567ffffffffffffffff808211156125a1575f80fd5b6125ad89838a01612492565b955060408801359150808211156125c2575f80fd5b6125ce89838a01612510565b945060608801359150808211156125e3575f80fd5b6125ef89838a01612492565b93506080880135915080821115612604575f80fd5b5061261188828901612492565b9150509295509295909350565b5f805f8060808587031215612631575f80fd5b84359350602085013592506040850135915061264f606086016124fa565b905092959194509250565b803563ffffffff81168114611883575f80fd5b5f805f805f60a08688031215612681575f80fd5b8535945060208601359350612698604087016124fa565b92506126a66060870161265a565b949793965091946080013592915050565b5f602082840312156126c7575f80fd5b5035919050565b5f805f805f8060c087890312156126e3575f80fd5b863567ffffffffffffffff808211156126fa575f80fd5b6127068a838b01612492565b9750602089013591508082111561271b575f80fd5b6127278a838b01612492565b9650604089013591508082111561273c575f80fd5b6127488a838b01612492565b9550606089013591508082111561275d575f80fd5b6127698a838b01612510565b9450608089013591508082111561277e575f80fd5b61278a8a838b01612492565b935060a089013591508082111561279f575f80fd5b506127ac89828a01612492565b9150509295509295509295565b5f82601f8301126127c8575f80fd5b813567ffffffffffffffff8111156127e2576127e261242a565b6127f5601f8201601f191660200161243e565b818152846020838601011115612809575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f60e0888a03121561283b575f80fd5b87359650602088013567ffffffffffffffff811115612858575f80fd5b6128648a828b016127b9565b965050612873604089016124fa565b94506128816060890161265a565b935061288f6080890161265a565b925060a0880135915060c0880135905092959891949750929550565b5f602082840312156128bb575f80fd5b6117ec826124fa565b5f805f805f8060c087890312156128d9575f80fd5b86359550602087013567ffffffffffffffff8111156128f6575f80fd5b61290289828a016127b9565b955050612911604088016124fa565b935061291f6060880161265a565b925061292d6080880161265a565b915060a087013590509295509295509295565b5f805f60608486031215612952575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612979575f80fd5b813567ffffffffffffffff81111561298f575f80fd5b61299b848285016127b9565b949350505050565b5f805f805f8060c087890312156129b8575f80fd5b86359550602087013594506129cf604088016124fa565b935060608701359250608087013591506129eb60a088016124fa565b90509295509295509295565b5f805f60608486031215612a09575f80fd5b83359250612a19602085016124fa565b9150604084013590509250925092565b5f805f60608486031215612a3b575f80fd5b8335925060208401359150612a52604085016124fa565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612a9657612a96612a6f565b92915050565b5f82612ab657634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612a9657612a96612a6f565b5f60018201612adf57612adf612a6f565b5060010190565b8082028115828204841417612a9657612a96612a6f565b5f5b83811015612b17578181015183820152602001612aff565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612b48816024850160208701612afd565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612bc7816020860160208601612afd565b601f01601f19169290920160200192915050565b87815260e060208201525f612bf360e0830189612bb0565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612c3b818460208701612afd565b9190910192915050565b602081525f6117ec6020830184612bb0565b63ffffffff818116838216019080821115612c7457612c74612a6f565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212209d020b2073ff94cf0ba8b5f54748763e5fc9375a492c38df013d5d4d7a0b22f164736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f81526020016200352b603f9139620000d3565b506200005d6040518060800160405280604f815260200162003607604f9139620000d3565b50620000826040518060800160405280605a8152602001620035ad605a9139620000d3565b50620000a76040518060800160405280605c8152602001620034cf605c9139620000d3565b50620000cc6040518060800160405280604381526020016200356a60439139620000d3565b506200023c565b6007545f90600160a01b900463ffffffff1615620001045760405163379dfc6360e01b815260040160405180910390fd5b5f805480825260016020908152604092839020439055915190916200012c91859101620001c5565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000184908790620001e2565b60405180910390a36200019981600162000216565b5f5592915050565b5f5b83811015620001bd578181015183820152602001620001a3565b50505f910152565b5f8251620001d8818460208701620001a1565b9190910192915050565b602081525f825180602084015262000202816040850160208701620001a1565b601f01601f19169190910160400192915050565b808201808211156200023657634e487b7160e01b5f52601160045260245ffd5b92915050565b613285806200024a5f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c806382ffa9f711610140578063bb88019b116100bf578063dbc7214411610084578063dbc7214414610744578063e12891d414610778578063ebbdd2b01461078b578063f6a94ecb1461079e578063fc0c546a146107b1578063fe92049d146107c4575f80fd5b8063bb88019b146106e8578063bc525652146106ff578063d09cc57e14610693578063d44e293c1461071e578063d4876b9f14610731575f80fd5b80639e63fa6a116101055780639e63fa6a146106205780639f1025c614610664578063a462fb7b14610693578063acae8f4e146106a6578063b8eaa980146106d5575f80fd5b806382ffa9f7146104bc57806383bf4609146104de5780638d552d46146104f1578063924532fb1461051357806395addb9014610538575f80fd5b8063484c0714116101cc578063590158a711610191578063590158a7146103eb5780636fa427421461044857806370a0823114610467578063762c38fd146104865780637f8d429e14610499575f80fd5b8063484c0714146103655780634df6ca2a146103875780634e60f8831461039a57806351577ea9146103b957806352debac3146103d8575f80fd5b80632518904c116102125780632518904c146102d257806326d6c97b1461031557806328828b1e146103375780632f998a6f1461034a5780633ccfd60b1461035d575f80fd5b80631101a0fd1461024e578063128b7a471461026357806312a203c314610276578063144fa6d71461029c5780632417395c146102af575b5f80fd5b61026161025c366004612a1a565b6107d7565b005b610261610271366004612ac8565b610aa7565b610289610284366004612afb565b610c7a565b6040519081526020015b60405180910390f35b6102616102aa366004612b47565b610d98565b6102896102bd366004612b62565b5f908152600360208190526040909120015490565b6102fd6102e0366004612b62565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610293565b610289610323366004612b62565b5f9081526003602052604090206006015490565b610261610345366004612b79565b610de4565b610261610358366004612c63565b6110c2565b610261611311565b610289610373366004612b62565b5f9081526003602052604090206007015490565b610261610395366004612b62565b611408565b6102896103a8366004612b62565b60026020525f908152604090205481565b6102896103c7366004612b62565b5f9081526003602052604090205490565b6102896103e6366004612cfd565b611483565b6104236103f9366004612b62565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610293565b610289610456366004612b47565b60056020525f908152604090205481565b610289610475366004612b47565b60066020525f908152604090205481565b610289610494366004612d8c565b61158a565b6104ac6104a7366004612b62565b611685565b6040519015158152602001610293565b6102896104ca366004612b62565b5f9081526003602052604090206005015490565b6102896104ec366004612e09565b6116eb565b6102896104ff366004612b62565b5f9081526003602052604090206004015490565b6104ac610521366004612b62565b5f9081526003602052604090206002015460ff1690565b6105b9610546366004612b62565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610293565b61064f61062e366004612b62565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610293565b61064f610672366004612b62565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102896106a1366004612b62565b6117b4565b61064f6106b4366004612b62565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102616106e3366004612e42565b6117f2565b60075461064f90600160a01b900463ffffffff1681565b61028961070d366004612b62565b60016020525f908152604090205481565b61026161072c366004612e76565b611a69565b61028961073f366004612ed0565b611ae2565b610261610752366004612f57565b6007805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6104ac610786366004612a1a565b611be8565b610261610799366004612b62565b611d85565b6102616107ac366004612f70565b611eb5565b6007546102fd906001600160a01b031681565b6102616107d2366004612fa5565b61210a565b846107e181611685565b6107fe57604051636030e5f560e11b815260040160405180910390fd5b600754600160a01b900463ffffffff161561082c5760405163379dfc6360e01b815260040160405180910390fd5b84515f0361084d576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a0957610900838c83815181106108a5576108a5612fdb565b60200260200101518a84815181106108bf576108bf612fdb565b60200260200101518c85815181106108d9576108d9612fdb565b60200260200101518e86815181106108f3576108f3612fdb565b6020026020010151612259565b61091d576040516303a479f160e11b815260040160405180910390fd5b6109278585613003565b93506109838c8386898e868151811061094257610942612fdb565b60200260200101518e878151811061095c5761095c612fdb565b60200260200101518e888151811061097657610976612fdb565b6020026020010151612296565b809750819550505088818151811061099d5761099d612fdb565b6020026020010151945060035f8d81526020019081526020015f206006015485146109da576109cd602886613016565b6109d79086613035565b94505b8a81815181106109ec576109ec612fdb565b602002602001015192508080610a0190613048565b915050610886565b8215610a4b57610a1a8c878661235e565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610a86565b610a5f8c87610a5a8888613003565b61235e565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610ae75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b19576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b5257504263ffffffff168163ffffffff1611155b15610b705760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610ba857504263ffffffff168163ffffffff16115b15610bc65760405163079994c560e31b815260040160405180910390fd5b600754600160a01b900463ffffffff1615610bf45760405163379dfc6360e01b815260040160405180910390fd5b610bfd846123de565b5f8581526003602081905260409091200154610c1a908590613003565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c6b91899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8581611685565b610ca257604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610ccf57604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d0b5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d4d57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d7e57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dc257604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600754600160a01b900463ffffffff1615610e125760405163379dfc6360e01b815260040160405180910390fd5b5f805b87518210156110b0575f888381518110610e3157610e31612fdb565b602002602001015190505f888481518110610e4e57610e4e612fdb565b602002602001015190505f816001600160401b03811115610e7157610e716128d4565b604051908082528060200260200182016040528015610e9a578160200160208202803683370190505b5090505f826001600160401b03811115610eb657610eb66128d4565b604051908082528060200260200182016040528015610edf578160200160208202803683370190505b5090505f836001600160401b03811115610efb57610efb6128d4565b604051908082528060200260200182016040528015610f24578160200160208202803683370190505b5090505f846001600160401b03811115610f4057610f406128d4565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b5090505f5b85811015611089578c8881518110610f8857610f88612fdb565b6020026020010151858281518110610fa257610fa2612fdb565b6020026020010181815250508b8881518110610fc057610fc0612fdb565b6020026020010151848281518110610fda57610fda612fdb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061100c5761100c612fdb565b602002602001015183828151811061102657611026612fdb565b60200260200101818152505089888151811061104457611044612fdb565b602002602001015182828151811061105e5761105e612fdb565b60209081029190910101528761107381613048565b985050808061108190613048565b915050610f6e565b61109687868686866107d7565b5050505050505081806110a890613048565b925050610e15565b6110b8611311565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036111025760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611134576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061116d57504263ffffffff168163ffffffff1611155b1561118b5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906111c357504263ffffffff168163ffffffff16115b156111e15760405163079994c560e31b815260040160405180910390fd5b8684805f0361120357604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611252575f8381526003602052604090206007015482101561124d5760405163291784d560e01b815260040160405180910390fd5b61127d565b61125d816002613060565b82101561127d576040516328eecafb60e21b815260040160405180910390fd5b898880156112b6575f828152600360205260409020600601548110156112b65760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156112e45760405163379dfc6360e01b815260040160405180910390fd5b6112ed896123de565b6112f98c8c338c6124d6565b6113038c8c61259d565b505050505050505050505050565b600754600160a01b900463ffffffff161561133f5760405163379dfc6360e01b815260040160405180910390fd5b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156113a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c89190613077565b6113d0575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b600754600160a01b900463ffffffff16156114365760405163379dfc6360e01b815260040160405180910390fd5b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61148d826123de565b5f8981526001602052604081205490036114ba5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a6040516020016114d0939291906130b8565b6040516020818303038152906040528051906020012090505f8189898730338b60405160200161150697969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516115659796959493929190613174565b60405180910390a461157c81838b8b8b8a8a612603565b9a9950505050505050505050565b5f8681526001602052604081205481036115b75760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016115cd939291906130b8565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161160397969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516116629796959493929190613174565b60405180910390a461167981838989895f80612603565b98975050505050505050565b6007545f90600160a01b900463ffffffff16158015906116d057506007545f83815260036020526040902060010154600160a01b90910463ffffffff908116600160e01b9092041610155b156116dc57505f919050565b6116e582612879565b92915050565b6007545f90600160a01b900463ffffffff161561171b5760405163379dfc6360e01b815260040160405180910390fd5b5f80548082526001602090815260409283902043905591519091611741918591016131c3565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906117979087906131de565b60405180910390a36117aa816001613003565b5f5590505b919050565b5f816117bf81611685565b6117dc57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036118325760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611864576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061189d57504263ffffffff168163ffffffff1611155b156118bb5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906118f357504263ffffffff168163ffffffff16115b156119115760405163079994c560e31b815260040160405180910390fd5b8784805f0361193357604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611982575f8381526003602052604090206007015482101561197d5760405163291784d560e01b815260040160405180910390fd5b6119ad565b61198d816002613060565b8210156119ad576040516328eecafb60e21b815260040160405180910390fd5b8a8980156119e6575f828152600360205260409020600601548110156119e65760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff1615611a145760405163379dfc6360e01b815260040160405180910390fd5b611a1d896123de565b6001600160a01b038a16611a4457604051630ca6549f60e11b815260040160405180910390fd5b611a508d8d8c8c6124d6565b611a5a8d8d61259d565b50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611a9091908590859085612259565b611aad576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611aca5784611acc565b815b9050611ad987878361210a565b50505050505050565b5f611aec826123de565b5f888152600160205260408120549003611b195760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611b2f939291906130b8565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611b6597969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611bc49796959493929190613174565b60405180910390a4611bdb81838a8a8a5f8a612603565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611c275760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611c6057504263ffffffff168163ffffffff1611155b15611c7e5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611cb657504263ffffffff168163ffffffff16115b15611cd45760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611cf8575080885114155b80611d04575080875114155b15611d13575f95505050611d79565b5f5b81811015611d7157611d33838c83815181106108a5576108a5612fdb565b611d42575f9650505050611d79565b8a8181518110611d5457611d54612fdb565b602002602001015192508080611d6990613048565b915050611d15565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611dc057604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611df35760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff1615611e215760405163379dfc6360e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611e5590600160c01b900463ffffffff16426131f0565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ef057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611f305760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611f62576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611f9b57504263ffffffff168163ffffffff1611155b15611fb95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ff157504263ffffffff168163ffffffff16115b1561200f5760405163079994c560e31b815260040160405180910390fd5b86858015612048575f828152600360205260409020600601548110156120485760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156120765760405163379dfc6360e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166120b1576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461214557604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166121785760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156121a65760405163379dfc6360e01b815260040160405180910390fd5b6001600160a01b0383166121cd576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055612220908690869086906124d6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612273959493929190613214565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361234f576001600160a01b03861661230c578495505f60035f8b81526020019081526020015f20600301541180156122d1575060015b15612307576122f5898760035f8d81526020019081526020015f206003015461235e565b5f898152600360208190526040822001555b61234f565b856001600160a01b0316856001600160a01b03161461234f575f848810156123345787612336565b845b90506123478a88610a5a848c613035565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612381908290613003565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906123d19085815260200190565b60405180910390a3505050565b805f036123e85750565b335f90815260066020526040902054801561243d578181106124215761240e8282613035565b335f908152600660205260409020555050565b61242b8183613035565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612491573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b59190613077565b6124d257604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526003602090815260408083206005015490516124fe92879186918891879101613214565b6040516020818303038152906040528051906020012090505f821115612532575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c6b565b5f82815260036020526040902060048101829055600101546125cc90600160c01b900463ffffffff16426131f0565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612644576040516001627a443360e01b0319815260040160405180910390fd5b600754600160a01b900463ffffffff16156126725760405163379dfc6360e01b815260040160405180910390fd5b8463ffffffff165f036126985760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff16106126c257604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126e45750336001600160a01b03881614155b1561276c576001600160a01b0387165f90815260056020526040902054808210156127225760405163d72564c760e01b815260040160405180910390fd5b61272c8183613035565b6001600160a01b0389165f90815260066020526040902054909250612752908290613003565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c161792909217161790558015612818575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561286e575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128659087815260200190565b60405180910390a25b505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156128b557505f8163ffffffff16115b80156128cd57504263ffffffff168163ffffffff1611155b9392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612910576129106128d4565b604052919050565b5f6001600160401b03821115612930576129306128d4565b5060051b60200190565b5f82601f830112612949575f80fd5b8135602061295e61295983612918565b6128e8565b82815260059290921b8401810191818101908684111561297c575f80fd5b8286015b848110156129975780358352918301918301612980565b509695505050505050565b6001600160a01b03811681146129b6575f80fd5b50565b5f82601f8301126129c8575f80fd5b813560206129d861295983612918565b82815260059290921b840181019181810190868411156129f6575f80fd5b8286015b84811015612997578035612a0d816129a2565b83529183019183016129fa565b5f805f805f60a08688031215612a2e575f80fd5b8535945060208601356001600160401b0380821115612a4b575f80fd5b612a5789838a0161293a565b95506040880135915080821115612a6c575f80fd5b612a7889838a016129b9565b94506060880135915080821115612a8d575f80fd5b612a9989838a0161293a565b93506080880135915080821115612aae575f80fd5b50612abb8882890161293a565b9150509295509295909350565b5f8060408385031215612ad9575f80fd5b50508035926020909101359150565b803563ffffffff811681146117af575f80fd5b5f805f805f60a08688031215612b0f575f80fd5b85359450602086013593506040860135612b28816129a2565b9250612b3660608701612ae8565b949793965091946080013592915050565b5f60208284031215612b57575f80fd5b81356128cd816129a2565b5f60208284031215612b72575f80fd5b5035919050565b5f805f805f8060c08789031215612b8e575f80fd5b86356001600160401b0380821115612ba4575f80fd5b612bb08a838b0161293a565b97506020890135915080821115612bc5575f80fd5b612bd18a838b0161293a565b96506040890135915080821115612be6575f80fd5b612bf28a838b0161293a565b95506060890135915080821115612c07575f80fd5b612c138a838b016129b9565b94506080890135915080821115612c28575f80fd5b612c348a838b0161293a565b935060a0890135915080821115612c49575f80fd5b50612c5689828a0161293a565b9150509295509295509295565b5f805f8060808587031215612c76575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612ca1575f80fd5b81356001600160401b03811115612cba57612cba6128d4565b612ccd601f8201601f19166020016128e8565b818152846020838601011115612ce1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612d15575f80fd5b8835975060208901356001600160401b03811115612d31575f80fd5b612d3d8b828c01612c92565b9750506040890135612d4e816129a2565b9550612d5c60608a01612ae8565b9450612d6a60808a01612ae8565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612da1575f80fd5b8635955060208701356001600160401b03811115612dbd575f80fd5b612dc989828a01612c92565b9550506040870135612dda816129a2565b9350612de860608801612ae8565b9250612df660808801612ae8565b915060a087013590509295509295509295565b5f60208284031215612e19575f80fd5b81356001600160401b03811115612e2e575f80fd5b612e3a84828501612c92565b949350505050565b5f805f805f60a08688031215612e56575f80fd5b8535945060208601359350604086013592506060860135612b36816129a2565b5f805f805f8060c08789031215612e8b575f80fd5b86359550602087013594506040870135612ea4816129a2565b9350606087013592506080870135915060a0870135612ec2816129a2565b809150509295509295509295565b5f805f805f805f60e0888a031215612ee6575f80fd5b8735965060208801356001600160401b03811115612f02575f80fd5b612f0e8a828b01612c92565b9650506040880135612f1f816129a2565b9450612f2d60608901612ae8565b9350612f3b60808901612ae8565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612f67575f80fd5b6128cd82612ae8565b5f805f60608486031215612f82575f80fd5b833592506020840135612f94816129a2565b929592945050506040919091013590565b5f805f60608486031215612fb7575f80fd5b83359250602084013591506040840135612fd0816129a2565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156116e5576116e5612fef565b5f8261303057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156116e5576116e5612fef565b5f6001820161305957613059612fef565b5060010190565b80820281158282048414176116e5576116e5612fef565b5f60208284031215613087575f80fd5b815180151581146128cd575f80fd5b5f5b838110156130b0578181015183820152602001613098565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516130e1816024850160208701613096565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613160816020860160208601613096565b601f01601f19169290920160200192915050565b87815260e060208201525f61318c60e0830189613149565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516131d4818460208701613096565b9190910192915050565b602081525f6128cd6020830184613149565b63ffffffff81811683821601908082111561320d5761320d612fef565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212208fbca76e9961fce8754f21dad2c9d19991b3235fd852143e310b4ef4abc8f4d364736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b506200001e62000024565b62000248565b620000486040518060600160405280603f815260200162003537603f9139620000df565b506200006d6040518060800160405280604f815260200162003613604f9139620000df565b50620000926040518060800160405280605a8152602001620035b9605a9139620000df565b50620000b76040518060800160405280605c8152602001620034db605c9139620000df565b50620000dc6040518060800160405280604381526020016200357660439139620000df565b50565b6007545f90600160a01b900463ffffffff1615620001105760405163379dfc6360e01b815260040160405180910390fd5b5f805480825260016020908152604092839020439055915190916200013891859101620001d1565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e49062000190908790620001ee565b60405180910390a3620001a581600162000222565b5f5592915050565b5f5b83811015620001c9578181015183820152602001620001af565b50505f910152565b5f8251620001e4818460208701620001ad565b9190910192915050565b602081525f82518060208401526200020e816040850160208701620001ad565b601f01601f19169190910160400192915050565b808201808211156200024257634e487b7160e01b5f52601160045260245ffd5b92915050565b61328580620002565f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c806382ffa9f711610140578063bb88019b116100bf578063dbc7214411610084578063dbc7214414610744578063e12891d414610778578063ebbdd2b01461078b578063f6a94ecb1461079e578063fc0c546a146107b1578063fe92049d146107c4575f80fd5b8063bb88019b146106e8578063bc525652146106ff578063d09cc57e14610693578063d44e293c1461071e578063d4876b9f14610731575f80fd5b80639e63fa6a116101055780639e63fa6a146106205780639f1025c614610664578063a462fb7b14610693578063acae8f4e146106a6578063b8eaa980146106d5575f80fd5b806382ffa9f7146104bc57806383bf4609146104de5780638d552d46146104f1578063924532fb1461051357806395addb9014610538575f80fd5b8063484c0714116101cc578063590158a711610191578063590158a7146103eb5780636fa427421461044857806370a0823114610467578063762c38fd146104865780637f8d429e14610499575f80fd5b8063484c0714146103655780634df6ca2a146103875780634e60f8831461039a57806351577ea9146103b957806352debac3146103d8575f80fd5b80632518904c116102125780632518904c146102d257806326d6c97b1461031557806328828b1e146103375780632f998a6f1461034a5780633ccfd60b1461035d575f80fd5b80631101a0fd1461024e578063128b7a471461026357806312a203c314610276578063144fa6d71461029c5780632417395c146102af575b5f80fd5b61026161025c366004612a1a565b6107d7565b005b610261610271366004612ac8565b610aa7565b610289610284366004612afb565b610c7a565b6040519081526020015b60405180910390f35b6102616102aa366004612b47565b610d98565b6102896102bd366004612b62565b5f908152600360208190526040909120015490565b6102fd6102e0366004612b62565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b039091168152602001610293565b610289610323366004612b62565b5f9081526003602052604090206006015490565b610261610345366004612b79565b610de4565b610261610358366004612c63565b6110c2565b610261611311565b610289610373366004612b62565b5f9081526003602052604090206007015490565b610261610395366004612b62565b611408565b6102896103a8366004612b62565b60026020525f908152604090205481565b6102896103c7366004612b62565b5f9081526003602052604090205490565b6102896103e6366004612cfd565b611483565b6104236103f9366004612b62565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610293565b610289610456366004612b47565b60056020525f908152604090205481565b610289610475366004612b47565b60066020525f908152604090205481565b610289610494366004612d8c565b61158a565b6104ac6104a7366004612b62565b611685565b6040519015158152602001610293565b6102896104ca366004612b62565b5f9081526003602052604090206005015490565b6102896104ec366004612e09565b6116eb565b6102896104ff366004612b62565b5f9081526003602052604090206004015490565b6104ac610521366004612b62565b5f9081526003602052604090206002015460ff1690565b6105b9610546366004612b62565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e085015261010084019190915261012083015261014082015261016001610293565b61064f61062e366004612b62565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff9091168152602001610293565b61064f610672366004612b62565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102896106a1366004612b62565b6117b4565b61064f6106b4366004612b62565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102616106e3366004612e42565b6117f2565b60075461064f90600160a01b900463ffffffff1681565b61028961070d366004612b62565b60016020525f908152604090205481565b61026161072c366004612e76565b611a69565b61028961073f366004612ed0565b611ae2565b610261610752366004612f57565b6007805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6104ac610786366004612a1a565b611be8565b610261610799366004612b62565b611d85565b6102616107ac366004612f70565b611eb5565b6007546102fd906001600160a01b031681565b6102616107d2366004612fa5565b61210a565b846107e181611685565b6107fe57604051636030e5f560e11b815260040160405180910390fd5b600754600160a01b900463ffffffff161561082c5760405163379dfc6360e01b815260040160405180910390fd5b84515f0361084d576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a0957610900838c83815181106108a5576108a5612fdb565b60200260200101518a84815181106108bf576108bf612fdb565b60200260200101518c85815181106108d9576108d9612fdb565b60200260200101518e86815181106108f3576108f3612fdb565b6020026020010151612259565b61091d576040516303a479f160e11b815260040160405180910390fd5b6109278585613003565b93506109838c8386898e868151811061094257610942612fdb565b60200260200101518e878151811061095c5761095c612fdb565b60200260200101518e888151811061097657610976612fdb565b6020026020010151612296565b809750819550505088818151811061099d5761099d612fdb565b6020026020010151945060035f8d81526020019081526020015f206006015485146109da576109cd602886613016565b6109d79086613035565b94505b8a81815181106109ec576109ec612fdb565b602002602001015192508080610a0190613048565b915050610886565b8215610a4b57610a1a8c878661235e565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610a86565b610a5f8c87610a5a8888613003565b61235e565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610ae75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b19576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b5257504263ffffffff168163ffffffff1611155b15610b705760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610ba857504263ffffffff168163ffffffff16115b15610bc65760405163079994c560e31b815260040160405180910390fd5b600754600160a01b900463ffffffff1615610bf45760405163379dfc6360e01b815260040160405180910390fd5b610bfd846123de565b5f8581526003602081905260409091200154610c1a908590613003565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c6b91899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8581611685565b610ca257604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610ccf57604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d0b5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d4d57604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d7e57604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dc257604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600754600160a01b900463ffffffff1615610e125760405163379dfc6360e01b815260040160405180910390fd5b5f805b87518210156110b0575f888381518110610e3157610e31612fdb565b602002602001015190505f888481518110610e4e57610e4e612fdb565b602002602001015190505f816001600160401b03811115610e7157610e716128d4565b604051908082528060200260200182016040528015610e9a578160200160208202803683370190505b5090505f826001600160401b03811115610eb657610eb66128d4565b604051908082528060200260200182016040528015610edf578160200160208202803683370190505b5090505f836001600160401b03811115610efb57610efb6128d4565b604051908082528060200260200182016040528015610f24578160200160208202803683370190505b5090505f846001600160401b03811115610f4057610f406128d4565b604051908082528060200260200182016040528015610f69578160200160208202803683370190505b5090505f5b85811015611089578c8881518110610f8857610f88612fdb565b6020026020010151858281518110610fa257610fa2612fdb565b6020026020010181815250508b8881518110610fc057610fc0612fdb565b6020026020010151848281518110610fda57610fda612fdb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061100c5761100c612fdb565b602002602001015183828151811061102657611026612fdb565b60200260200101818152505089888151811061104457611044612fdb565b602002602001015182828151811061105e5761105e612fdb565b60209081029190910101528761107381613048565b985050808061108190613048565b915050610f6e565b61109687868686866107d7565b5050505050505081806110a890613048565b925050610e15565b6110b8611311565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036111025760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611134576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061116d57504263ffffffff168163ffffffff1611155b1561118b5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906111c357504263ffffffff168163ffffffff16115b156111e15760405163079994c560e31b815260040160405180910390fd5b8684805f0361120357604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611252575f8381526003602052604090206007015482101561124d5760405163291784d560e01b815260040160405180910390fd5b61127d565b61125d816002613060565b82101561127d576040516328eecafb60e21b815260040160405180910390fd5b898880156112b6575f828152600360205260409020600601548110156112b65760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156112e45760405163379dfc6360e01b815260040160405180910390fd5b6112ed896123de565b6112f98c8c338c6124d6565b6113038c8c61259d565b505050505050505050505050565b600754600160a01b900463ffffffff161561133f5760405163379dfc6360e01b815260040160405180910390fd5b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156113a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c89190613077565b6113d0575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b600754600160a01b900463ffffffff16156114365760405163379dfc6360e01b815260040160405180910390fd5b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61148d826123de565b5f8981526001602052604081205490036114ba5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a6040516020016114d0939291906130b8565b6040516020818303038152906040528051906020012090505f8189898730338b60405160200161150697969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516115659796959493929190613174565b60405180910390a461157c81838b8b8b8a8a612603565b9a9950505050505050505050565b5f8681526001602052604081205481036115b75760405163bbbf712b60e01b815260040160405180910390fd5b5f8784886040516020016115cd939291906130b8565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161160397969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516116629796959493929190613174565b60405180910390a461167981838989895f80612603565b98975050505050505050565b6007545f90600160a01b900463ffffffff16158015906116d057506007545f83815260036020526040902060010154600160a01b90910463ffffffff908116600160e01b9092041610155b156116dc57505f919050565b6116e582612879565b92915050565b6007545f90600160a01b900463ffffffff161561171b5760405163379dfc6360e01b815260040160405180910390fd5b5f80548082526001602090815260409283902043905591519091611741918591016131c3565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906117979087906131de565b60405180910390a36117aa816001613003565b5f5590505b919050565b5f816117bf81611685565b6117dc57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036118325760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611864576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061189d57504263ffffffff168163ffffffff1611155b156118bb5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906118f357504263ffffffff168163ffffffff16115b156119115760405163079994c560e31b815260040160405180910390fd5b8784805f0361193357604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611982575f8381526003602052604090206007015482101561197d5760405163291784d560e01b815260040160405180910390fd5b6119ad565b61198d816002613060565b8210156119ad576040516328eecafb60e21b815260040160405180910390fd5b8a8980156119e6575f828152600360205260409020600601548110156119e65760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff1615611a145760405163379dfc6360e01b815260040160405180910390fd5b611a1d896123de565b6001600160a01b038a16611a4457604051630ca6549f60e11b815260040160405180910390fd5b611a508d8d8c8c6124d6565b611a5a8d8d61259d565b50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611a9091908590859085612259565b611aad576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611aca5784611acc565b815b9050611ad987878361210a565b50505050505050565b5f611aec826123de565b5f888152600160205260408120549003611b195760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611b2f939291906130b8565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611b6597969594939291906130f0565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611bc49796959493929190613174565b60405180910390a4611bdb81838a8a8a5f8a612603565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611c275760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611c6057504263ffffffff168163ffffffff1611155b15611c7e5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611cb657504263ffffffff168163ffffffff16115b15611cd45760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611cf8575080885114155b80611d04575080875114155b15611d13575f95505050611d79565b5f5b81811015611d7157611d33838c83815181106108a5576108a5612fdb565b611d42575f9650505050611d79565b8a8181518110611d5457611d54612fdb565b602002602001015192508080611d6990613048565b915050611d15565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611dc057604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611df35760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff1615611e215760405163379dfc6360e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611e5590600160c01b900463ffffffff16426131f0565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ef057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611f305760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611f62576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611f9b57504263ffffffff168163ffffffff1611155b15611fb95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ff157504263ffffffff168163ffffffff16115b1561200f5760405163079994c560e31b815260040160405180910390fd5b86858015612048575f828152600360205260409020600601548110156120485760405163f6631e6760e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156120765760405163379dfc6360e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166120b1576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461214557604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166121785760405163f476ed1160e01b815260040160405180910390fd5b600754600160a01b900463ffffffff16156121a65760405163379dfc6360e01b815260040160405180910390fd5b6001600160a01b0383166121cd576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055612220908690869086906124d6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612273959493929190613214565b604051602081830303815290604052805190602001208614905095945050505050565b5f8087830361234f576001600160a01b03861661230c578495505f60035f8b81526020019081526020015f20600301541180156122d1575060015b15612307576122f5898760035f8d81526020019081526020015f206003015461235e565b5f898152600360208190526040822001555b61234f565b856001600160a01b0316856001600160a01b03161461234f575f848810156123345787612336565b845b90506123478a88610a5a848c613035565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612381908290613003565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906123d19085815260200190565b60405180910390a3505050565b805f036123e85750565b335f90815260066020526040902054801561243d578181106124215761240e8282613035565b335f908152600660205260409020555050565b61242b8183613035565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612491573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b59190613077565b6124d257604051637e3e710960e11b815260040160405180910390fd5b5050565b5f8481526003602090815260408083206005015490516124fe92879186918891879101613214565b6040516020818303038152906040528051906020012090505f821115612532575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c6b565b5f82815260036020526040902060048101829055600101546125cc90600160c01b900463ffffffff16426131f0565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff1615612644576040516001627a443360e01b0319815260040160405180910390fd5b600754600160a01b900463ffffffff16156126725760405163379dfc6360e01b815260040160405180910390fd5b8463ffffffff165f036126985760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff16106126c257604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126e45750336001600160a01b03881614155b1561276c576001600160a01b0387165f90815260056020526040902054808210156127225760405163d72564c760e01b815260040160405180910390fd5b61272c8183613035565b6001600160a01b0389165f90815260066020526040902054909250612752908290613003565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c161792909217161790558015612818575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561286e575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128659087815260200190565b60405180910390a25b505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff161580156128b557505f8163ffffffff16115b80156128cd57504263ffffffff168163ffffffff1611155b9392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612910576129106128d4565b604052919050565b5f6001600160401b03821115612930576129306128d4565b5060051b60200190565b5f82601f830112612949575f80fd5b8135602061295e61295983612918565b6128e8565b82815260059290921b8401810191818101908684111561297c575f80fd5b8286015b848110156129975780358352918301918301612980565b509695505050505050565b6001600160a01b03811681146129b6575f80fd5b50565b5f82601f8301126129c8575f80fd5b813560206129d861295983612918565b82815260059290921b840181019181810190868411156129f6575f80fd5b8286015b84811015612997578035612a0d816129a2565b83529183019183016129fa565b5f805f805f60a08688031215612a2e575f80fd5b8535945060208601356001600160401b0380821115612a4b575f80fd5b612a5789838a0161293a565b95506040880135915080821115612a6c575f80fd5b612a7889838a016129b9565b94506060880135915080821115612a8d575f80fd5b612a9989838a0161293a565b93506080880135915080821115612aae575f80fd5b50612abb8882890161293a565b9150509295509295909350565b5f8060408385031215612ad9575f80fd5b50508035926020909101359150565b803563ffffffff811681146117af575f80fd5b5f805f805f60a08688031215612b0f575f80fd5b85359450602086013593506040860135612b28816129a2565b9250612b3660608701612ae8565b949793965091946080013592915050565b5f60208284031215612b57575f80fd5b81356128cd816129a2565b5f60208284031215612b72575f80fd5b5035919050565b5f805f805f8060c08789031215612b8e575f80fd5b86356001600160401b0380821115612ba4575f80fd5b612bb08a838b0161293a565b97506020890135915080821115612bc5575f80fd5b612bd18a838b0161293a565b96506040890135915080821115612be6575f80fd5b612bf28a838b0161293a565b95506060890135915080821115612c07575f80fd5b612c138a838b016129b9565b94506080890135915080821115612c28575f80fd5b612c348a838b0161293a565b935060a0890135915080821115612c49575f80fd5b50612c5689828a0161293a565b9150509295509295509295565b5f805f8060808587031215612c76575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612ca1575f80fd5b81356001600160401b03811115612cba57612cba6128d4565b612ccd601f8201601f19166020016128e8565b818152846020838601011115612ce1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612d15575f80fd5b8835975060208901356001600160401b03811115612d31575f80fd5b612d3d8b828c01612c92565b9750506040890135612d4e816129a2565b9550612d5c60608a01612ae8565b9450612d6a60808a01612ae8565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612da1575f80fd5b8635955060208701356001600160401b03811115612dbd575f80fd5b612dc989828a01612c92565b9550506040870135612dda816129a2565b9350612de860608801612ae8565b9250612df660808801612ae8565b915060a087013590509295509295509295565b5f60208284031215612e19575f80fd5b81356001600160401b03811115612e2e575f80fd5b612e3a84828501612c92565b949350505050565b5f805f805f60a08688031215612e56575f80fd5b8535945060208601359350604086013592506060860135612b36816129a2565b5f805f805f8060c08789031215612e8b575f80fd5b86359550602087013594506040870135612ea4816129a2565b9350606087013592506080870135915060a0870135612ec2816129a2565b809150509295509295509295565b5f805f805f805f60e0888a031215612ee6575f80fd5b8735965060208801356001600160401b03811115612f02575f80fd5b612f0e8a828b01612c92565b9650506040880135612f1f816129a2565b9450612f2d60608901612ae8565b9350612f3b60808901612ae8565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612f67575f80fd5b6128cd82612ae8565b5f805f60608486031215612f82575f80fd5b833592506020840135612f94816129a2565b929592945050506040919091013590565b5f805f60608486031215612fb7575f80fd5b83359250602084013591506040840135612fd0816129a2565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156116e5576116e5612fef565b5f8261303057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156116e5576116e5612fef565b5f6001820161305957613059612fef565b5060010190565b80820281158282048414176116e5576116e5612fef565b5f60208284031215613087575f80fd5b815180151581146128cd575f80fd5b5f5b838110156130b0578181015183820152602001613098565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f82516130e1816024850160208701613096565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613160816020860160208601613096565b601f01601f19169290920160200192915050565b87815260e060208201525f61318c60e0830189613149565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516131d4818460208701613096565b9190910192915050565b602081525f6128cd6020830184613149565b63ffffffff81811683821601908082111561320d5761320d612fef565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220fda728a4308cdaf13cf6102f77e743d0442ebd3a9f43e96b4dfa3d6be24c604a64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620033e0603f9139620000d3565b506200005d6040518060800160405280604f8152602001620034bc604f9139620000d3565b50620000826040518060800160405280605a815260200162003462605a9139620000d3565b50620000a76040518060800160405280605c815260200162003384605c9139620000d3565b50620000cc6040518060800160405280604381526020016200341f60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b61316f80620002155f395ff3fe60806040526004361061023e575f3560e01c806377f325df11610134578063ab5a4e35116100b3578063d44e293c11610078578063d44e293c14610890578063e12891d4146108af578063e83bfb58146108ce578063ebbdd2b0146108fc578063f6a94ecb1461091b578063fe92049d1461093a575f80fd5b8063ab5a4e35146107e0578063acae8f4e146107ff578063bc5256521461083a578063c081d8a314610865578063d09cc57e146107c1575f80fd5b8063924532fb116100f9578063924532fb1461061157806395addb90146106425780639e63fa6a146107365780639f1025c614610786578063a462fb7b146107c1575f80fd5b806377f325df146105645780637f8d429e1461057757806382ffa9f71461059657806383bf4609146105c45780638d552d46146105e3575f80fd5b8063484b93c4116101c0578063590158a711610185578063590158a71461047f57806359245ff3146104e85780636fa42742146104fb57806370a0823114610526578063762c38fd14610551575f80fd5b8063484b93c4146103c9578063484c0714146103dc5780634df6ca2a1461040a5780634e60f8831461042957806351577ea914610454575f80fd5b80632417395c116102065780632417395c146102ea5780632518904c1461031957806326d6c97b1461036857806328828b1e146103965780633ccfd60b146103b5575f80fd5b806306c3b67a146102425780631101a0fd14610276578063111ec138146102975780631126a9dc146102aa57806312a203c3146102cb575b5f80fd5b34801561024d575f80fd5b5061026161025c366004612835565b610959565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b5061029561029036600461298f565b61096d565b005b6102956102a5366004612a3d565b610c0f565b6102bd6102b8366004612af7565b610e4e565b60405190815260200161026d565b3480156102d6575f80fd5b506102bd6102e5366004612b84565b6110f0565b3480156102f5575f80fd5b506102bd610304366004612835565b5f908152600360208190526040909120015490565b348015610324575f80fd5b50610350610333366004612835565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161026d565b348015610373575f80fd5b506102bd610382366004612835565b5f9081526003602052604090206006015490565b3480156103a1575f80fd5b506102956103b0366004612bce565b61120e565b3480156103c0575f80fd5b506102956114be565b6102bd6103d7366004612cb8565b611535565b3480156103e7575f80fd5b506102bd6103f6366004612835565b5f9081526003602052604090206007015490565b348015610415575f80fd5b50610295610424366004612835565b611631565b348015610434575f80fd5b506102bd610443366004612835565b60026020525f908152604090205481565b34801561045f575f80fd5b506102bd61046e366004612835565b5f9081526003602052604090205490565b34801561048a575f80fd5b506104c3610499366004612835565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161026d565b6102956104f6366004612835565b61167e565b348015610506575f80fd5b506102bd610515366004612d3d565b60056020525f908152604090205481565b348015610531575f80fd5b506102bd610540366004612d3d565b60066020525f908152604090205481565b6102bd61055f366004612d56565b611819565b610295610572366004612dd1565b611914565b348015610582575f80fd5b50610261610591366004612835565b611b2b565b3480156105a1575f80fd5b506102bd6105b0366004612835565b5f9081526003602052604090206005015490565b3480156105cf575f80fd5b506102bd6105de366004612dfa565b611b86565b3480156105ee575f80fd5b506102bd6105fd366004612835565b5f9081526003602052604090206004015490565b34801561061c575f80fd5b5061026161062b366004612835565b5f9081526003602052604090206002015460ff1690565b34801561064d575f80fd5b506106cf61065c366004612835565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161026d565b348015610741575f80fd5b50610771610750366004612835565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161026d565b348015610791575f80fd5b506107716107a0366004612835565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b3480156107cc575f80fd5b506102bd6107db366004612835565b611c1b565b3480156107eb575f80fd5b506102bd6107fa366004612835565b611c59565b34801561080a575f80fd5b50610771610819366004612835565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b348015610845575f80fd5b506102bd610854366004612835565b60016020525f908152604090205481565b348015610870575f80fd5b506102bd61087f366004612835565b60076020525f908152604090205481565b34801561089b575f80fd5b506102956108aa366004612e33565b611ccd565b3480156108ba575f80fd5b506102616108c936600461298f565b611d46565b3480156108d9575f80fd5b506102616108e8366004612835565b60086020525f908152604090205460ff1681565b348015610907575f80fd5b50610295610916366004612835565b611ee3565b348015610926575f80fd5b50610295610935366004612e87565b611fe5565b348015610945575f80fd5b50610295610954366004612eb9565b61220c565b5f60011961096683611c1b565b1492915050565b8461097781611b2b565b61099457604051636030e5f560e11b815260040160405180910390fd5b84515f036109b5576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610b7157610a68838c8381518110610a0d57610a0d612eeb565b60200260200101518a8481518110610a2757610a27612eeb565b60200260200101518c8581518110610a4157610a41612eeb565b60200260200101518e8681518110610a5b57610a5b612eeb565b602002602001015161232d565b610a85576040516303a479f160e11b815260040160405180910390fd5b610a8f8585612f13565b9350610aeb8c8386898e8681518110610aaa57610aaa612eeb565b60200260200101518e8781518110610ac457610ac4612eeb565b60200260200101518e8881518110610ade57610ade612eeb565b602002602001015161236a565b8097508195505050888181518110610b0557610b05612eeb565b6020026020010151945060035f8d81526020019081526020015f20600601548514610b4257610b35602886612f26565b610b3f9086612f45565b94505b8a8181518110610b5457610b54612eeb565b602002602001015192508080610b6990612f58565b9150506109ee565b8215610bb357610b828c8786612436565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610bee565b610bc78c87610bc28888612f13565b612436565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610c4f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610c81576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610cba57504263ffffffff168163ffffffff1611155b15610cd85760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610d1057504263ffffffff168163ffffffff16115b15610d2e5760405163079994c560e31b815260040160405180910390fd5b8634805f03610d5057604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610d9f575f83815260036020526040902060070154821015610d9a5760405163291784d560e01b815260040160405180910390fd5b610dca565b610daa816002612f70565b821015610dca576040516328eecafb60e21b815260040160405180910390fd5b89888015610e03575f82815260036020526040902060060154811015610e035760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e2a57604051630ca6549f60e11b815260040160405180910390fd5b610e368c8c8b346124b6565b610e408c8c612587565b505050505050505050505050565b5f610e5882610959565b610e7557604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610e8b93929190612fa9565b60408051601f1981840301815291815281516020928301205f86815260039093529120549091508114610ed1576040516349923ed160e11b815260040160405180910390fd5b5f838152600360205260409020600101546001600160a01b03898116911614610f0d5760405163611876b160e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff888116600160c01b9092041614610f4d57604051635f4c19f760e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff878116600160a01b9092041614610f8d57604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600360205260409020600701548414610fbd57604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff1615610fec5760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561103f5761100a82610959565b61102757604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f61104f8d8d8d8d8d8d8d611535565b5f87815260076020908152604080832084905583835260088252808320805460ff191660011790556003918290528083208201548684529220015491925061109691612f13565b5f828152600360208190526040808320820193909355848252828220018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f856110fb81611b2b565b61111857604051636030e5f560e11b815260040160405180910390fd5b5f87815260036020526040902054861461114557604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b038681169116146111815760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b909104811690851611156111c357604051633f61762b60e01b815260040160405180910390fd5b5f878152600360205260409020600601548311156111f457604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b87518210156114ac575f88838151811061122d5761122d612eeb565b602002602001015190505f88848151811061124a5761124a612eeb565b602002602001015190505f816001600160401b0381111561126d5761126d61284c565b604051908082528060200260200182016040528015611296578160200160208202803683370190505b5090505f826001600160401b038111156112b2576112b261284c565b6040519080825280602002602001820160405280156112db578160200160208202803683370190505b5090505f836001600160401b038111156112f7576112f761284c565b604051908082528060200260200182016040528015611320578160200160208202803683370190505b5090505f846001600160401b0381111561133c5761133c61284c565b604051908082528060200260200182016040528015611365578160200160208202803683370190505b5090505f5b85811015611485578c888151811061138457611384612eeb565b602002602001015185828151811061139e5761139e612eeb565b6020026020010181815250508b88815181106113bc576113bc612eeb565b60200260200101518482815181106113d6576113d6612eeb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061140857611408612eeb565b602002602001015183828151811061142257611422612eeb565b60200260200101818152505089888151811061144057611440612eeb565b602002602001015182828151811061145a5761145a612eeb565b60209081029190910101528761146f81612f58565b985050808061147d90612f58565b91505061136a565b611492878686868661096d565b5050505050505081806114a490612f58565b925050611211565b6114b46114be565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156114fc573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036115625760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161157893929190612fa9565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115ae9796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161160d9796959493929190613065565b60405180910390a461162481838a8a8a89346125ed565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff1690036116be5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116f0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061172957504263ffffffff168163ffffffff1611155b156117475760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061177f57504263ffffffff168163ffffffff16115b1561179d5760405163079994c560e31b815260040160405180910390fd5b5f84815260036020819052604090912001546117ba903490612f13565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161180b91349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036118465760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161185c93929190612fa9565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118929796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516118f19796959493929190613065565b60405180910390a461190881838989895f346125ed565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036119545760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611986576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119bf57504263ffffffff168163ffffffff1611155b156119dd5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a1557504263ffffffff168163ffffffff16115b15611a335760405163079994c560e31b815260040160405180910390fd5b8534805f03611a5557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611aa4575f83815260036020526040902060070154821015611a9f5760405163291784d560e01b815260040160405180910390fd5b611acf565b611aaf816002612f70565b821015611acf576040516328eecafb60e21b815260040160405180910390fd5b88878015611b08575f82815260036020526040902060060154811015611b085760405163f6631e6760e01b815260040160405180910390fd5b611b148b8b33346124b6565b611b1e8b8b612587565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b6757505f8163ffffffff16115b8015611b7f57504263ffffffff168163ffffffff1611155b9392505050565b5f805480825260016020908152604080842043905551611ba8918591016130b4565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611bfe9087906130cf565b60405180910390a3611c11816001612f13565b5f5590505b919050565b5f81611c2681611b2b565b611c4357604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f80611c6483611c1b565b905060028101611cc7575f8381526007602052604090205480611c9a5760405163079442c960e01b815260040160405180910390fd5b611ca381611c1b565b915060028201611cc55760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526003602052604090206005810154600690910154611cf49190859085908561232d565b611d11576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611d2e5784611d30565b815b9050611d3d87878361220c565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611d855760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611dbe57504263ffffffff168163ffffffff1611155b15611ddc5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611e1457504263ffffffff168163ffffffff16115b15611e325760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611e56575080885114155b80611e62575080875114155b15611e71575f95505050611ed7565b5f5b81811015611ecf57611e91838c8381518110610a0d57610a0d612eeb565b611ea0575f9650505050611ed7565b8a8181518110611eb257611eb2612eeb565b602002602001015192508080611ec790612f58565b915050611e73565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611f1e57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611f515760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611f8590600160c01b900463ffffffff16426130e1565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b0316331461202057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120605760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615612092576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906120cb57504263ffffffff168163ffffffff1611155b156120e95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061212157504263ffffffff168163ffffffff16115b1561213f5760405163079994c560e31b815260040160405180910390fd5b86858015612178575f828152600360205260409020600601548110156121785760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166121b3576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461224757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff1661227a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166122a1576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556122f4908690869086906124b6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123479594939291906130fe565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612427576001600160a01b0386166123e4578495505f60035f8b81526020019081526020015f20600301541180156123a957506001198814155b156123df576123cd898760035f8d81526020019081526020015f2060030154612436565b5f898152600360208190526040822001555b612427565b856001600160a01b0316856001600160a01b031614612427575f8488101561240c578761240e565b845b905061241f8a88610bc2848c612f45565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612459908290612f13565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906124a99085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516124de928791869188918791016130fe565b6040516020818303038152906040528051906020012090505f821115612512575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546125b690600160c01b900463ffffffff16426130e1565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff161561262e576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126545760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061267e57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126a05750336001600160a01b03881614155b15612728576001600160a01b0387165f90815260056020526040902054808210156126de5760405163d72564c760e01b815260040160405180910390fd5b6126e88183612f45565b6001600160a01b0389165f9081526006602052604090205490925061270e908290612f13565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127d4575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561282a575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128219087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612845575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128885761288861284c565b604052919050565b5f6001600160401b038211156128a8576128a861284c565b5060051b60200190565b5f82601f8301126128c1575f80fd5b813560206128d66128d183612890565b612860565b82815260059290921b840181019181810190868411156128f4575f80fd5b8286015b8481101561290f57803583529183019183016128f8565b509695505050505050565b80356001600160a01b0381168114611c16575f80fd5b5f82601f83011261293f575f80fd5b8135602061294f6128d183612890565b82815260059290921b8401810191818101908684111561296d575f80fd5b8286015b8481101561290f576129828161291a565b8352918301918301612971565b5f805f805f60a086880312156129a3575f80fd5b8535945060208601356001600160401b03808211156129c0575f80fd5b6129cc89838a016128b2565b955060408801359150808211156129e1575f80fd5b6129ed89838a01612930565b94506060880135915080821115612a02575f80fd5b612a0e89838a016128b2565b93506080880135915080821115612a23575f80fd5b50612a30888289016128b2565b9150509295509295909350565b5f805f8060808587031215612a50575f80fd5b843593506020850135925060408501359150612a6e6060860161291a565b905092959194509250565b5f82601f830112612a88575f80fd5b81356001600160401b03811115612aa157612aa161284c565b612ab4601f8201601f1916602001612860565b818152846020838601011115612ac8575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c16575f80fd5b5f805f805f805f80610100898b031215612b0f575f80fd5b8835975060208901356001600160401b03811115612b2b575f80fd5b612b378b828c01612a79565b975050612b4660408a0161291a565b9550612b5460608a01612ae4565b9450612b6260808a01612ae4565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a08688031215612b98575f80fd5b8535945060208601359350612baf6040870161291a565b9250612bbd60608701612ae4565b949793965091946080013592915050565b5f805f805f8060c08789031215612be3575f80fd5b86356001600160401b0380821115612bf9575f80fd5b612c058a838b016128b2565b97506020890135915080821115612c1a575f80fd5b612c268a838b016128b2565b96506040890135915080821115612c3b575f80fd5b612c478a838b016128b2565b95506060890135915080821115612c5c575f80fd5b612c688a838b01612930565b94506080890135915080821115612c7d575f80fd5b612c898a838b016128b2565b935060a0890135915080821115612c9e575f80fd5b50612cab89828a016128b2565b9150509295509295509295565b5f805f805f805f60e0888a031215612cce575f80fd5b8735965060208801356001600160401b03811115612cea575f80fd5b612cf68a828b01612a79565b965050612d056040890161291a565b9450612d1360608901612ae4565b9350612d2160808901612ae4565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612d4d575f80fd5b611b7f8261291a565b5f805f805f8060c08789031215612d6b575f80fd5b8635955060208701356001600160401b03811115612d87575f80fd5b612d9389828a01612a79565b955050612da26040880161291a565b9350612db060608801612ae4565b9250612dbe60808801612ae4565b915060a087013590509295509295509295565b5f805f60608486031215612de3575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612e0a575f80fd5b81356001600160401b03811115612e1f575f80fd5b612e2b84828501612a79565b949350505050565b5f805f805f8060c08789031215612e48575f80fd5b8635955060208701359450612e5f6040880161291a565b93506060870135925060808701359150612e7b60a0880161291a565b90509295509295509295565b5f805f60608486031215612e99575f80fd5b83359250612ea96020850161291a565b9150604084013590509250925092565b5f805f60608486031215612ecb575f80fd5b8335925060208401359150612ee26040850161291a565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611cc757611cc7612eff565b5f82612f4057634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611cc757611cc7612eff565b5f60018201612f6957612f69612eff565b5060010190565b8082028115828204841417611cc757611cc7612eff565b5f5b83811015612fa1578181015183820152602001612f89565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612fd2816024850160208701612f87565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613051816020860160208601612f87565b601f01601f19169290920160200192915050565b87815260e060208201525f61307d60e083018961303a565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516130c5818460208701612f87565b9190910192915050565b602081525f611b7f602083018461303a565b63ffffffff818116838216019080821115611cc557611cc5612eff565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220a37e8522607404be4b5234380cd1643889f1ff339757279be93c3b09731a9eea64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b506200001e62000024565b62000213565b620000486040518060600160405280603f8152602001620033ec603f9139620000df565b506200006d6040518060800160405280604f8152602001620034c8604f9139620000df565b50620000926040518060800160405280605a81526020016200346e605a9139620000df565b50620000b76040518060800160405280605c815260200162003390605c9139620000df565b50620000dc6040518060800160405280604381526020016200342b60439139620000df565b50565b5f80548082526001602090815260408084204390555162000103918591016200019c565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200015b908790620001b9565b60405180910390a362000170816001620001ed565b5f5592915050565b5f5b83811015620001945781810151838201526020016200017a565b50505f910152565b5f8251620001af81846020870162000178565b9190910192915050565b602081525f8251806020840152620001d981604085016020870162000178565b601f01601f19169190910160400192915050565b808201808211156200020d57634e487b7160e01b5f52601160045260245ffd5b92915050565b61316f80620002215f395ff3fe60806040526004361061023e575f3560e01c806377f325df11610134578063ab5a4e35116100b3578063d44e293c11610078578063d44e293c14610890578063e12891d4146108af578063e83bfb58146108ce578063ebbdd2b0146108fc578063f6a94ecb1461091b578063fe92049d1461093a575f80fd5b8063ab5a4e35146107e0578063acae8f4e146107ff578063bc5256521461083a578063c081d8a314610865578063d09cc57e146107c1575f80fd5b8063924532fb116100f9578063924532fb1461061157806395addb90146106425780639e63fa6a146107365780639f1025c614610786578063a462fb7b146107c1575f80fd5b806377f325df146105645780637f8d429e1461057757806382ffa9f71461059657806383bf4609146105c45780638d552d46146105e3575f80fd5b8063484b93c4116101c0578063590158a711610185578063590158a71461047f57806359245ff3146104e85780636fa42742146104fb57806370a0823114610526578063762c38fd14610551575f80fd5b8063484b93c4146103c9578063484c0714146103dc5780634df6ca2a1461040a5780634e60f8831461042957806351577ea914610454575f80fd5b80632417395c116102065780632417395c146102ea5780632518904c1461031957806326d6c97b1461036857806328828b1e146103965780633ccfd60b146103b5575f80fd5b806306c3b67a146102425780631101a0fd14610276578063111ec138146102975780631126a9dc146102aa57806312a203c3146102cb575b5f80fd5b34801561024d575f80fd5b5061026161025c366004612835565b610959565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b5061029561029036600461298f565b61096d565b005b6102956102a5366004612a3d565b610c0f565b6102bd6102b8366004612af7565b610e4e565b60405190815260200161026d565b3480156102d6575f80fd5b506102bd6102e5366004612b84565b6110f0565b3480156102f5575f80fd5b506102bd610304366004612835565b5f908152600360208190526040909120015490565b348015610324575f80fd5b50610350610333366004612835565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161026d565b348015610373575f80fd5b506102bd610382366004612835565b5f9081526003602052604090206006015490565b3480156103a1575f80fd5b506102956103b0366004612bce565b61120e565b3480156103c0575f80fd5b506102956114be565b6102bd6103d7366004612cb8565b611535565b3480156103e7575f80fd5b506102bd6103f6366004612835565b5f9081526003602052604090206007015490565b348015610415575f80fd5b50610295610424366004612835565b611631565b348015610434575f80fd5b506102bd610443366004612835565b60026020525f908152604090205481565b34801561045f575f80fd5b506102bd61046e366004612835565b5f9081526003602052604090205490565b34801561048a575f80fd5b506104c3610499366004612835565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161026d565b6102956104f6366004612835565b61167e565b348015610506575f80fd5b506102bd610515366004612d3d565b60056020525f908152604090205481565b348015610531575f80fd5b506102bd610540366004612d3d565b60066020525f908152604090205481565b6102bd61055f366004612d56565b611819565b610295610572366004612dd1565b611914565b348015610582575f80fd5b50610261610591366004612835565b611b2b565b3480156105a1575f80fd5b506102bd6105b0366004612835565b5f9081526003602052604090206005015490565b3480156105cf575f80fd5b506102bd6105de366004612dfa565b611b86565b3480156105ee575f80fd5b506102bd6105fd366004612835565b5f9081526003602052604090206004015490565b34801561061c575f80fd5b5061026161062b366004612835565b5f9081526003602052604090206002015460ff1690565b34801561064d575f80fd5b506106cf61065c366004612835565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161026d565b348015610741575f80fd5b50610771610750366004612835565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161026d565b348015610791575f80fd5b506107716107a0366004612835565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b3480156107cc575f80fd5b506102bd6107db366004612835565b611c1b565b3480156107eb575f80fd5b506102bd6107fa366004612835565b611c59565b34801561080a575f80fd5b50610771610819366004612835565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b348015610845575f80fd5b506102bd610854366004612835565b60016020525f908152604090205481565b348015610870575f80fd5b506102bd61087f366004612835565b60076020525f908152604090205481565b34801561089b575f80fd5b506102956108aa366004612e33565b611ccd565b3480156108ba575f80fd5b506102616108c936600461298f565b611d46565b3480156108d9575f80fd5b506102616108e8366004612835565b60086020525f908152604090205460ff1681565b348015610907575f80fd5b50610295610916366004612835565b611ee3565b348015610926575f80fd5b50610295610935366004612e87565b611fe5565b348015610945575f80fd5b50610295610954366004612eb9565b61220c565b5f60011961096683611c1b565b1492915050565b8461097781611b2b565b61099457604051636030e5f560e11b815260040160405180910390fd5b84515f036109b5576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610b7157610a68838c8381518110610a0d57610a0d612eeb565b60200260200101518a8481518110610a2757610a27612eeb565b60200260200101518c8581518110610a4157610a41612eeb565b60200260200101518e8681518110610a5b57610a5b612eeb565b602002602001015161232d565b610a85576040516303a479f160e11b815260040160405180910390fd5b610a8f8585612f13565b9350610aeb8c8386898e8681518110610aaa57610aaa612eeb565b60200260200101518e8781518110610ac457610ac4612eeb565b60200260200101518e8881518110610ade57610ade612eeb565b602002602001015161236a565b8097508195505050888181518110610b0557610b05612eeb565b6020026020010151945060035f8d81526020019081526020015f20600601548514610b4257610b35602886612f26565b610b3f9086612f45565b94505b8a8181518110610b5457610b54612eeb565b602002602001015192508080610b6990612f58565b9150506109ee565b8215610bb357610b828c8786612436565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610bee565b610bc78c87610bc28888612f13565b612436565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003610c4f5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610c81576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610cba57504263ffffffff168163ffffffff1611155b15610cd85760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610d1057504263ffffffff168163ffffffff16115b15610d2e5760405163079994c560e31b815260040160405180910390fd5b8634805f03610d5057604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003610d9f575f83815260036020526040902060070154821015610d9a5760405163291784d560e01b815260040160405180910390fd5b610dca565b610daa816002612f70565b821015610dca576040516328eecafb60e21b815260040160405180910390fd5b89888015610e03575f82815260036020526040902060060154811015610e035760405163f6631e6760e01b815260040160405180910390fd5b6001600160a01b038916610e2a57604051630ca6549f60e11b815260040160405180910390fd5b610e368c8c8b346124b6565b610e408c8c612587565b505050505050505050505050565b5f610e5882610959565b610e7557604051631f45e42760e11b815260040160405180910390fd5b5f89868a604051602001610e8b93929190612fa9565b60408051601f1981840301815291815281516020928301205f86815260039093529120549091508114610ed1576040516349923ed160e11b815260040160405180910390fd5b5f838152600360205260409020600101546001600160a01b03898116911614610f0d5760405163611876b160e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff888116600160c01b9092041614610f4d57604051635f4c19f760e01b815260040160405180910390fd5b5f8381526003602052604090206001015463ffffffff878116600160a01b9092041614610f8d57604051630a5ab81d60e41b815260040160405180910390fd5b5f838152600360205260409020600701548414610fbd57604051633246892f60e01b815260040160405180910390fd5b5f8381526008602052604090205460ff1615610fec5760405163331c2c3f60e11b815260040160405180910390fd5b5f8381526007602052604090205483811561103f5761100a82610959565b61102757604051634ec30c8560e01b815260040160405180910390fd5b505f818152600860205260409020805460ff19169055805b5f61104f8d8d8d8d8d8d8d611535565b5f87815260076020908152604080832084905583835260088252808320805460ff191660011790556003918290528083208201548684529220015491925061109691612f13565b5f828152600360208190526040808320820193909355848252828220018190559051879183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39c9b505050505050505050505050565b5f856110fb81611b2b565b61111857604051636030e5f560e11b815260040160405180910390fd5b5f87815260036020526040902054861461114557604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b038681169116146111815760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b909104811690851611156111c357604051633f61762b60e01b815260040160405180910390fd5b5f878152600360205260409020600601548311156111f457604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b5f805b87518210156114ac575f88838151811061122d5761122d612eeb565b602002602001015190505f88848151811061124a5761124a612eeb565b602002602001015190505f816001600160401b0381111561126d5761126d61284c565b604051908082528060200260200182016040528015611296578160200160208202803683370190505b5090505f826001600160401b038111156112b2576112b261284c565b6040519080825280602002602001820160405280156112db578160200160208202803683370190505b5090505f836001600160401b038111156112f7576112f761284c565b604051908082528060200260200182016040528015611320578160200160208202803683370190505b5090505f846001600160401b0381111561133c5761133c61284c565b604051908082528060200260200182016040528015611365578160200160208202803683370190505b5090505f5b85811015611485578c888151811061138457611384612eeb565b602002602001015185828151811061139e5761139e612eeb565b6020026020010181815250508b88815181106113bc576113bc612eeb565b60200260200101518482815181106113d6576113d6612eeb565b60200260200101906001600160a01b031690816001600160a01b0316815250508a888151811061140857611408612eeb565b602002602001015183828151811061142257611422612eeb565b60200260200101818152505089888151811061144057611440612eeb565b602002602001015182828151811061145a5761145a612eeb565b60209081029190910101528761146f81612f58565b985050808061147d90612f58565b91505061136a565b611492878686868661096d565b5050505050505081806114a490612f58565b925050611211565b6114b46114be565b5050505050505050565b335f81815260066020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156114fc573d5f803e3d5ffd5b5060405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b5f8781526001602052604081205481036115625760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161157893929190612fa9565b6040516020818303038152906040528051906020012090505f8188888630338a6040516020016115ae9796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d4260405161160d9796959493929190613065565b60405180910390a461162481838a8a8a89346125ed565b9998505050505050505050565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f818152600360205260408120600101548291600160c01b90910463ffffffff1690036116be5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116f0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061172957504263ffffffff168163ffffffff1611155b156117475760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061177f57504263ffffffff168163ffffffff16115b1561179d5760405163079994c560e31b815260040160405180910390fd5b5f84815260036020819052604090912001546117ba903490612f13565b5f858152600360208190526040918290200182905551339186917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab669161180b91349190918252602082015260400190565b60405180910390a350505050565b5f8681526001602052604081205481036118465760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161185c93929190612fa9565b6040516020818303038152906040528051906020012090505f8187875f3033896040516020016118929796959493929190612fe1565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516118f19796959493929190613065565b60405180910390a461190881838989895f346125ed565b98975050505050505050565b5f838152600360205260408120600101548491600160c01b90910463ffffffff1690036119545760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611986576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906119bf57504263ffffffff168163ffffffff1611155b156119dd5760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611a1557504263ffffffff168163ffffffff16115b15611a335760405163079994c560e31b815260040160405180910390fd5b8534805f03611a5557604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611aa4575f83815260036020526040902060070154821015611a9f5760405163291784d560e01b815260040160405180910390fd5b611acf565b611aaf816002612f70565b821015611acf576040516328eecafb60e21b815260040160405180910390fd5b88878015611b08575f82815260036020526040902060060154811015611b085760405163f6631e6760e01b815260040160405180910390fd5b611b148b8b33346124b6565b611b1e8b8b612587565b5050505050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff16158015611b6757505f8163ffffffff16115b8015611b7f57504263ffffffff168163ffffffff1611155b9392505050565b5f805480825260016020908152604080842043905551611ba8918591016130b4565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e490611bfe9087906130cf565b60405180910390a3611c11816001612f13565b5f5590505b919050565b5f81611c2681611b2b565b611c4357604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f80611c6483611c1b565b905060028101611cc7575f8381526007602052604090205480611c9a5760405163079442c960e01b815260040160405180910390fd5b611ca381611c1b565b915060028201611cc55760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f8681526003602052604090206005810154600690910154611cf49190859085908561232d565b611d11576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611d2e5784611d30565b815b9050611d3d87878361220c565b50505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611d855760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611dbe57504263ffffffff168163ffffffff1611155b15611ddc5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611e1457504263ffffffff168163ffffffff16115b15611e325760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611e56575080885114155b80611e62575080875114155b15611e71575f95505050611ed7565b5f5b81811015611ecf57611e91838c8381518110610a0d57610a0d612eeb565b611ea0575f9650505050611ed7565b8a8181518110611eb257611eb2612eeb565b602002602001015192508080611ec790612f58565b915050611e73565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611f1e57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611f515760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611f8590600160c01b900463ffffffff16426130e1565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b0316331461202057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120605760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615612092576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906120cb57504263ffffffff168163ffffffff1611155b156120e95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061212157504263ffffffff168163ffffffff16115b1561213f5760405163079994c560e31b815260040160405180910390fd5b86858015612178575f828152600360205260409020600601548110156121785760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff166121b3576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b0316331461224757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff1661227a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b0383166122a1576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556122f4908690869086906124b6565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123479594939291906130fe565b604051602081830303815290604052805190602001208614905095945050505050565b5f80878303612427576001600160a01b0386166123e4578495505f60035f8b81526020019081526020015f20600301541180156123a957506001198814155b156123df576123cd898760035f8d81526020019081526020015f2060030154612436565b5f898152600360208190526040822001555b612427565b856001600160a01b0316856001600160a01b031614612427575f8488101561240c578761240e565b845b905061241f8a88610bc2848c612f45565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612459908290612f13565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906124a99085815260200190565b60405180910390a3505050565b5f8481526003602090815260408083206005015490516124de928791869188918791016130fe565b6040516020818303038152906040528051906020012090505f821115612512575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a00160405180910390a35050505050565b5f82815260036020526040902060048101829055600101546125b690600160c01b900463ffffffff16426130e1565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff161561262e576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036126545760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061267e57604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b038716158015906126a05750336001600160a01b03881614155b15612728576001600160a01b0387165f90815260056020526040902054808210156126de5760405163d72564c760e01b815260040160405180910390fd5b6126e88183612f45565b6001600160a01b0389165f9081526006602052604090205490925061270e908290612f13565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c1617929092171617905580156127d4575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b831561282a575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906128219087815260200190565b60405180910390a25b505050505050505050565b5f60208284031215612845575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156128885761288861284c565b604052919050565b5f6001600160401b038211156128a8576128a861284c565b5060051b60200190565b5f82601f8301126128c1575f80fd5b813560206128d66128d183612890565b612860565b82815260059290921b840181019181810190868411156128f4575f80fd5b8286015b8481101561290f57803583529183019183016128f8565b509695505050505050565b80356001600160a01b0381168114611c16575f80fd5b5f82601f83011261293f575f80fd5b8135602061294f6128d183612890565b82815260059290921b8401810191818101908684111561296d575f80fd5b8286015b8481101561290f576129828161291a565b8352918301918301612971565b5f805f805f60a086880312156129a3575f80fd5b8535945060208601356001600160401b03808211156129c0575f80fd5b6129cc89838a016128b2565b955060408801359150808211156129e1575f80fd5b6129ed89838a01612930565b94506060880135915080821115612a02575f80fd5b612a0e89838a016128b2565b93506080880135915080821115612a23575f80fd5b50612a30888289016128b2565b9150509295509295909350565b5f805f8060808587031215612a50575f80fd5b843593506020850135925060408501359150612a6e6060860161291a565b905092959194509250565b5f82601f830112612a88575f80fd5b81356001600160401b03811115612aa157612aa161284c565b612ab4601f8201601f1916602001612860565b818152846020838601011115612ac8575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114611c16575f80fd5b5f805f805f805f80610100898b031215612b0f575f80fd5b8835975060208901356001600160401b03811115612b2b575f80fd5b612b378b828c01612a79565b975050612b4660408a0161291a565b9550612b5460608a01612ae4565b9450612b6260808a01612ae4565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f60a08688031215612b98575f80fd5b8535945060208601359350612baf6040870161291a565b9250612bbd60608701612ae4565b949793965091946080013592915050565b5f805f805f8060c08789031215612be3575f80fd5b86356001600160401b0380821115612bf9575f80fd5b612c058a838b016128b2565b97506020890135915080821115612c1a575f80fd5b612c268a838b016128b2565b96506040890135915080821115612c3b575f80fd5b612c478a838b016128b2565b95506060890135915080821115612c5c575f80fd5b612c688a838b01612930565b94506080890135915080821115612c7d575f80fd5b612c898a838b016128b2565b935060a0890135915080821115612c9e575f80fd5b50612cab89828a016128b2565b9150509295509295509295565b5f805f805f805f60e0888a031215612cce575f80fd5b8735965060208801356001600160401b03811115612cea575f80fd5b612cf68a828b01612a79565b965050612d056040890161291a565b9450612d1360608901612ae4565b9350612d2160808901612ae4565b925060a0880135915060c0880135905092959891949750929550565b5f60208284031215612d4d575f80fd5b611b7f8261291a565b5f805f805f8060c08789031215612d6b575f80fd5b8635955060208701356001600160401b03811115612d87575f80fd5b612d9389828a01612a79565b955050612da26040880161291a565b9350612db060608801612ae4565b9250612dbe60808801612ae4565b915060a087013590509295509295509295565b5f805f60608486031215612de3575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215612e0a575f80fd5b81356001600160401b03811115612e1f575f80fd5b612e2b84828501612a79565b949350505050565b5f805f805f8060c08789031215612e48575f80fd5b8635955060208701359450612e5f6040880161291a565b93506060870135925060808701359150612e7b60a0880161291a565b90509295509295509295565b5f805f60608486031215612e99575f80fd5b83359250612ea96020850161291a565b9150604084013590509250925092565b5f805f60608486031215612ecb575f80fd5b8335925060208401359150612ee26040850161291a565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611cc757611cc7612eff565b5f82612f4057634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115611cc757611cc7612eff565b5f60018201612f6957612f69612eff565b5060010190565b8082028115828204841417611cc757611cc7612eff565b5f5b83811015612fa1578181015183820152602001612f89565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612fd2816024850160208701612f87565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452613051816020860160208601612f87565b601f01601f19169290920160200192915050565b87815260e060208201525f61307d60e083018961303a565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f82516130c5818460208701612f87565b9190910192915050565b602081525f611b7f602083018461303a565b63ffffffff818116838216019080821115611cc557611cc5612eff565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212207ff4b4a129a5b467c8d2ae8dbe89d4cf425458263b8044bcd5e7292ab2e5ab5664736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f81526020016200365a603f9139620000d3565b506200005d6040518060800160405280604f815260200162003736604f9139620000d3565b50620000826040518060800160405280605a8152602001620036dc605a9139620000d3565b50620000a76040518060800160405280605c8152602001620035fe605c9139620000d3565b50620000cc6040518060800160405280604381526020016200369960439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b6133e980620002155f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c806383bf46091161014b578063bf53b188116100bf578063e12891d411610084578063e12891d4146107a6578063e83bfb58146107b9578063ebbdd2b0146107db578063f6a94ecb146107ee578063fc0c546a14610801578063fe92049d14610814575f80fd5b8063bf53b1881461074e578063c081d8a314610761578063d09cc57e146106c7578063d44e293c14610780578063d4876b9f14610793575f80fd5b80639f1025c6116101105780639f1025c614610698578063a462fb7b146106c7578063ab5a4e35146106da578063acae8f4e146106ed578063b8eaa9801461071c578063bc5256521461072f575f80fd5b806383bf4609146105125780638d552d4614610525578063924532fb1461054757806395addb901461056c5780639e63fa6a14610654575f80fd5b8063484c0714116101e2578063590158a7116101a7578063590158a71461042f5780636fa427421461048c57806370a08231146104ab578063762c38fd146104ca5780637f8d429e146104dd57806382ffa9f7146104f0575f80fd5b8063484c0714146103a95780634df6ca2a146103cb5780634e60f883146103de57806351577ea9146103fd57806352debac31461041c575f80fd5b80632417395c116102335780632417395c146102f35780632518904c1461031657806326d6c97b1461035957806328828b1e1461037b5780632f998a6f1461038e5780633ccfd60b146103a1575f80fd5b806306c3b67a1461026f5780631101a0fd14610297578063128b7a47146102ac57806312a203c3146102bf578063144fa6d7146102e0575b5f80fd5b61028261027d3660046129c0565b610827565b60405190151581526020015b60405180910390f35b6102aa6102a5366004612b1d565b61083b565b005b6102aa6102ba366004612bcb565b610add565b6102d26102cd366004612bfe565b610c82565b60405190815260200161028e565b6102aa6102ee366004612c4a565b610da0565b6102d26103013660046129c0565b5f908152600360208190526040909120015490565b6103416103243660046129c0565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161028e565b6102d26103673660046129c0565b5f9081526003602052604090206006015490565b6102aa610389366004612c65565b610dec565b6102aa61039c366004612d4f565b61109c565b6102aa6112bd565b6102d26103b73660046129c0565b5f9081526003602052604090206007015490565b6102aa6103d93660046129c0565b611386565b6102d26103ec3660046129c0565b60026020525f908152604090205481565b6102d261040b3660046129c0565b5f9081526003602052604090205490565b6102d261042a366004612de9565b6113d3565b61046761043d3660046129c0565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161028e565b6102d261049a366004612c4a565b60056020525f908152604090205481565b6102d26104b9366004612c4a565b60066020525f908152604090205481565b6102d26104d8366004612e78565b6114da565b6102826104eb3660046129c0565b6115d5565b6102d26104fe3660046129c0565b5f9081526003602052604090206005015490565b6102d2610520366004612ef5565b611630565b6102d26105333660046129c0565b5f9081526003602052604090206004015490565b6102826105553660046129c0565b5f9081526003602052604090206002015460ff1690565b6105ed61057a3660046129c0565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161028e565b6106836106623660046129c0565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161028e565b6106836106a63660046129c0565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102d26106d53660046129c0565b6116c5565b6102d26106e83660046129c0565b611703565b6106836106fb3660046129c0565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102aa61072a366004612f2e565b611777565b6102d261073d3660046129c0565b60016020525f908152604090205481565b6102d261075c366004612f62565b6119c0565b6102d261076f3660046129c0565b60086020525f908152604090205481565b6102aa61078e366004612ffa565b611c64565b6102d26107a1366004613054565b611cdd565b6102826107b4366004612b1d565b611de3565b6102826107c73660046129c0565b60096020525f908152604090205460ff1681565b6102aa6107e93660046129c0565b611f80565b6102aa6107fc3660046130db565b612082565b600754610341906001600160a01b031681565b6102aa610822366004613110565b6122a9565b5f600119610834836116c5565b1492915050565b84610845816115d5565b61086257604051636030e5f560e11b815260040160405180910390fd5b84515f03610883576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a3f57610936838c83815181106108db576108db613146565b60200260200101518a84815181106108f5576108f5613146565b60200260200101518c858151811061090f5761090f613146565b60200260200101518e868151811061092957610929613146565b60200260200101516123ca565b610953576040516303a479f160e11b815260040160405180910390fd5b61095d858561316e565b93506109b98c8386898e868151811061097857610978613146565b60200260200101518e878151811061099257610992613146565b60200260200101518e88815181106109ac576109ac613146565b6020026020010151612407565b80975081955050508881815181106109d3576109d3613146565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a1057610a03602886613181565b610a0d90866131a0565b94505b8a8181518110610a2257610a22613146565b602002602001015192508080610a37906131b3565b9150506108bc565b8215610a8157610a508c87866124d3565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610abc565b610a958c87610a90888861316e565b6124d3565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610b1d5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b4f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b8857504263ffffffff168163ffffffff1611155b15610ba65760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610bde57504263ffffffff168163ffffffff16115b15610bfc5760405163079994c560e31b815260040160405180910390fd5b610c0584612553565b5f8581526003602081905260409091200154610c2290859061316e565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c7391899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8d816115d5565b610caa57604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610cd757604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d135760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d5557604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d8657604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dca57604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b875182101561108a575f888381518110610e0b57610e0b613146565b602002602001015190505f888481518110610e2857610e28613146565b602002602001015190505f816001600160401b03811115610e4b57610e4b6129d7565b604051908082528060200260200182016040528015610e74578160200160208202803683370190505b5090505f826001600160401b03811115610e9057610e906129d7565b604051908082528060200260200182016040528015610eb9578160200160208202803683370190505b5090505f836001600160401b03811115610ed557610ed56129d7565b604051908082528060200260200182016040528015610efe578160200160208202803683370190505b5090505f846001600160401b03811115610f1a57610f1a6129d7565b604051908082528060200260200182016040528015610f43578160200160208202803683370190505b5090505f5b85811015611063578c8881518110610f6257610f62613146565b6020026020010151858281518110610f7c57610f7c613146565b6020026020010181815250508b8881518110610f9a57610f9a613146565b6020026020010151848281518110610fb457610fb4613146565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fe657610fe6613146565b602002602001015183828151811061100057611000613146565b60200260200101818152505089888151811061101e5761101e613146565b602002602001015182828151811061103857611038613146565b60209081029190910101528761104d816131b3565b985050808061105b906131b3565b915050610f48565b611070878686868661083b565b505050505050508180611082906131b3565b925050610def565b6110926112bd565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110dc5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561110e576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061114757504263ffffffff168163ffffffff1611155b156111655760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061119d57504263ffffffff168163ffffffff16115b156111bb5760405163079994c560e31b815260040160405180910390fd5b8684805f036111dd57604051635de374cf60e11b815260040160405180910390fd5b5f828152600360205260408120600601549081900361122c575f838152600360205260409020600701548210156112275760405163291784d560e01b815260040160405180910390fd5b611257565b6112378160026131cb565b821015611257576040516328eecafb60e21b815260040160405180910390fd5b89888015611290575f828152600360205260409020600601548110156112905760405163f6631e6760e01b815260040160405180910390fd5b61129989612553565b6112a58c8c338c61264b565b6112af8c8c612712565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611322573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134691906131e2565b61134e575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113dd82612553565b5f89815260016020526040812054900361140a5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161142093929190613223565b6040516020818303038152906040528051906020012090505f8189898730338b604051602001611456979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516114b597969594939291906132df565b60405180910390a46114cc81838b8b8b8a8a612778565b9a9950505050505050505050565b5f8681526001602052604081205481036115075760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161151d93929190613223565b6040516020818303038152906040528051906020012090505f8187875f303389604051602001611553979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115b297969594939291906132df565b60405180910390a46115c981838989895f80612778565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561161157505f8163ffffffff16115b801561162957504263ffffffff168163ffffffff1611155b9392505050565b5f8054808252600160209081526040808420439055516116529185910161332e565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906116a8908790613349565b60405180910390a36116bb81600161316e565b5f5590505b919050565b5f816116d0816115d5565b6116ed57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f8061170e836116c5565b905060028101611771575f83815260086020526040902054806117445760405163079442c960e01b815260040160405180910390fd5b61174d816116c5565b91506002820161176f5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036117b75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156117e9576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061182257504263ffffffff168163ffffffff1611155b156118405760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061187857504263ffffffff168163ffffffff16115b156118965760405163079994c560e31b815260040160405180910390fd5b8784805f036118b857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611907575f838152600360205260409020600701548210156119025760405163291784d560e01b815260040160405180910390fd5b611932565b6119128160026131cb565b821015611932576040516328eecafb60e21b815260040160405180910390fd5b8a89801561196b575f8281526003602052604090206006015481101561196b5760405163f6631e6760e01b815260040160405180910390fd5b61197489612553565b6001600160a01b038a1661199b57604051630ca6549f60e11b815260040160405180910390fd5b6119a78d8d8c8c61264b565b6119b18d8d612712565b50505050505050505050505050565b5f6119ca83610827565b6119e757604051631f45e42760e11b815260040160405180910390fd5b5f8a878b6040516020016119fd93929190613223565b60408051601f1981840301815291815281516020928301205f87815260039093529120549091508114611a43576040516349923ed160e11b815260040160405180910390fd5b5f848152600360205260409020600101546001600160a01b038a8116911614611a7f5760405163611876b160e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff898116600160c01b9092041614611abf57604051635f4c19f760e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff888116600160a01b9092041614611aff57604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600360205260409020600701548514611b2f57604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b5e5760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bb157611b7c82610827565b611b9957604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bc28e8e8e8e8e8e8e8d6113d3565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560039182905280832082015486845292200154919250611c099161316e565b5f828152600360208190526040808320820193909355848252828220018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611c8b919085908590856123ca565b611ca8576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611cc55784611cc7565b815b9050611cd48787836122a9565b50505050505050565b5f611ce782612553565b5f888152600160205260408120549003611d145760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d2a93929190613223565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611d60979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611dbf97969594939291906132df565b60405180910390a4611dd681838a8a8a5f8a612778565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611e225760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611e5b57504263ffffffff168163ffffffff1611155b15611e795760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611eb157504263ffffffff168163ffffffff16115b15611ecf5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611ef3575080885114155b80611eff575080875114155b15611f0e575f95505050611f74565b5f5b81811015611f6c57611f2e838c83815181106108db576108db613146565b611f3d575f9650505050611f74565b8a8181518110611f4f57611f4f613146565b602002602001015192508080611f64906131b3565b915050611f10565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611fbb57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611fee5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff191690556001015461202290600160c01b900463ffffffff164261335b565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b031633146120bd57604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120fd5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561212f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061216857504263ffffffff168163ffffffff1611155b156121865760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906121be57504263ffffffff168163ffffffff16115b156121dc5760405163079994c560e31b815260040160405180910390fd5b86858015612215575f828152600360205260409020600601548110156122155760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16612250576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b031633146122e457604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166123175760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b03831661233e576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556123919086908690869061264b565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123e4959493929190613378565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036124c4576001600160a01b038616612481578495505f60035f8b81526020019081526020015f206003015411801561244657506001198814155b1561247c5761246a898760035f8d81526020019081526020015f20600301546124d3565b5f898152600360208190526040822001555b6124c4565b856001600160a01b0316856001600160a01b0316146124c4575f848810156124a957876124ab565b845b90506124bc8a88610a90848c6131a0565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152600660205260409020546124f690829061316e565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906125469085815260200190565b60405180910390a3505050565b805f0361255d5750565b335f9081526006602052604090205480156125b2578181106125965761258382826131a0565b335f908152600660205260409020555050565b6125a081836131a0565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612606573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262a91906131e2565b61264757604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161267392879186918891879101613378565b6040516020818303038152906040528051906020012090505f8211156126a7575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c73565b5f828152600360205260409020600481018290556001015461274190600160c01b900463ffffffff164261335b565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156127b9576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036127df5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061280957604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061282b5750336001600160a01b03881614155b156128b3576001600160a01b0387165f90815260056020526040902054808210156128695760405163d72564c760e01b815260040160405180910390fd5b61287381836131a0565b6001600160a01b0389165f9081526006602052604090205490925061289990829061316e565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561295f575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156129b5575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906129ac9087815260200190565b60405180910390a25b505050505050505050565b5f602082840312156129d0575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a1357612a136129d7565b604052919050565b5f6001600160401b03821115612a3357612a336129d7565b5060051b60200190565b5f82601f830112612a4c575f80fd5b81356020612a61612a5c83612a1b565b6129eb565b82815260059290921b84018101918181019086841115612a7f575f80fd5b8286015b84811015612a9a5780358352918301918301612a83565b509695505050505050565b6001600160a01b0381168114612ab9575f80fd5b50565b5f82601f830112612acb575f80fd5b81356020612adb612a5c83612a1b565b82815260059290921b84018101918181019086841115612af9575f80fd5b8286015b84811015612a9a578035612b1081612aa5565b8352918301918301612afd565b5f805f805f60a08688031215612b31575f80fd5b8535945060208601356001600160401b0380821115612b4e575f80fd5b612b5a89838a01612a3d565b95506040880135915080821115612b6f575f80fd5b612b7b89838a01612abc565b94506060880135915080821115612b90575f80fd5b612b9c89838a01612a3d565b93506080880135915080821115612bb1575f80fd5b50612bbe88828901612a3d565b9150509295509295909350565b5f8060408385031215612bdc575f80fd5b50508035926020909101359150565b803563ffffffff811681146116c0575f80fd5b5f805f805f60a08688031215612c12575f80fd5b85359450602086013593506040860135612c2b81612aa5565b9250612c3960608701612beb565b949793965091946080013592915050565b5f60208284031215612c5a575f80fd5b813561162981612aa5565b5f805f805f8060c08789031215612c7a575f80fd5b86356001600160401b0380821115612c90575f80fd5b612c9c8a838b01612a3d565b97506020890135915080821115612cb1575f80fd5b612cbd8a838b01612a3d565b96506040890135915080821115612cd2575f80fd5b612cde8a838b01612a3d565b95506060890135915080821115612cf3575f80fd5b612cff8a838b01612abc565b94506080890135915080821115612d14575f80fd5b612d208a838b01612a3d565b935060a0890135915080821115612d35575f80fd5b50612d4289828a01612a3d565b9150509295509295509295565b5f805f8060808587031215612d62575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612d8d575f80fd5b81356001600160401b03811115612da657612da66129d7565b612db9601f8201601f19166020016129eb565b818152846020838601011115612dcd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e01575f80fd5b8835975060208901356001600160401b03811115612e1d575f80fd5b612e298b828c01612d7e565b9750506040890135612e3a81612aa5565b9550612e4860608a01612beb565b9450612e5660808a01612beb565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612e8d575f80fd5b8635955060208701356001600160401b03811115612ea9575f80fd5b612eb589828a01612d7e565b9550506040870135612ec681612aa5565b9350612ed460608801612beb565b9250612ee260808801612beb565b915060a087013590509295509295509295565b5f60208284031215612f05575f80fd5b81356001600160401b03811115612f1a575f80fd5b612f2684828501612d7e565b949350505050565b5f805f805f60a08688031215612f42575f80fd5b8535945060208601359350604086013592506060860135612c3981612aa5565b5f805f805f805f805f6101208a8c031215612f7b575f80fd5b8935985060208a01356001600160401b03811115612f97575f80fd5b612fa38c828d01612d7e565b98505060408a0135612fb481612aa5565b9650612fc260608b01612beb565b9550612fd060808b01612beb565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c0878903121561300f575f80fd5b8635955060208701359450604087013561302881612aa5565b9350606087013592506080870135915060a087013561304681612aa5565b809150509295509295509295565b5f805f805f805f60e0888a03121561306a575f80fd5b8735965060208801356001600160401b03811115613086575f80fd5b6130928a828b01612d7e565b96505060408801356130a381612aa5565b94506130b160608901612beb565b93506130bf60808901612beb565b925060a0880135915060c0880135905092959891949750929550565b5f805f606084860312156130ed575f80fd5b8335925060208401356130ff81612aa5565b929592945050506040919091013590565b5f805f60608486031215613122575f80fd5b8335925060208401359150604084013561313b81612aa5565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156117715761177161315a565b5f8261319b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156117715761177161315a565b5f600182016131c4576131c461315a565b5060010190565b80820281158282048414176117715761177161315a565b5f602082840312156131f2575f80fd5b81518015158114611629575f80fd5b5f5b8381101561321b578181015183820152602001613203565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f825161324c816024850160208701613201565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526132cb816020860160208601613201565b601f01601f19169290920160200192915050565b87815260e060208201525f6132f760e08301896132b4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f825161333f818460208701613201565b9190910192915050565b602081525f61162960208301846132b4565b63ffffffff81811683821601908082111561176f5761176f61315a565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea26469706673582212208237b83b7802d1ef0c78a2bee6867c5ab272abf146868eac98ca863b9453e61364736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b506200001e62000024565b62000213565b620000486040518060600160405280603f815260200162003666603f9139620000df565b506200006d6040518060800160405280604f815260200162003742604f9139620000df565b50620000926040518060800160405280605a8152602001620036e8605a9139620000df565b50620000b76040518060800160405280605c81526020016200360a605c9139620000df565b50620000dc604051806080016040528060438152602001620036a560439139620000df565b50565b5f80548082526001602090815260408084204390555162000103918591016200019c565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200015b908790620001b9565b60405180910390a362000170816001620001ed565b5f5592915050565b5f5b83811015620001945781810151838201526020016200017a565b50505f910152565b5f8251620001af81846020870162000178565b9190910192915050565b602081525f8251806020840152620001d981604085016020870162000178565b601f01601f19169190910160400192915050565b808201808211156200020d57634e487b7160e01b5f52601160045260245ffd5b92915050565b6133e980620002215f395ff3fe608060405234801561000f575f80fd5b506004361061026b575f3560e01c806383bf46091161014b578063bf53b188116100bf578063e12891d411610084578063e12891d4146107a6578063e83bfb58146107b9578063ebbdd2b0146107db578063f6a94ecb146107ee578063fc0c546a14610801578063fe92049d14610814575f80fd5b8063bf53b1881461074e578063c081d8a314610761578063d09cc57e146106c7578063d44e293c14610780578063d4876b9f14610793575f80fd5b80639f1025c6116101105780639f1025c614610698578063a462fb7b146106c7578063ab5a4e35146106da578063acae8f4e146106ed578063b8eaa9801461071c578063bc5256521461072f575f80fd5b806383bf4609146105125780638d552d4614610525578063924532fb1461054757806395addb901461056c5780639e63fa6a14610654575f80fd5b8063484c0714116101e2578063590158a7116101a7578063590158a71461042f5780636fa427421461048c57806370a08231146104ab578063762c38fd146104ca5780637f8d429e146104dd57806382ffa9f7146104f0575f80fd5b8063484c0714146103a95780634df6ca2a146103cb5780634e60f883146103de57806351577ea9146103fd57806352debac31461041c575f80fd5b80632417395c116102335780632417395c146102f35780632518904c1461031657806326d6c97b1461035957806328828b1e1461037b5780632f998a6f1461038e5780633ccfd60b146103a1575f80fd5b806306c3b67a1461026f5780631101a0fd14610297578063128b7a47146102ac57806312a203c3146102bf578063144fa6d7146102e0575b5f80fd5b61028261027d3660046129c0565b610827565b60405190151581526020015b60405180910390f35b6102aa6102a5366004612b1d565b61083b565b005b6102aa6102ba366004612bcb565b610add565b6102d26102cd366004612bfe565b610c82565b60405190815260200161028e565b6102aa6102ee366004612c4a565b610da0565b6102d26103013660046129c0565b5f908152600360208190526040909120015490565b6103416103243660046129c0565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161028e565b6102d26103673660046129c0565b5f9081526003602052604090206006015490565b6102aa610389366004612c65565b610dec565b6102aa61039c366004612d4f565b61109c565b6102aa6112bd565b6102d26103b73660046129c0565b5f9081526003602052604090206007015490565b6102aa6103d93660046129c0565b611386565b6102d26103ec3660046129c0565b60026020525f908152604090205481565b6102d261040b3660046129c0565b5f9081526003602052604090205490565b6102d261042a366004612de9565b6113d3565b61046761043d3660046129c0565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161028e565b6102d261049a366004612c4a565b60056020525f908152604090205481565b6102d26104b9366004612c4a565b60066020525f908152604090205481565b6102d26104d8366004612e78565b6114da565b6102826104eb3660046129c0565b6115d5565b6102d26104fe3660046129c0565b5f9081526003602052604090206005015490565b6102d2610520366004612ef5565b611630565b6102d26105333660046129c0565b5f9081526003602052604090206004015490565b6102826105553660046129c0565b5f9081526003602052604090206002015460ff1690565b6105ed61057a3660046129c0565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161028e565b6106836106623660046129c0565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161028e565b6106836106a63660046129c0565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b6102d26106d53660046129c0565b6116c5565b6102d26106e83660046129c0565b611703565b6106836106fb3660046129c0565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b6102aa61072a366004612f2e565b611777565b6102d261073d3660046129c0565b60016020525f908152604090205481565b6102d261075c366004612f62565b6119c0565b6102d261076f3660046129c0565b60086020525f908152604090205481565b6102aa61078e366004612ffa565b611c64565b6102d26107a1366004613054565b611cdd565b6102826107b4366004612b1d565b611de3565b6102826107c73660046129c0565b60096020525f908152604090205460ff1681565b6102aa6107e93660046129c0565b611f80565b6102aa6107fc3660046130db565b612082565b600754610341906001600160a01b031681565b6102aa610822366004613110565b6122a9565b5f600119610834836116c5565b1492915050565b84610845816115d5565b61086257604051636030e5f560e11b815260040160405180910390fd5b84515f03610883576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a51811015610a3f57610936838c83815181106108db576108db613146565b60200260200101518a84815181106108f5576108f5613146565b60200260200101518c858151811061090f5761090f613146565b60200260200101518e868151811061092957610929613146565b60200260200101516123ca565b610953576040516303a479f160e11b815260040160405180910390fd5b61095d858561316e565b93506109b98c8386898e868151811061097857610978613146565b60200260200101518e878151811061099257610992613146565b60200260200101518e88815181106109ac576109ac613146565b6020026020010151612407565b80975081955050508881815181106109d3576109d3613146565b6020026020010151945060035f8d81526020019081526020015f20600601548514610a1057610a03602886613181565b610a0d90866131a0565b94505b8a8181518110610a2257610a22613146565b602002602001015192508080610a37906131b3565b9150506108bc565b8215610a8157610a508c87866124d3565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b038816178155600101859055610abc565b610a958c87610a90888861316e565b6124d3565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610b1d5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610b4f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610b8857504263ffffffff168163ffffffff1611155b15610ba65760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610bde57504263ffffffff168163ffffffff16115b15610bfc5760405163079994c560e31b815260040160405180910390fd5b610c0584612553565b5f8581526003602081905260409091200154610c2290859061316e565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610c7391899190918252602082015260400190565b60405180910390a35050505050565b5f85610c8d816115d5565b610caa57604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610cd757604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610d135760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610d5557604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610d8657604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610dca57604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b875182101561108a575f888381518110610e0b57610e0b613146565b602002602001015190505f888481518110610e2857610e28613146565b602002602001015190505f816001600160401b03811115610e4b57610e4b6129d7565b604051908082528060200260200182016040528015610e74578160200160208202803683370190505b5090505f826001600160401b03811115610e9057610e906129d7565b604051908082528060200260200182016040528015610eb9578160200160208202803683370190505b5090505f836001600160401b03811115610ed557610ed56129d7565b604051908082528060200260200182016040528015610efe578160200160208202803683370190505b5090505f846001600160401b03811115610f1a57610f1a6129d7565b604051908082528060200260200182016040528015610f43578160200160208202803683370190505b5090505f5b85811015611063578c8881518110610f6257610f62613146565b6020026020010151858281518110610f7c57610f7c613146565b6020026020010181815250508b8881518110610f9a57610f9a613146565b6020026020010151848281518110610fb457610fb4613146565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610fe657610fe6613146565b602002602001015183828151811061100057611000613146565b60200260200101818152505089888151811061101e5761101e613146565b602002602001015182828151811061103857611038613146565b60209081029190910101528761104d816131b3565b985050808061105b906131b3565b915050610f48565b611070878686868661083b565b505050505050508180611082906131b3565b925050610def565b6110926112bd565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110dc5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561110e576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061114757504263ffffffff168163ffffffff1611155b156111655760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061119d57504263ffffffff168163ffffffff16115b156111bb5760405163079994c560e31b815260040160405180910390fd5b8684805f036111dd57604051635de374cf60e11b815260040160405180910390fd5b5f828152600360205260408120600601549081900361122c575f838152600360205260409020600701548210156112275760405163291784d560e01b815260040160405180910390fd5b611257565b6112378160026131cb565b821015611257576040516328eecafb60e21b815260040160405180910390fd5b89888015611290575f828152600360205260409020600601548110156112905760405163f6631e6760e01b815260040160405180910390fd5b61129989612553565b6112a58c8c338c61264b565b6112af8c8c612712565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611322573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134691906131e2565b61134e575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f6113dd82612553565b5f89815260016020526040812054900361140a5760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161142093929190613223565b6040516020818303038152906040528051906020012090505f8189898730338b604051602001611456979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516114b597969594939291906132df565b60405180910390a46114cc81838b8b8b8a8a612778565b9a9950505050505050505050565b5f8681526001602052604081205481036115075760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161151d93929190613223565b6040516020818303038152906040528051906020012090505f8187875f303389604051602001611553979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516115b297969594939291906132df565b60405180910390a46115c981838989895f80612778565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561161157505f8163ffffffff16115b801561162957504263ffffffff168163ffffffff1611155b9392505050565b5f8054808252600160209081526040808420439055516116529185910161332e565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906116a8908790613349565b60405180910390a36116bb81600161316e565b5f5590505b919050565b5f816116d0816115d5565b6116ed57604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f8061170e836116c5565b905060028101611771575f83815260086020526040902054806117445760405163079442c960e01b815260040160405180910390fd5b61174d816116c5565b91506002820161176f5760405162a5c78160e11b815260040160405180910390fd5b505b92915050565b5f858152600360205260408120600101548691600160c01b90910463ffffffff1690036117b75760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156117e9576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061182257504263ffffffff168163ffffffff1611155b156118405760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061187857504263ffffffff168163ffffffff16115b156118965760405163079994c560e31b815260040160405180910390fd5b8784805f036118b857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611907575f838152600360205260409020600701548210156119025760405163291784d560e01b815260040160405180910390fd5b611932565b6119128160026131cb565b821015611932576040516328eecafb60e21b815260040160405180910390fd5b8a89801561196b575f8281526003602052604090206006015481101561196b5760405163f6631e6760e01b815260040160405180910390fd5b61197489612553565b6001600160a01b038a1661199b57604051630ca6549f60e11b815260040160405180910390fd5b6119a78d8d8c8c61264b565b6119b18d8d612712565b50505050505050505050505050565b5f6119ca83610827565b6119e757604051631f45e42760e11b815260040160405180910390fd5b5f8a878b6040516020016119fd93929190613223565b60408051601f1981840301815291815281516020928301205f87815260039093529120549091508114611a43576040516349923ed160e11b815260040160405180910390fd5b5f848152600360205260409020600101546001600160a01b038a8116911614611a7f5760405163611876b160e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff898116600160c01b9092041614611abf57604051635f4c19f760e01b815260040160405180910390fd5b5f8481526003602052604090206001015463ffffffff888116600160a01b9092041614611aff57604051630a5ab81d60e41b815260040160405180910390fd5b5f848152600360205260409020600701548514611b2f57604051633246892f60e01b815260040160405180910390fd5b5f8481526009602052604090205460ff1615611b5e5760405163331c2c3f60e11b815260040160405180910390fd5b5f84815260086020526040902054848115611bb157611b7c82610827565b611b9957604051634ec30c8560e01b815260040160405180910390fd5b505f818152600960205260409020805460ff19169055805b5f611bc28e8e8e8e8e8e8e8d6113d3565b5f88815260086020908152604080832084905583835260098252808320805460ff1916600117905560039182905280832082015486845292200154919250611c099161316e565b5f828152600360208190526040808320820193909355848252828220018190559051889183917f32e7d5617fb1be6bd0e7c3974d438d4514c4cf349e9330691d8abf6f6fd431219190a39d9c50505050505050505050505050565b5f8681526003602052604090206005810154600690910154611c8b919085908590856123ca565b611ca8576040516303a479f160e11b815260040160405180910390fd5b5f868152600360205260408120600401548614611cc55784611cc7565b815b9050611cd48787836122a9565b50505050505050565b5f611ce782612553565b5f888152600160205260408120549003611d145760405163bbbf712b60e01b815260040160405180910390fd5b5f888589604051602001611d2a93929190613223565b6040516020818303038152906040528051906020012090505f8188885f30338a604051602001611d60979695949392919061325b565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d42604051611dbf97969594939291906132df565b60405180910390a4611dd681838a8a8a5f8a612778565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611e225760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611e5b57504263ffffffff168163ffffffff1611155b15611e795760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611eb157504263ffffffff168163ffffffff16115b15611ecf5760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611ef3575080885114155b80611eff575080875114155b15611f0e575f95505050611f74565b5f5b81811015611f6c57611f2e838c83815181106108db576108db613146565b611f3d575f9650505050611f74565b8a8181518110611f4f57611f4f613146565b602002602001015192508080611f64906131b3565b915050611f10565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611fbb57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611fee5760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff191690556001015461202290600160c01b900463ffffffff164261335b565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b031633146120bd57604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036120fd5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff161561212f576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061216857504263ffffffff168163ffffffff1611155b156121865760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906121be57504263ffffffff168163ffffffff16115b156121dc5760405163079994c560e31b815260040160405180910390fd5b86858015612215575f828152600360205260409020600601548110156122155760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16612250576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b031633146122e457604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff166123175760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b03831661233e576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff191690556123919086908690869061264b565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f6040516020016123e4959493929190613378565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036124c4576001600160a01b038616612481578495505f60035f8b81526020019081526020015f206003015411801561244657506001198814155b1561247c5761246a898760035f8d81526020019081526020015f20600301546124d3565b5f898152600360208190526040822001555b6124c4565b856001600160a01b0316856001600160a01b0316146124c4575f848810156124a957876124ab565b845b90506124bc8a88610a90848c6131a0565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f908152600660205260409020546124f690829061316e565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906125469085815260200190565b60405180910390a3505050565b805f0361255d5750565b335f9081526006602052604090205480156125b2578181106125965761258382826131a0565b335f908152600660205260409020555050565b6125a081836131a0565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612606573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262a91906131e2565b61264757604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161267392879186918891879101613378565b6040516020818303038152906040528051906020012090505f8211156126a7575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610c73565b5f828152600360205260409020600481018290556001015461274190600160c01b900463ffffffff164261335b565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156127b9576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036127df5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061280957604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061282b5750336001600160a01b03881614155b156128b3576001600160a01b0387165f90815260056020526040902054808210156128695760405163d72564c760e01b815260040160405180910390fd5b61287381836131a0565b6001600160a01b0389165f9081526006602052604090205490925061289990829061316e565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561295f575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156129b5575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906129ac9087815260200190565b60405180910390a25b505050505050505050565b5f602082840312156129d0575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a1357612a136129d7565b604052919050565b5f6001600160401b03821115612a3357612a336129d7565b5060051b60200190565b5f82601f830112612a4c575f80fd5b81356020612a61612a5c83612a1b565b6129eb565b82815260059290921b84018101918181019086841115612a7f575f80fd5b8286015b84811015612a9a5780358352918301918301612a83565b509695505050505050565b6001600160a01b0381168114612ab9575f80fd5b50565b5f82601f830112612acb575f80fd5b81356020612adb612a5c83612a1b565b82815260059290921b84018101918181019086841115612af9575f80fd5b8286015b84811015612a9a578035612b1081612aa5565b8352918301918301612afd565b5f805f805f60a08688031215612b31575f80fd5b8535945060208601356001600160401b0380821115612b4e575f80fd5b612b5a89838a01612a3d565b95506040880135915080821115612b6f575f80fd5b612b7b89838a01612abc565b94506060880135915080821115612b90575f80fd5b612b9c89838a01612a3d565b93506080880135915080821115612bb1575f80fd5b50612bbe88828901612a3d565b9150509295509295909350565b5f8060408385031215612bdc575f80fd5b50508035926020909101359150565b803563ffffffff811681146116c0575f80fd5b5f805f805f60a08688031215612c12575f80fd5b85359450602086013593506040860135612c2b81612aa5565b9250612c3960608701612beb565b949793965091946080013592915050565b5f60208284031215612c5a575f80fd5b813561162981612aa5565b5f805f805f8060c08789031215612c7a575f80fd5b86356001600160401b0380821115612c90575f80fd5b612c9c8a838b01612a3d565b97506020890135915080821115612cb1575f80fd5b612cbd8a838b01612a3d565b96506040890135915080821115612cd2575f80fd5b612cde8a838b01612a3d565b95506060890135915080821115612cf3575f80fd5b612cff8a838b01612abc565b94506080890135915080821115612d14575f80fd5b612d208a838b01612a3d565b935060a0890135915080821115612d35575f80fd5b50612d4289828a01612a3d565b9150509295509295509295565b5f805f8060808587031215612d62575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f830112612d8d575f80fd5b81356001600160401b03811115612da657612da66129d7565b612db9601f8201601f19166020016129eb565b818152846020838601011115612dcd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e01575f80fd5b8835975060208901356001600160401b03811115612e1d575f80fd5b612e298b828c01612d7e565b9750506040890135612e3a81612aa5565b9550612e4860608a01612beb565b9450612e5660808a01612beb565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612e8d575f80fd5b8635955060208701356001600160401b03811115612ea9575f80fd5b612eb589828a01612d7e565b9550506040870135612ec681612aa5565b9350612ed460608801612beb565b9250612ee260808801612beb565b915060a087013590509295509295509295565b5f60208284031215612f05575f80fd5b81356001600160401b03811115612f1a575f80fd5b612f2684828501612d7e565b949350505050565b5f805f805f60a08688031215612f42575f80fd5b8535945060208601359350604086013592506060860135612c3981612aa5565b5f805f805f805f805f6101208a8c031215612f7b575f80fd5b8935985060208a01356001600160401b03811115612f97575f80fd5b612fa38c828d01612d7e565b98505060408a0135612fb481612aa5565b9650612fc260608b01612beb565b9550612fd060808b01612beb565b989b979a50959894979660a0860135965060c08601359560e0810135955061010001359350915050565b5f805f805f8060c0878903121561300f575f80fd5b8635955060208701359450604087013561302881612aa5565b9350606087013592506080870135915060a087013561304681612aa5565b809150509295509295509295565b5f805f805f805f60e0888a03121561306a575f80fd5b8735965060208801356001600160401b03811115613086575f80fd5b6130928a828b01612d7e565b96505060408801356130a381612aa5565b94506130b160608901612beb565b93506130bf60808901612beb565b925060a0880135915060c0880135905092959891949750929550565b5f805f606084860312156130ed575f80fd5b8335925060208401356130ff81612aa5565b929592945050506040919091013590565b5f805f60608486031215613122575f80fd5b8335925060208401359150604084013561313b81612aa5565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156117715761177161315a565b5f8261319b57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156117715761177161315a565b5f600182016131c4576131c461315a565b5060010190565b80820281158282048414176117715761177161315a565b5f602082840312156131f2575f80fd5b81518015158114611629575f80fd5b5f5b8381101561321b578181015183820152602001613203565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f825161324c816024850160208701613201565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f81518084526132cb816020860160208601613201565b601f01601f19169290920160200192915050565b87815260e060208201525f6132f760e08301896132b4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f825161333f818460208701613201565b9190910192915050565b602081525f61162960208301846132b4565b63ffffffff81811683821601908082111561176f5761176f61315a565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220eae23dea96ba95073082077c59ce0243d2d91f07faad6de25ea8bddff27962ac64736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -1 +1 @@
1
- 60806040525f805534801562000013575f80fd5b50620000386040518060600160405280603f8152602001620031ee603f9139620000d3565b506200005d6040518060800160405280604f8152602001620032ca604f9139620000d3565b50620000826040518060800160405280605a815260200162003270605a9139620000d3565b50620000a76040518060800160405280605c815260200162003192605c9139620000d3565b50620000cc6040518060800160405280604381526020016200322d60439139620000d3565b5062000207565b5f805480825260016020908152604080842043905551620000f79185910162000190565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200014f908790620001ad565b60405180910390a362000164816001620001e1565b5f5592915050565b5f5b83811015620001885781810151838201526020016200016e565b50505f910152565b5f8251620001a38184602087016200016c565b9190910192915050565b602081525f8251806020840152620001cd8160408501602087016200016c565b601f01601f19169190910160400192915050565b808201808211156200020157634e487b7160e01b5f52601160045260245ffd5b92915050565b612f7d80620002155f395ff3fe608060405234801561000f575f80fd5b5060043610610234575f3560e01c80637f8d429e11610135578063b8eaa980116100b4578063e12891d411610079578063e12891d414610717578063ebbdd2b01461072a578063f6a94ecb1461073d578063fc0c546a14610750578063fe92049d14610763575f80fd5b8063b8eaa980146106bf578063bc525652146106d2578063d09cc57e1461067d578063d44e293c146106f1578063d4876b9f14610704575f80fd5b806395addb90116100fa57806395addb90146105225780639e63fa6a1461060a5780639f1025c61461064e578063a462fb7b1461067d578063acae8f4e14610690575f80fd5b80637f8d429e1461048357806382ffa9f7146104a657806383bf4609146104c85780638d552d46146104db578063924532fb146104fd575f80fd5b80633ccfd60b116101c157806352debac31161018657806352debac3146103c2578063590158a7146103d55780636fa427421461043257806370a0823114610451578063762c38fd14610470575f80fd5b80633ccfd60b14610347578063484c07141461034f5780634df6ca2a146103715780634e60f8831461038457806351577ea9146103a3575f80fd5b80632417395c116102075780632417395c146102995780632518904c146102bc57806326d6c97b146102ff57806328828b1e146103215780632f998a6f14610334575f80fd5b80631101a0fd14610238578063128b7a471461024d57806312a203c314610260578063144fa6d714610286575b5f80fd5b61024b610246366004612725565b610776565b005b61024b61025b3660046127d3565b610a18565b61027361026e366004612806565b610bbd565b6040519081526020015b60405180910390f35b61024b610294366004612852565b610cdb565b6102736102a736600461286d565b5f908152600360208190526040909120015490565b6102e76102ca36600461286d565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161027d565b61027361030d36600461286d565b5f9081526003602052604090206006015490565b61024b61032f366004612884565b610d27565b61024b61034236600461296e565b610fd7565b61024b6111f8565b61027361035d36600461286d565b5f9081526003602052604090206007015490565b61024b61037f36600461286d565b6112c1565b61027361039236600461286d565b60026020525f908152604090205481565b6102736103b136600461286d565b5f9081526003602052604090205490565b6102736103d0366004612a08565b61130e565b61040d6103e336600461286d565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161027d565b610273610440366004612852565b60056020525f908152604090205481565b61027361045f366004612852565b60066020525f908152604090205481565b61027361047e366004612a97565b611415565b61049661049136600461286d565b611510565b604051901515815260200161027d565b6102736104b436600461286d565b5f9081526003602052604090206005015490565b6102736104d6366004612b14565b61156b565b6102736104e936600461286d565b5f9081526003602052604090206004015490565b61049661050b36600461286d565b5f9081526003602052604090206002015460ff1690565b6105a361053036600461286d565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161027d565b61063961061836600461286d565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161027d565b61063961065c36600461286d565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b61027361068b36600461286d565b611600565b61063961069e36600461286d565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b61024b6106cd366004612b4d565b61163e565b6102736106e036600461286d565b60016020525f908152604090205481565b61024b6106ff366004612b81565b611887565b610273610712366004612bdb565b611900565b610496610725366004612725565b611a06565b61024b61073836600461286d565b611ba3565b61024b61074b366004612c62565b611ca5565b6007546102e7906001600160a01b031681565b61024b610771366004612c97565b611ecc565b8461078081611510565b61079d57604051636030e5f560e11b815260040160405180910390fd5b84515f036107be576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a5181101561097a57610871838c838151811061081657610816612ccd565b60200260200101518a848151811061083057610830612ccd565b60200260200101518c858151811061084a5761084a612ccd565b60200260200101518e868151811061086457610864612ccd565b6020026020010151611fed565b61088e576040516303a479f160e11b815260040160405180910390fd5b6108988585612cf5565b93506108f48c8386898e86815181106108b3576108b3612ccd565b60200260200101518e87815181106108cd576108cd612ccd565b60200260200101518e88815181106108e7576108e7612ccd565b602002602001015161202a565b809750819550505088818151811061090e5761090e612ccd565b6020026020010151945060035f8d81526020019081526020015f2060060154851461094b5761093e602886612d0e565b6109489086612d2d565b94505b8a818151811061095d5761095d612ccd565b60200260200101519250808061097290612d40565b9150506107f7565b82156109bc5761098b8c87866120f2565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b0388161781556001018590556109f7565b6109d08c876109cb8888612cf5565b6120f2565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610a585760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610a8a576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610ac357504263ffffffff168163ffffffff1611155b15610ae15760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610b1957504263ffffffff168163ffffffff16115b15610b375760405163079994c560e31b815260040160405180910390fd5b610b4084612172565b5f8581526003602081905260409091200154610b5d908590612cf5565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610bae91899190918252602082015260400190565b60405180910390a35050505050565b5f85610bc881611510565b610be557604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610c1257604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610c4e5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610c9057604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610cc157604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610d0557604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b8751821015610fc5575f888381518110610d4657610d46612ccd565b602002602001015190505f888481518110610d6357610d63612ccd565b602002602001015190505f816001600160401b03811115610d8657610d866125df565b604051908082528060200260200182016040528015610daf578160200160208202803683370190505b5090505f826001600160401b03811115610dcb57610dcb6125df565b604051908082528060200260200182016040528015610df4578160200160208202803683370190505b5090505f836001600160401b03811115610e1057610e106125df565b604051908082528060200260200182016040528015610e39578160200160208202803683370190505b5090505f846001600160401b03811115610e5557610e556125df565b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b5090505f5b85811015610f9e578c8881518110610e9d57610e9d612ccd565b6020026020010151858281518110610eb757610eb7612ccd565b6020026020010181815250508b8881518110610ed557610ed5612ccd565b6020026020010151848281518110610eef57610eef612ccd565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610f2157610f21612ccd565b6020026020010151838281518110610f3b57610f3b612ccd565b602002602001018181525050898881518110610f5957610f59612ccd565b6020026020010151828281518110610f7357610f73612ccd565b602090810291909101015287610f8881612d40565b9850508080610f9690612d40565b915050610e83565b610fab8786868686610776565b505050505050508180610fbd90612d40565b925050610d2a565b610fcd6111f8565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110175760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611049576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061108257504263ffffffff168163ffffffff1611155b156110a05760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906110d857504263ffffffff168163ffffffff16115b156110f65760405163079994c560e31b815260040160405180910390fd5b8684805f0361111857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611167575f838152600360205260409020600701548210156111625760405163291784d560e01b815260040160405180910390fd5b611192565b611172816002612d58565b821015611192576040516328eecafb60e21b815260040160405180910390fd5b898880156111cb575f828152600360205260409020600601548110156111cb5760405163f6631e6760e01b815260040160405180910390fd5b6111d489612172565b6111e08c8c338c61226a565b6111ea8c8c612331565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561125d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112819190612d6f565b611289575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61131882612172565b5f8981526001602052604081205490036113455760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161135b93929190612db0565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016113919796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516113f09796959493929190612e6c565b60405180910390a461140781838b8b8b8a8a612397565b9a9950505050505050505050565b5f8681526001602052604081205481036114425760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161145893929190612db0565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161148e9796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516114ed9796959493929190612e6c565b60405180910390a461150481838989895f80612397565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561154c57505f8163ffffffff16115b801561156457504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161158d91859101612ebb565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906115e3908790612ed6565b60405180910390a36115f6816001612cf5565b5f5590505b919050565b5f8161160b81611510565b61162857604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff16900361167e5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116b0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906116e957504263ffffffff168163ffffffff1611155b156117075760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061173f57504263ffffffff168163ffffffff16115b1561175d5760405163079994c560e31b815260040160405180910390fd5b8784805f0361177f57604051635de374cf60e11b815260040160405180910390fd5b5f82815260036020526040812060060154908190036117ce575f838152600360205260409020600701548210156117c95760405163291784d560e01b815260040160405180910390fd5b6117f9565b6117d9816002612d58565b8210156117f9576040516328eecafb60e21b815260040160405180910390fd5b8a898015611832575f828152600360205260409020600601548110156118325760405163f6631e6760e01b815260040160405180910390fd5b61183b89612172565b6001600160a01b038a1661186257604051630ca6549f60e11b815260040160405180910390fd5b61186e8d8d8c8c61226a565b6118788d8d612331565b50505050505050505050505050565b5f86815260036020526040902060058101546006909101546118ae91908590859085611fed565b6118cb576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146118e857846118ea565b815b90506118f7878783611ecc565b50505050505050565b5f61190a82612172565b5f8881526001602052604081205490036119375760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161194d93929190612db0565b6040516020818303038152906040528051906020012090505f8188885f30338a6040516020016119839796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516119e29796959493929190612e6c565b60405180910390a46119f981838a8a8a5f8a612397565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611a455760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611a7e57504263ffffffff168163ffffffff1611155b15611a9c5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ad457504263ffffffff168163ffffffff16115b15611af25760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611b16575080885114155b80611b22575080875114155b15611b31575f95505050611b97565b5f5b81811015611b8f57611b51838c838151811061081657610816612ccd565b611b60575f9650505050611b97565b8a8181518110611b7257611b72612ccd565b602002602001015192508080611b8790612d40565b915050611b33565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611bde57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611c115760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611c4590600160c01b900463ffffffff1642612ee8565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ce057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611d205760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611d52576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611d8b57504263ffffffff168163ffffffff1611155b15611da95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611de157504263ffffffff168163ffffffff16115b15611dff5760405163079994c560e31b815260040160405180910390fd5b86858015611e38575f82815260036020526040902060060154811015611e385760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611e73576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611f0757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611f3a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611f61576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611fb49086908690869061226a565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612007959493929190612f0c565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036120e3576001600160a01b0386166120a0578495505f60035f8b81526020019081526020015f2060030154118015612065575060015b1561209b57612089898760035f8d81526020019081526020015f20600301546120f2565b5f898152600360208190526040822001555b6120e3565b856001600160a01b0316856001600160a01b0316146120e3575f848810156120c857876120ca565b845b90506120db8a886109cb848c612d2d565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612115908290612cf5565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906121659085815260200190565b60405180910390a3505050565b805f0361217c5750565b335f9081526006602052604090205480156121d1578181106121b5576121a28282612d2d565b335f908152600660205260409020555050565b6121bf8183612d2d565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122499190612d6f565b61226657604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161229292879186918891879101612f0c565b6040516020818303038152906040528051906020012090505f8211156122c6575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610bae565b5f828152600360205260409020600481018290556001015461236090600160c01b900463ffffffff1642612ee8565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156123d8576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036123fe5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061242857604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061244a5750336001600160a01b03881614155b156124d2576001600160a01b0387165f90815260056020526040902054808210156124885760405163d72564c760e01b815260040160405180910390fd5b6124928183612d2d565b6001600160a01b0389165f908152600660205260409020549092506124b8908290612cf5565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561257e575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156125d4575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906125cb9087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561261b5761261b6125df565b604052919050565b5f6001600160401b0382111561263b5761263b6125df565b5060051b60200190565b5f82601f830112612654575f80fd5b8135602061266961266483612623565b6125f3565b82815260059290921b84018101918181019086841115612687575f80fd5b8286015b848110156126a2578035835291830191830161268b565b509695505050505050565b6001600160a01b03811681146126c1575f80fd5b50565b5f82601f8301126126d3575f80fd5b813560206126e361266483612623565b82815260059290921b84018101918181019086841115612701575f80fd5b8286015b848110156126a2578035612718816126ad565b8352918301918301612705565b5f805f805f60a08688031215612739575f80fd5b8535945060208601356001600160401b0380821115612756575f80fd5b61276289838a01612645565b95506040880135915080821115612777575f80fd5b61278389838a016126c4565b94506060880135915080821115612798575f80fd5b6127a489838a01612645565b935060808801359150808211156127b9575f80fd5b506127c688828901612645565b9150509295509295909350565b5f80604083850312156127e4575f80fd5b50508035926020909101359150565b803563ffffffff811681146115fb575f80fd5b5f805f805f60a0868803121561281a575f80fd5b85359450602086013593506040860135612833816126ad565b9250612841606087016127f3565b949793965091946080013592915050565b5f60208284031215612862575f80fd5b8135611564816126ad565b5f6020828403121561287d575f80fd5b5035919050565b5f805f805f8060c08789031215612899575f80fd5b86356001600160401b03808211156128af575f80fd5b6128bb8a838b01612645565b975060208901359150808211156128d0575f80fd5b6128dc8a838b01612645565b965060408901359150808211156128f1575f80fd5b6128fd8a838b01612645565b95506060890135915080821115612912575f80fd5b61291e8a838b016126c4565b94506080890135915080821115612933575f80fd5b61293f8a838b01612645565b935060a0890135915080821115612954575f80fd5b5061296189828a01612645565b9150509295509295509295565b5f805f8060808587031215612981575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f8301126129ac575f80fd5b81356001600160401b038111156129c5576129c56125df565b6129d8601f8201601f19166020016125f3565b8181528460208386010111156129ec575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612a20575f80fd5b8835975060208901356001600160401b03811115612a3c575f80fd5b612a488b828c0161299d565b9750506040890135612a59816126ad565b9550612a6760608a016127f3565b9450612a7560808a016127f3565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612aac575f80fd5b8635955060208701356001600160401b03811115612ac8575f80fd5b612ad489828a0161299d565b9550506040870135612ae5816126ad565b9350612af3606088016127f3565b9250612b01608088016127f3565b915060a087013590509295509295509295565b5f60208284031215612b24575f80fd5b81356001600160401b03811115612b39575f80fd5b612b458482850161299d565b949350505050565b5f805f805f60a08688031215612b61575f80fd5b8535945060208601359350604086013592506060860135612841816126ad565b5f805f805f8060c08789031215612b96575f80fd5b86359550602087013594506040870135612baf816126ad565b9350606087013592506080870135915060a0870135612bcd816126ad565b809150509295509295509295565b5f805f805f805f60e0888a031215612bf1575f80fd5b8735965060208801356001600160401b03811115612c0d575f80fd5b612c198a828b0161299d565b9650506040880135612c2a816126ad565b9450612c38606089016127f3565b9350612c46608089016127f3565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612c74575f80fd5b833592506020840135612c86816126ad565b929592945050506040919091013590565b5f805f60608486031215612ca9575f80fd5b83359250602084013591506040840135612cc2816126ad565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612d0857612d08612ce1565b92915050565b5f82612d2857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612d0857612d08612ce1565b5f60018201612d5157612d51612ce1565b5060010190565b8082028115828204841417612d0857612d08612ce1565b5f60208284031215612d7f575f80fd5b81518015158114611564575f80fd5b5f5b83811015612da8578181015183820152602001612d90565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612dd9816024850160208701612d8e565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612e58816020860160208601612d8e565b601f01601f19169290920160200192915050565b87815260e060208201525f612e8460e0830189612e41565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612ecc818460208701612d8e565b9190910192915050565b602081525f6115646020830184612e41565b63ffffffff818116838216019080821115612f0557612f05612ce1565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea264697066735822122050cdc8e428cfa640adcbb216d68fd5074772aa846c53a9b1acd6beb12f2a461464736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
1
+ 60806040525f805534801562000013575f80fd5b506200001e62000024565b62000213565b620000486040518060600160405280603f8152602001620031fa603f9139620000df565b506200006d6040518060800160405280604f8152602001620032d6604f9139620000df565b50620000926040518060800160405280605a81526020016200327c605a9139620000df565b50620000b76040518060800160405280605c81526020016200319e605c9139620000df565b50620000dc6040518060800160405280604381526020016200323960439139620000df565b50565b5f80548082526001602090815260408084204390555162000103918591016200019c565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906200015b908790620001b9565b60405180910390a362000170816001620001ed565b5f5592915050565b5f5b83811015620001945781810151838201526020016200017a565b50505f910152565b5f8251620001af81846020870162000178565b9190910192915050565b602081525f8251806020840152620001d981604085016020870162000178565b601f01601f19169190910160400192915050565b808201808211156200020d57634e487b7160e01b5f52601160045260245ffd5b92915050565b612f7d80620002215f395ff3fe608060405234801561000f575f80fd5b5060043610610234575f3560e01c80637f8d429e11610135578063b8eaa980116100b4578063e12891d411610079578063e12891d414610717578063ebbdd2b01461072a578063f6a94ecb1461073d578063fc0c546a14610750578063fe92049d14610763575f80fd5b8063b8eaa980146106bf578063bc525652146106d2578063d09cc57e1461067d578063d44e293c146106f1578063d4876b9f14610704575f80fd5b806395addb90116100fa57806395addb90146105225780639e63fa6a1461060a5780639f1025c61461064e578063a462fb7b1461067d578063acae8f4e14610690575f80fd5b80637f8d429e1461048357806382ffa9f7146104a657806383bf4609146104c85780638d552d46146104db578063924532fb146104fd575f80fd5b80633ccfd60b116101c157806352debac31161018657806352debac3146103c2578063590158a7146103d55780636fa427421461043257806370a0823114610451578063762c38fd14610470575f80fd5b80633ccfd60b14610347578063484c07141461034f5780634df6ca2a146103715780634e60f8831461038457806351577ea9146103a3575f80fd5b80632417395c116102075780632417395c146102995780632518904c146102bc57806326d6c97b146102ff57806328828b1e146103215780632f998a6f14610334575f80fd5b80631101a0fd14610238578063128b7a471461024d57806312a203c314610260578063144fa6d714610286575b5f80fd5b61024b610246366004612725565b610776565b005b61024b61025b3660046127d3565b610a18565b61027361026e366004612806565b610bbd565b6040519081526020015b60405180910390f35b61024b610294366004612852565b610cdb565b6102736102a736600461286d565b5f908152600360208190526040909120015490565b6102e76102ca36600461286d565b5f908152600360205260409020600101546001600160a01b031690565b6040516001600160a01b03909116815260200161027d565b61027361030d36600461286d565b5f9081526003602052604090206006015490565b61024b61032f366004612884565b610d27565b61024b61034236600461296e565b610fd7565b61024b6111f8565b61027361035d36600461286d565b5f9081526003602052604090206007015490565b61024b61037f36600461286d565b6112c1565b61027361039236600461286d565b60026020525f908152604090205481565b6102736103b136600461286d565b5f9081526003602052604090205490565b6102736103d0366004612a08565b61130e565b61040d6103e336600461286d565b60046020525f90815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161027d565b610273610440366004612852565b60056020525f908152604090205481565b61027361045f366004612852565b60066020525f908152604090205481565b61027361047e366004612a97565b611415565b61049661049136600461286d565b611510565b604051901515815260200161027d565b6102736104b436600461286d565b5f9081526003602052604090206005015490565b6102736104d6366004612b14565b61156b565b6102736104e936600461286d565b5f9081526003602052604090206004015490565b61049661050b36600461286d565b5f9081526003602052604090206002015460ff1690565b6105a361053036600461286d565b600360208190525f91825260409091208054600182015460028301549383015460048401546005850154600686015460079096015494966001600160a01b0385169663ffffffff600160a01b8704811697600160c01b8804821697600160e01b90049091169560ff90931694929391908b565b604080519b8c526001600160a01b03909a1660208c015263ffffffff988916998b019990995295871660608a015295909316608088015290151560a087015260c086015260e08501526101008401919091526101208301526101408201526101600161027d565b61063961061836600461286d565b5f90815260036020526040902060010154600160a01b900463ffffffff1690565b60405163ffffffff909116815260200161027d565b61063961065c36600461286d565b5f90815260036020526040902060010154600160c01b900463ffffffff1690565b61027361068b36600461286d565b611600565b61063961069e36600461286d565b5f90815260036020526040902060010154600160e01b900463ffffffff1690565b61024b6106cd366004612b4d565b61163e565b6102736106e036600461286d565b60016020525f908152604090205481565b61024b6106ff366004612b81565b611887565b610273610712366004612bdb565b611900565b610496610725366004612725565b611a06565b61024b61073836600461286d565b611ba3565b61024b61074b366004612c62565b611ca5565b6007546102e7906001600160a01b031681565b61024b610771366004612c97565b611ecc565b8461078081611510565b61079d57604051636030e5f560e11b815260040160405180910390fd5b84515f036107be576040516312fdb46960e31b815260040160405180910390fd5b5f8681526004602081815260408084208054600190910154600390935290842060058101549301546001600160a01b0390911693919290825b8a5181101561097a57610871838c838151811061081657610816612ccd565b60200260200101518a848151811061083057610830612ccd565b60200260200101518c858151811061084a5761084a612ccd565b60200260200101518e868151811061086457610864612ccd565b6020026020010151611fed565b61088e576040516303a479f160e11b815260040160405180910390fd5b6108988585612cf5565b93506108f48c8386898e86815181106108b3576108b3612ccd565b60200260200101518e87815181106108cd576108cd612ccd565b60200260200101518e88815181106108e7576108e7612ccd565b602002602001015161202a565b809750819550505088818151811061090e5761090e612ccd565b6020026020010151945060035f8d81526020019081526020015f2060060154851461094b5761093e602886612d0e565b6109489086612d2d565b94505b8a818151811061095d5761095d612ccd565b60200260200101519250808061097290612d40565b9150506107f7565b82156109bc5761098b8c87866120f2565b5f8c815260046020526040902080546001600160a01b0319166001600160a01b0388161781556001018590556109f7565b6109d08c876109cb8888612cf5565b6120f2565b5f8c815260046020526040812080546001600160a01b031916815560018101829055600201555b50505f998a5260036020526040909920600501989098555050505050505050565b5f828152600360205260408120600101548391600160c01b90910463ffffffff169003610a585760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615610a8a576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590610ac357504263ffffffff168163ffffffff1611155b15610ae15760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590610b1957504263ffffffff168163ffffffff16115b15610b375760405163079994c560e31b815260040160405180910390fd5b610b4084612172565b5f8581526003602081905260409091200154610b5d908590612cf5565b5f868152600360208190526040918290200182905551339187917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6691610bae91899190918252602082015260400190565b60405180910390a35050505050565b5f85610bc881611510565b610be557604051636030e5f560e11b815260040160405180910390fd5b5f878152600360205260409020548614610c1257604051630763e45d60e41b815260040160405180910390fd5b5f878152600360205260409020600101546001600160a01b03868116911614610c4e5760405163f089a18560e01b815260040160405180910390fd5b5f8781526003602052604090206001015463ffffffff600160c01b90910481169085161115610c9057604051633f61762b60e01b815260040160405180910390fd5b5f87815260036020526040902060060154831115610cc157604051634d497e9360e11b815260040160405180910390fd5b5050505f9384525050600360205250604090206004015490565b6007546001600160a01b031615610d0557604051635c4e8df160e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f805b8751821015610fc5575f888381518110610d4657610d46612ccd565b602002602001015190505f888481518110610d6357610d63612ccd565b602002602001015190505f816001600160401b03811115610d8657610d866125df565b604051908082528060200260200182016040528015610daf578160200160208202803683370190505b5090505f826001600160401b03811115610dcb57610dcb6125df565b604051908082528060200260200182016040528015610df4578160200160208202803683370190505b5090505f836001600160401b03811115610e1057610e106125df565b604051908082528060200260200182016040528015610e39578160200160208202803683370190505b5090505f846001600160401b03811115610e5557610e556125df565b604051908082528060200260200182016040528015610e7e578160200160208202803683370190505b5090505f5b85811015610f9e578c8881518110610e9d57610e9d612ccd565b6020026020010151858281518110610eb757610eb7612ccd565b6020026020010181815250508b8881518110610ed557610ed5612ccd565b6020026020010151848281518110610eef57610eef612ccd565b60200260200101906001600160a01b031690816001600160a01b0316815250508a8881518110610f2157610f21612ccd565b6020026020010151838281518110610f3b57610f3b612ccd565b602002602001018181525050898881518110610f5957610f59612ccd565b6020026020010151828281518110610f7357610f73612ccd565b602090810291909101015287610f8881612d40565b9850508080610f9690612d40565b915050610e83565b610fab8786868686610776565b505050505050508180610fbd90612d40565b925050610d2a565b610fcd6111f8565b5050505050505050565b5f848152600360205260408120600101548591600160c01b90910463ffffffff1690036110175760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611049576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff16801580159061108257504263ffffffff168163ffffffff1611155b156110a05760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff1680158015906110d857504263ffffffff168163ffffffff16115b156110f65760405163079994c560e31b815260040160405180910390fd5b8684805f0361111857604051635de374cf60e11b815260040160405180910390fd5b5f8281526003602052604081206006015490819003611167575f838152600360205260409020600701548210156111625760405163291784d560e01b815260040160405180910390fd5b611192565b611172816002612d58565b821015611192576040516328eecafb60e21b815260040160405180910390fd5b898880156111cb575f828152600360205260409020600601548110156111cb5760405163f6631e6760e01b815260040160405180910390fd5b6111d489612172565b6111e08c8c338c61226a565b6111ea8c8c612331565b505050505050505050505050565b335f818152600660205260408082208054929055600754905163a9059cbb60e01b815260048101939093526024830182905290916001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561125d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112819190612d6f565b611289575f80fd5b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b335f81815260056020908152604091829020849055815192835282018390527fdca703d022171824d3d639b33c1525fd2338120b4cfb89507c0b59596893acda910160405180910390a150565b5f61131882612172565b5f8981526001602052604081205490036113455760405163bbbf712b60e01b815260040160405180910390fd5b5f89868a60405160200161135b93929190612db0565b6040516020818303038152906040528051906020012090505f8189898730338b6040516020016113919796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8e8e8e8e8e8e426040516113f09796959493929190612e6c565b60405180910390a461140781838b8b8b8a8a612397565b9a9950505050505050505050565b5f8681526001602052604081205481036114425760405163bbbf712b60e01b815260040160405180910390fd5b5f87848860405160200161145893929190612db0565b6040516020818303038152906040528051906020012090505f8187875f30338960405160200161148e9796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8c8c8c8c8c8c426040516114ed9796959493929190612e6c565b60405180910390a461150481838989895f80612397565b98975050505050505050565b5f8181526003602052604081206001810154600290910154600160e01b90910463ffffffff169060ff1615801561154c57505f8163ffffffff16115b801561156457504263ffffffff168163ffffffff1611155b9392505050565b5f80548082526001602090815260408084204390555161158d91859101612ebb565b60408051601f1981840301815282825280516020918201205f858152600290925291902055339082907fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4906115e3908790612ed6565b60405180910390a36115f6816001612cf5565b5f5590505b919050565b5f8161160b81611510565b61162857604051636030e5f560e11b815260040160405180910390fd5b50505f9081526003602052604090206004015490565b5f858152600360205260408120600101548691600160c01b90910463ffffffff16900361167e5760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff16156116b0576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff1680158015906116e957504263ffffffff168163ffffffff1611155b156117075760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff16801580159061173f57504263ffffffff168163ffffffff16115b1561175d5760405163079994c560e31b815260040160405180910390fd5b8784805f0361177f57604051635de374cf60e11b815260040160405180910390fd5b5f82815260036020526040812060060154908190036117ce575f838152600360205260409020600701548210156117c95760405163291784d560e01b815260040160405180910390fd5b6117f9565b6117d9816002612d58565b8210156117f9576040516328eecafb60e21b815260040160405180910390fd5b8a898015611832575f828152600360205260409020600601548110156118325760405163f6631e6760e01b815260040160405180910390fd5b61183b89612172565b6001600160a01b038a1661186257604051630ca6549f60e11b815260040160405180910390fd5b61186e8d8d8c8c61226a565b6118788d8d612331565b50505050505050505050505050565b5f86815260036020526040902060058101546006909101546118ae91908590859085611fed565b6118cb576040516303a479f160e11b815260040160405180910390fd5b5f8681526003602052604081206004015486146118e857846118ea565b815b90506118f7878783611ecc565b50505050505050565b5f61190a82612172565b5f8881526001602052604081205490036119375760405163bbbf712b60e01b815260040160405180910390fd5b5f88858960405160200161194d93929190612db0565b6040516020818303038152906040528051906020012090505f8188885f30338a6040516020016119839796959493929190612de8565b60405160208183030381529060405280519060200120905081336001600160a01b0316827ffe2dac156a3890636ce13f65f4fdf41dcaee11526e4a5374531572d92194796c8d8d8d8d8d8d426040516119e29796959493929190612e6c565b60405180910390a46119f981838a8a8a5f8a612397565b9998505050505050505050565b5f858152600360205260408120600101548690600160c01b900463ffffffff168203611a455760405163a42db76b60e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611a7e57504263ffffffff168163ffffffff1611155b15611a9c5760405163372900d560e21b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611ad457504263ffffffff168163ffffffff16115b15611af25760405163079994c560e31b815260040160405180910390fd5b5f898152600360205260409020600501548851885181141580611b16575080885114155b80611b22575080875114155b15611b31575f95505050611b97565b5f5b81811015611b8f57611b51838c838151811061081657610816612ccd565b611b60575f9650505050611b97565b8a8181518110611b7257611b72612ccd565b602002602001015192508080611b8790612d40565b915050611b33565b506001955050505b50505095945050505050565b5f8181526003602052604090206001015481906001600160a01b03163314611bde57604051634361661f60e11b815260040160405180910390fd5b5f82815260036020526040902060020154829060ff16611c115760405163f476ed1160e01b815260040160405180910390fd5b5f83815260036020526040902060028101805460ff1916905560010154611c4590600160c01b900463ffffffff1642612ee8565b5f84815260036020526040808220600101805463ffffffff94909416600160e01b026001600160e01b0390941693909317909255905184917f71bf7c2b9df0b8818e7eb6746a5bf69699ebbab041f3795f9ed58e469afa9a3a91a2505050565b5f8381526003602052604090206001015483906001600160a01b03163314611ce057604051634361661f60e11b815260040160405180910390fd5b5f848152600360205260408120600101548591600160c01b90910463ffffffff169003611d205760405163a42db76b60e01b815260040160405180910390fd5b5f8181526003602052604090206002015460ff1615611d52576040516329ebbb2960e01b815260040160405180910390fd5b5f81815260036020526040902060010154600160e01b900463ffffffff168015801590611d8b57504263ffffffff168163ffffffff1611155b15611da95760405163be17c46b60e01b815260040160405180910390fd5b5f82815260036020526040902060010154600160a01b900463ffffffff168015801590611de157504263ffffffff168163ffffffff16115b15611dff5760405163079994c560e31b815260040160405180910390fd5b86858015611e38575f82815260036020526040902060060154811015611e385760405163f6631e6760e01b815260040160405180910390fd5b5f89815260036020526040902060010154600160e01b900463ffffffff16611e73576040516397fe1f2760e01b815260040160405180910390fd5b5f89815260036020526040808220600201805460ff19166001179055516001600160a01b038a16918b917f75d7939999bc902187c4aed400872883e445145f1983539166f783fa040b47629190a3505050505050505050565b5f8381526003602052604090206001015483906001600160a01b03163314611f0757604051634361661f60e11b815260040160405180910390fd5b5f84815260036020526040902060020154849060ff16611f3a5760405163f476ed1160e01b815260040160405180910390fd5b6001600160a01b038316611f61576040516335050b6960e11b815260040160405180910390fd5b604051849086907f18d760beffe3717270cd90d9d920ec1a48c194e9ad7bba23eb1c92d3eb974f97905f90a35f858152600360205260408120600201805460ff19169055611fb49086908690869061226a565b5f8581526003602052604090206004810185905560010180546001600160e01b0316600160e01b4263ffffffff16021790555050505050565b5f848484845f604051602001612007959493929190612f0c565b604051602081830303815290604052805190602001208614905095945050505050565b5f808783036120e3576001600160a01b0386166120a0578495505f60035f8b81526020019081526020015f2060030154118015612065575060015b1561209b57612089898760035f8d81526020019081526020015f20600301546120f2565b5f898152600360208190526040822001555b6120e3565b856001600160a01b0316856001600160a01b0316146120e3575f848810156120c857876120ca565b845b90506120db8a886109cb848c612d2d565b859650809750505b50949793965092945050505050565b6001600160a01b0382165f90815260066020526040902054612115908290612cf5565b6001600160a01b0383165f818152600660205260409081902092909255905184907f9c121aff33b50c1a53fef034ebec5f83da2d5a5187048f9c76c397ba27c1a1a6906121659085815260200190565b60405180910390a3505050565b805f0361217c5750565b335f9081526006602052604090205480156121d1578181106121b5576121a28282612d2d565b335f908152600660205260409020555050565b6121bf8183612d2d565b335f9081526006602052604081205591505b6007546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122499190612d6f565b61226657604051637e3e710960e11b815260040160405180910390fd5b5050565b5f84815260036020908152604080832060050154905161229292879186918891879101612f0c565b6040516020818303038152906040528051906020012090505f8211156122c6575f8581526003602052604090206006018290555b5f8581526003602090815260408083206005018490558051878152918201849052810184905242606082015260808101919091526001600160a01b0384169086907fe47ca4ebbbc2990134d1168821f38c5e177f3d5ee564bffeadeaa351905e62219060a001610bae565b5f828152600360205260409020600481018290556001015461236090600160c01b900463ffffffff1642612ee8565b5f92835260036020526040909220600101805463ffffffff93909316600160e01b026001600160e01b039093169290921790915550565b5f878152600360205260409020600101548790600160c01b900463ffffffff16156123d8576040516001627a443360e01b0319815260040160405180910390fd5b8463ffffffff165f036123fe5760405163c44c737960e01b815260040160405180910390fd5b6301e133808563ffffffff161061242857604051630ce43fd960e41b815260040160405180910390fd5b816001600160a01b0387161580159061244a5750336001600160a01b03881614155b156124d2576001600160a01b0387165f90815260056020526040902054808210156124885760405163d72564c760e01b815260040160405180910390fd5b6124928183612d2d565b6001600160a01b0389165f908152600660205260409020549092506124b8908290612cf5565b6001600160a01b0389165f90815260066020526040902055505b5f898152600360205260409020888155600101805463ffffffff888116600160c01b0263ffffffff60c01b19918916600160a01b026001600160c01b03199093166001600160a01b038c16179290921716179055801561257e575f89815260036020818152604092839020909101839055815183815290810183905233918b917f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab66910160405180910390a35b83156125d4575f89815260036020526040908190206007018590555189907f9641ca9d53af3bead658ffcc6c7d8c35e7dae9938367bd8eb45bee35d5c62504906125cb9087815260200190565b60405180910390a25b505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561261b5761261b6125df565b604052919050565b5f6001600160401b0382111561263b5761263b6125df565b5060051b60200190565b5f82601f830112612654575f80fd5b8135602061266961266483612623565b6125f3565b82815260059290921b84018101918181019086841115612687575f80fd5b8286015b848110156126a2578035835291830191830161268b565b509695505050505050565b6001600160a01b03811681146126c1575f80fd5b50565b5f82601f8301126126d3575f80fd5b813560206126e361266483612623565b82815260059290921b84018101918181019086841115612701575f80fd5b8286015b848110156126a2578035612718816126ad565b8352918301918301612705565b5f805f805f60a08688031215612739575f80fd5b8535945060208601356001600160401b0380821115612756575f80fd5b61276289838a01612645565b95506040880135915080821115612777575f80fd5b61278389838a016126c4565b94506060880135915080821115612798575f80fd5b6127a489838a01612645565b935060808801359150808211156127b9575f80fd5b506127c688828901612645565b9150509295509295909350565b5f80604083850312156127e4575f80fd5b50508035926020909101359150565b803563ffffffff811681146115fb575f80fd5b5f805f805f60a0868803121561281a575f80fd5b85359450602086013593506040860135612833816126ad565b9250612841606087016127f3565b949793965091946080013592915050565b5f60208284031215612862575f80fd5b8135611564816126ad565b5f6020828403121561287d575f80fd5b5035919050565b5f805f805f8060c08789031215612899575f80fd5b86356001600160401b03808211156128af575f80fd5b6128bb8a838b01612645565b975060208901359150808211156128d0575f80fd5b6128dc8a838b01612645565b965060408901359150808211156128f1575f80fd5b6128fd8a838b01612645565b95506060890135915080821115612912575f80fd5b61291e8a838b016126c4565b94506080890135915080821115612933575f80fd5b61293f8a838b01612645565b935060a0890135915080821115612954575f80fd5b5061296189828a01612645565b9150509295509295509295565b5f805f8060808587031215612981575f80fd5b5050823594602084013594506040840135936060013592509050565b5f82601f8301126129ac575f80fd5b81356001600160401b038111156129c5576129c56125df565b6129d8601f8201601f19166020016125f3565b8181528460208386010111156129ec575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612a20575f80fd5b8835975060208901356001600160401b03811115612a3c575f80fd5b612a488b828c0161299d565b9750506040890135612a59816126ad565b9550612a6760608a016127f3565b9450612a7560808a016127f3565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f805f805f8060c08789031215612aac575f80fd5b8635955060208701356001600160401b03811115612ac8575f80fd5b612ad489828a0161299d565b9550506040870135612ae5816126ad565b9350612af3606088016127f3565b9250612b01608088016127f3565b915060a087013590509295509295509295565b5f60208284031215612b24575f80fd5b81356001600160401b03811115612b39575f80fd5b612b458482850161299d565b949350505050565b5f805f805f60a08688031215612b61575f80fd5b8535945060208601359350604086013592506060860135612841816126ad565b5f805f805f8060c08789031215612b96575f80fd5b86359550602087013594506040870135612baf816126ad565b9350606087013592506080870135915060a0870135612bcd816126ad565b809150509295509295509295565b5f805f805f805f60e0888a031215612bf1575f80fd5b8735965060208801356001600160401b03811115612c0d575f80fd5b612c198a828b0161299d565b9650506040880135612c2a816126ad565b9450612c38606089016127f3565b9350612c46608089016127f3565b925060a0880135915060c0880135905092959891949750929550565b5f805f60608486031215612c74575f80fd5b833592506020840135612c86816126ad565b929592945050506040919091013590565b5f805f60608486031215612ca9575f80fd5b83359250602084013591506040840135612cc2816126ad565b809150509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115612d0857612d08612ce1565b92915050565b5f82612d2857634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115612d0857612d08612ce1565b5f60018201612d5157612d51612ce1565b5060010190565b8082028115828204841417612d0857612d08612ce1565b5f60208284031215612d7f575f80fd5b81518015158114611564575f80fd5b5f5b83811015612da8578181015183820152602001612d90565b50505f910152565b83815263ffffffff60e01b8360e01b1660208201525f8251612dd9816024850160208701612d8e565b91909101602401949350505050565b968752606095861b6bffffffffffffffffffffffff19908116602089015260e09590951b6001600160e01b0319166034880152603887019390935290841b8316605886015290921b16606c830152608082015260a00190565b5f8151808452612e58816020860160208601612d8e565b601f01601f19169290920160200192915050565b87815260e060208201525f612e8460e0830189612e41565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b5f8251612ecc818460208701612d8e565b9190910192915050565b602081525f6115646020830184612e41565b63ffffffff818116838216019080821115612f0557612f05612ce1565b5092915050565b94855260208501939093526040840191909152606090811b6bffffffffffffffffffffffff191690830152151560f81b60748201526075019056fea2646970667358221220e259f1531e50de4d19e61d31c6a799a10a3bd9fa8157e36845b01160e2bd5a1864736f6c634300081400337b227469746c65223a20222573222c202274797065223a20226d756c7469706c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a20226461746574696d65222c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202273696e676c652d73656c656374222c20226f7574636f6d6573223a205b25735d2c202263617465676f7279223a20222573222c20226c616e67223a20222573227d7b227469746c65223a20222573222c202274797065223a202275696e74222c2022646563696d616c73223a2031382c202263617465676f7279223a20222573222c20226c616e67223a20222573227d
@@ -8,9 +8,9 @@ import {IRealityETHHistoryVerification} from "./IRealityETHHistoryVerification.s
8
8
  // solhint-disable-next-line contract-name-camelcase
9
9
  abstract contract RealityETHCore_Common is IRealityETHCore_Common, IRealityETHHistoryVerification {
10
10
  // Proportion withheld when you claim an earlier bond.
11
- uint256 private constant BOND_CLAIM_FEE_PROPORTION = 40; // One 40th ie 2.5%
11
+ uint256 internal constant BOND_CLAIM_FEE_PROPORTION = 40; // One 40th ie 2.5%
12
12
 
13
- uint256 private nextTemplateID = 0;
13
+ uint256 internal nextTemplateID = 0;
14
14
  mapping(uint256 => uint256) public templates;
15
15
  mapping(uint256 => bytes32) public template_hashes;
16
16
  mapping(bytes32 => Question) public questions;
@@ -90,10 +90,14 @@ abstract contract RealityETHCore_Common is IRealityETHCore_Common, IRealityETHHi
90
90
  _;
91
91
  }
92
92
 
93
- /* solhint-disable quotes */
94
93
  /// @notice Constructor, sets up some initial templates
95
94
  /// @dev Creates some generalized templates for different question types used in the DApp.
96
95
  constructor() {
96
+ _createInitialTemplates();
97
+ }
98
+
99
+ /* solhint-disable quotes */
100
+ function _createInitialTemplates() internal {
97
101
  createTemplate('{"title": "%s", "type": "bool", "category": "%s", "lang": "%s"}');
98
102
  createTemplate('{"title": "%s", "type": "uint", "decimals": 18, "category": "%s", "lang": "%s"}');
99
103
  createTemplate('{"title": "%s", "type": "single-select", "outcomes": [%s], "category": "%s", "lang": "%s"}');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reality.eth/contracts",
3
- "version": "4.0.0-rc.3",
3
+ "version": "4.0.0-rc.4",
4
4
  "description": "Collection of smart contracts for the Realitio fact verification platform",
5
5
  "scripts": {
6
6
  "generate-chains": "node scripts/generate_chains_json.js",