0x608060405234801561000f575f80fd5b505f80546001600160a01b03191632179055615ff1806200002f5f395ff3fe60806040526004361061006e575f3560e01c806364a3eee11161004c57806364a3eee1146100dc5780637b8bfeb4146100fb578063c669e8271461011b578063fbef0ae41461013a575f80fd5b806349789048146100725780635b7228bb14610093578063633189b6146100c8575b5f80fd5b34801561007d575f80fd5b5061009161008c366004614cf1565b610166565b005b34801561009e575f80fd5b506100b26100ad366004615057565b610269565b6040516100bf9190615142565b60405180910390f35b3480156100d3575f80fd5b506100916102b4565b3480156100e7575f80fd5b506100916100f6366004615216565b61033d565b61010e610109366004615417565b610432565b6040516100bf91906156c9565b348015610126575f80fd5b50610091610135366004615216565b610455565b348015610145575f80fd5b5061015961015436600461577b565b6104d8565b6040516100bf9190615806565b5f546001600160a01b031633146101a95760405162461bcd60e51b81526020600482015260026024820152616e6f60f01b60448201526064015b60405180910390fd5b5f546001600160a01b0316818015610263575f5b81811015610261575f610200308787858181106101dc576101dc615818565b90506020020160208101906101f19190615845565b6001600160a01b0316906104e8565b90508015610258575f610245858389898781811061022057610220615818565b90506020020160208101906102359190615845565b6001600160a01b031691906104fd565b9050806102565761025660016105fb565b505b506001016101bd565b505b50505050565b61029b60405180608001604052805f6001600160a01b031681526020015f815260200160608152602001606081525090565b6102a88686868686610609565b90505b95945050505050565b5f546001600160a01b031633146102f25760405162461bcd60e51b81526020600482015260026024820152616e6f60f01b60448201526064016101a0565b5f546001600160a01b0316478015610339576040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610337573d5f803e3d5ffd5b505b5050565b5f546001600160a01b0316331461037b5760405162461bcd60e51b81526020600482015260026024820152616e6f60f01b60448201526064016101a0565b81515f5b81811015610263575f6103d83285848151811061039e5761039e615818565b60200260200101518785815181106103b8576103b8615818565b60200260200101516001600160a01b03166104fd9092919063ffffffff16565b9050806104295760405162461bcd60e51b81526004016101a09060208082526004908201527f6e6f706500000000000000000000000000000000000000000000000000000000604082015260600190565b5060010161037f565b61043a614bee565b61044887878787878761069b565b90505b9695505050505050565b5f546001600160a01b031633146104935760405162461bcd60e51b81526020600482015260026024820152616e6f60f01b60448201526064016101a0565b81515f5b81811015610263576104cf328483815181106104b5576104b5615818565b60200260200101518684815181106103b8576103b8615818565b50600101610497565b6060610448878787878787610770565b5f6104f45f8484610dec565b90505b92915050565b6040516001600160a01b038381166024830152604482018390525f91829182919087169060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516105879190615860565b5f604051808303815f865af19150503d805f81146105c0576040519150601f19603f3d011682016040523d82523d5f602084013e6105c5565b606091505b50915091508180156105ef5750805115806105ef5750808060200190518101906105ef919061587b565b925050505b9392505050565b6040518181526004601c8201fd5b61063b60405180608001604052805f6001600160a01b031681526020015f815260200160608152602001606081525090565b608085015186158015610652575061065281610f32565b15610664576106618582610f9f565b90505b60408051608081018252610260909701516001600160a01b0316875260208701919091528501929092526060840152509092915050565b6106a3614bee565b6106ae878584611005565b90508261044b57608084161580156106c95750622000008416155b1561044b575f8082606001515f815181106106e6576106e6615818565b60200260200101516101a0015111806107355750825f01516001600160a01b031682606001515f8151811061071d5761071d615818565b602002602001015161022001516001600160a01b0316145b905080156107655781515f5a90505f610750828a3a86611205565b9050801561076157610761816105fb565b5050505b509695505050505050565b60405163edf26d9b60e01b81526109c460048201526060905f906001600160a01b0389169063edf26d9b90602401602060405180830381865afa1580156107b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107dd9190615896565b9050851580156107f557506107f58360800151610f32565b156109cc575f610809858560800151610f9f565b9050600319810161090d576101408401516040517fbb48cea80000000000000000000000000000000000000000000000000000000081525f60048201819052906001600160a01b0385169063bb48cea890602401602060405180830381865afa158015610878573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089c9190615896565b90505f6108c0828861022001516001600160a01b03166104e890919063ffffffff16565b9050805f036108e45760405180602001604052805f8152509550505050505061044b565b828110156108f0578092505b6109018b8389610220015186611252565b9550505050505061044b565b60021981016109ca576040517fcaf971ea0000000000000000000000000000000000000000000000000000000081525f6004820181905260248201819052906001600160a01b0384169063caf971ea906044016040805180830381865afa15801561097a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099e91906158b1565b5090505f85610140015190506109bf60018b845f8a6102200151865f6112ce565b94505050505061044b565b505b608083015115806109e1575060808301516013145b806109f0575060808301516019145b806109ff57506080830151602d145b80610a0e57506080830151602f145b15610aa45761026083015161022084015161024085015185518a9015610a34575f610a3b565b8661016001515b875115610a4d57876101600151610a4f565b5f5b604080516001600160a01b0397881660208201529587169086015292851660608501529316608083015260a082019290925260c081019190915260e0015b60405160208183030381529060405291505061044b565b608083015160011480610abb575060808301516008145b80610aca575060808301516011145b80610ad9575060808301516020145b80610ae857506080830151602b145b80610af757506080830151602c145b80610b06575060808301516024145b15610bd3576040518060c001604052808461026001516001600160a01b031681526020018461022001516001600160a01b031681526020018461024001516001600160a01b03168152602001886001600160a01b031681526020018461014001518152602001861515815250604051602001610a8d91905f60c0820190506001600160a01b03808451168352806020850151166020840152806040850151166040840152806060850151166060840152506080830151608083015260a0830151151560a083015292915050565b608083015160011901610cbb576040518060c00160405280846102800151806020019051810190610c049190615896565b6001600160a01b031681526020018461026001516001600160a01b031681526020018461022001516001600160a01b03168152602001886001600160a01b031681526020018461014001518152602001861515815250604051602001610a8d91905f60c0820190506001600160a01b03808451168352806020850151166020840152806040850151166040840152806060850151166060840152506080830151608083015260a0830151151560a083015292915050565b608083015160051901610d01576102608301518351610160850151604080516001600160a01b039094166020850152911515918301919091526060820152608001610a8d565b6080830151601c1901610d4257610240830151610160840151604080516001600160a01b03808c166020830152909316908301526060820152608001610a8d565b6080830151602f1901610dd2578415836102600151846102800151806020019051810190610d709190615896565b6102208601516102408701516101408801516101608901516040805197151560208901526001600160a01b0396871690880152938516606087015291841660808601529290921660a084015260c083019190915260e082015261010001610a8d565b505060408051602081019091525f81529695505050505050565b6040516001600160a01b03821660248201525f90606090829060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905290505f869003610ec957846001600160a01b031681604051610e829190615860565b5f60405180830381855afa9150503d805f8114610eba576040519150601f19603f3d011682016040523d82523d5f602084013e610ebf565b606091505b509250610f259050565b846001600160a01b03168682604051610ee29190615860565b5f604051808303818686fa925050503d805f8114610f1b576040519150601f19603f3d011682016040523d82523d5f602084013e610f20565b606091505b509250505b5060200151949350505050565b5f60038210158015610f45575060058211155b80610f505750600b82145b80610f5b5750601d82145b80610f665750601c82145b80610f715750601782145b80610f7c5750602682145b80610f875750601582145b80610f925750603082145b806104f757505060311490565b5f60038314801590610fb2575060048314155b15610fbc57600492505b6003198301610fdc57828203610fd4575060036104f7565b5060046104f7565b6002198301610ffc57828203610ff4575060046104f7565b5060036104f7565b50600492915050565b61100d614bee565b611015614bee565b5f6110d1604051806102e001604052805f151581526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001606081526020015f81525090565b60606110de888888611362565b939750909550919350909150505f8390036111ea576204000087166111445761110d8888885f01518486611473565b608081018390526020810151909450600814801561112f575062200000871615155b156111445750505f60208301525090506105f4565b6020840151156111605761115b84602001516105fb565b6111f3565b5f8085606001515f8151811061117857611178615818565b60200260200101516101a0015111806111c75750865f01516001600160a01b031685606001515f815181106111af576111af615818565b602002602001015161022001516001600160a01b0316145b90508080156111d557508451155b156111e4576111e460196105fb565b506111f3565b6111f3836105fb565b50919695505050505050565b16151590565b5f80611211848661590a565b90508083101561124957835a6112279088615921565b611231919061590a565b95508261123e8783615921565b111561124957600291505b50949350505050565b60606040518060a00160405280856001600160a01b03168152602001866001600160a01b03168152602001611286856114c7565b815260200161129484611521565b81526020016112a25f611521565b90526040516112b49190602001615963565b60405160208183030381529060405290505b949350505050565b60606040518060e00160405280876001600160a01b031681526020018915158152602001886001600160a01b0316815260200161130a866114c7565b815260200161131885611521565b815260200161132684611521565b81526001600160a01b038716602091820152604051611346929101615a0a565b6040516020818303038152906040529050979650505050505050565b61136a614bee565b5f806060611429604051806102e001604052805f151581526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001606081526020015f81525090565b611434888888611567565b8151929950939750919550909350909150849083905f9061145757611457615818565b6020026020010151610140018181525050939792965093509350565b61147b614bee565b60605f60605f61148d8a8a8a8a611871565b6040805160a08101825293845260208401949094529282019290925260608101919091526080810196909652509398975050505050505050565b6040805160018082528183019092526060916020808301908036833701905050905081815f815181106114fc576114fc615818565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6040805160018082528183019092526060916020808301908036833701905050905081815f8151811061155657611556615818565b602002602001018181525050919050565b5f80611571614bee565b606061162e604051806102e001604052805f151581526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001606081526020015f81525090565b60405163edf26d9b60e01b81526103e9600482015260609081905f906001600160a01b038c169063edf26d9b90602401602060405180830381865afa158015611679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169d9190615896565b60405163edf26d9b60e01b81526109c460048201529091505f906001600160a01b038d169063edf26d9b90602401602060405180830381865afa1580156116e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170a9190615896565b90506117188c828d8d611a3e565b805160e08e01519199509296509094501561173c5760e08b015199505f9850611816565b620400008c1615611763576117578d848e8e5f01518b611ed8565b909b5099509750611816565b61181085611772600184615921565b8151811061178257611782615818565b6020026020010151856001846117989190615921565b815181106117a8576117a8615818565b6020026020010151895f815181106117c2576117c2615818565b602002602001015161010001518a5f815181106117e1576117e1615818565b6020026020010151608001518b5f815181106117ff576117ff615818565b602002602001015160a001516121db565b909a5098505b885f03611861576101408b0151516001600160a01b031615611861576118448d838e8e61014001515f612298565b61014081018b90529550620400008c161561186157608088018690525b5050505050939792965093509350565b5f806060806118845f86518751886124c7565b91505f80865f8151811061189a5761189a615818565b60200260200101516101a0015111806118e25750866001600160a01b0316865f815181106118ca576118ca615818565b602002602001015161022001516001600160a01b0316145b90505f6118f18a8a8a87612647565b91965090935090505f81900361190f5760085f955095505050611a33565b50801561192757835f03611927576008945050611a33565b80156119cd575f80845f8151811061194157611941615818565b60200260200101519050886001600160a01b03168161022001516001600160a01b0316036119745780610140015161199f565b5f816101a0015111611986575f61199f565b61199f816101400151826101a00151836040015161298e565b915050808510156119b757506108019450611a339050565b6119c18186615921565b94505f95505050611a33565b82600184516119dc9190615921565b815181106119ec576119ec615818565b60200260200101516101600151835f81518110611a0b57611a0b615818565b6020026020010151610140015110611a2b575061080293505f9250611a33565b5f8094509450505b945094509450949050565b60608060605f84610120015190505f815f81518110611a5f57611a5f615818565b60200260200101516020015190505f825190508067ffffffffffffffff811115611a8b57611a8b614d7b565b604051908082528060200260200182016040528015611b7757816020015b611b64604051806102e001604052805f151581526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001606081526020015f81525090565b815260200190600190039081611aa95790505b5093508660e001515f03611c10578067ffffffffffffffff811115611b9e57611b9e614d7b565b604051908082528060200260200182016040528015611bc7578160200160208202803683370190505b5095508067ffffffffffffffff811115611be357611be3614d7b565b604051908082528060200260200182016040528015611c0c578160200160208202803683370190505b5094505b60405163edf26d9b60e01b81526103e9600482015260609081905f906001600160a01b038e169063edf26d9b90602401602060405180830381865afa158015611c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c7f9190615896565b90505f5b84811015611ec7575f878281518110611c9e57611c9e615818565b60200260200101519050611cb58f8f8f8486612298565b898381518110611cc757611cc7615818565b6020026020010181905250888281518110611ce457611ce4615818565b60200260200101516102400151965050611d0860048d6111ff90919063ffffffff16565b15611dfc57611d5a8d8c5f01518e8b8581518110611d2857611d28615818565b60200260200101516101a001518b8681518110611d4757611d47615818565b602002602001015160200151888a6129ae565b8a8481518110611d6c57611d6c615818565b60200260200101516101a00181965082975083815250505050611dd28d8c5f01518e8b8581518110611da057611da0615818565b60200260200101516101c001518b8681518110611dbf57611dbf615818565b602002602001015160400151888a6129ae565b8a8481518110611de457611de4615818565b60209081029190910101516101c00192909252945092505b60e08b0151158015611e115750620400008c16155b15611ebf57611e84828d838015611e4b578d611e2e600187615921565b81518110611e3e57611e3e615818565b6020026020010151611e4d565b5f5b8515611e7c578d611e5f600188615921565b81518110611e6f57611e6f615818565b6020026020010151611e7e565b5f5b8d612b53565b8b8381518110611e9657611e96615818565b602002602001018b8481518110611eaf57611eaf615818565b6020908102919091010191909152525b600101611c83565b505050505050509450945094915050565b611ee0614bee565b5f805f845167ffffffffffffffff811115611efd57611efd614d7b565b604051908082528060200260200182016040528015611f3657816020015b611f23614cd3565b815260200190600190039081611f1b5790505b5090505f5b8551811015612009575f808a6001600160a01b031663c0f9c7a4898581518110611f6757611f67615818565b60200260200101516040518263ffffffff1660e01b8152600401611f8b9190615ac1565b6040805180830381865afa158015611fa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc99190615ad3565b91509150604051806040016040528083815260200182815250848481518110611ff457611ff4615818565b60209081029190910101525050600101611f3b565b505f61203260405180608001604052805f81526020015f81526020015f81526020015f81525090565b6002835f8151811061204657612046615818565b60200260200101515f6002811061205f5761205f615818565b602002015161206e9190615af5565b81525b6007816020015110156121ad57805f0151875f8151811061209457612094615818565b602002602001015161014001818152505060605f60606120b68e8d8d8d611871565b929750919450925090505f859003612192575f8a5f815181106120db576120db615818565b60200260200101516101400151826001845103815181106120fe576120fe615818565b602002602001015161016001510390505f85606001511115612167578460600151811115612152578451604080870191909152606080870183905260208c01889052848c528b018390528a01849052612190565b505050506040015193505f92506121d0915050565b6060808601829052855160408088019190915260208c01889052848c52908b018390528a018490525b505b50505060208101805160010190528051600290048152612071565b6040810151156121c8576040015193505f92506121d0915050565b505f93509150505b955095509592505050565b5f80858711806121f157508615806121f1575085155b1561220157505f9050600661228e565b5f61220f86620f4240615921565b90505f61221f620f42408a61590a565b90505f61223f836122308b8561590a565b61223a919061590a565b612c84565b90508181101561225a57505f9350610601925061228e915050565b826122658383615921565b61226f9190615af5565b9450845f03612287575f60079450945050505061228e565b505f925050505b9550959350505050565b612353604051806102e001604052805f151581526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001606081526020015f81525090565b6060805f60606123638988612d3d565b809550819250505061237a8a8860c0015183613549565b9350915081156123915761239161090087176105fb565b505f61800088166123c85760606123a98a858a613740565b80519193509150158015906123bd57508451155b156123c6578094505b505b604051806102e00160405280886060015115158152602001886080015115158152602001886101400151815260200188610160015181526020018860c0015181526020018860e001518152602001886101000151815260200188610120015181526020018281526020018860a0015181526020015f81526020015f81526020015f81526020018861018001518152602001886101a0015181526020015f81526020015f815260200188602001516001600160a01b0316815260200188604001516001600160a01b03168152602001885f01516001600160a01b031681526020018581526020018481526020015f81525094505050505095945050505050565b60608367ffffffffffffffff8111156124e2576124e2614d7b565b6040519080825280602002602001820160405280156125ce57816020015b6125bb604051806102e001604052805f151581526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001606081526020015f81525090565b8152602001906001900390816125005790505b5090505f5b838110156112495785612607576126028382815181106125f5576125f5615818565b60200260200101516137b1565b612622565b82818151811061261957612619615818565b60200260200101515b82828151811061263457612634615818565b60209081029190910101526001016125d3565b80515f90819060609084838261265f5761265f615818565b6020026020010151610140015192505f612684614000896111ff90919063ffffffff16565b905062200000881615155f5b8381101561297f575f8882815181106126ab576126ab615818565b602002602001015190506126d6308261022001516001600160a01b03166104e890919063ffffffff16565b6102408201516126ef906001600160a01b0316306104e8565b6102008301526101e0820152821580156127065750835b156127325781600114801561271f575080604001516012145b156127325761272f600188615921565b96505b8261281f57610140810187905260405163edf26d9b60e01b81526109c460048201525f906127b3906001600160a01b038f169063edf26d9b90602401602060405180830381865afa158015612789573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ad9190615896565b83613990565b90506127c58d83608001518e846141b3565b9750875f0361281d57610140820151604080519182525f60208301527f361b2a5370b4bc8b8aa7c419c6a4c232715de9bef10913134a2852db730afbf4910160405180910390a15f8098509850505050505050612984565b505b8261286c57610160810187905261014081015160408051918252602082018990527f361b2a5370b4bc8b8aa7c419c6a4c232715de9bef10913134a2852db730afbf4910160405180910390a15b608081015160011480612883575060808101516008145b80612892575060808101516011145b806128a1575060808101516020145b806128b057506080810151602b145b806128bf575060808101516022145b806128ce57506080810151602c145b806128dd57506080810151602e145b806128ec575060808101516024145b806128fb575060808101516015145b156129125761290f86826102600151614379565b95505b8261297657896001600160a01b03168161024001516001600160a01b0316036129405780610160015161296b565b5f816101c0015111612952575f61296b565b61296b816101600151826101c00151836060015161298e565b610180820181905297505b50600101612690565b505050505b9450945094915050565b5f61299a82600a615c0d565b6129a4858561590a565b6112c69190615af5565b5f606080600488166129c7575085915082905083612b46565b886001600160a01b0316866001600160a01b0316036129f55750670de0b6b3a7640000915082905083612b46565b5f5b8551811015612a6257866001600160a01b0316868281518110612a1c57612a1c615818565b60200260200101516001600160a01b031603612a5a57848181518110612a4457612a44615818565b6020026020010151858793509350935050612b46565b6001016129f7565b5086612a6e8b88614485565b15612b1f576040517f05fe24730000000000000000000000000000000000000000000000000000000081525f6004820152600560248201526001600160a01b0388811660448301528b166064820152732cf9314420ba0faddfc45aa3fd966ff90ae5885e906305fe24739060840160408051808303815f875af1158015612af7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b1b9190615ad3565b5090505b805f03612b295750865b80612b348683614569565b612b3e888a614379565b935093509350505b9750975097945050505050565b5f80855f03612c65575f80896001600160a01b0316858981518110612b7a57612b7a615818565b6020026020010151604051602401612b929190615ac1565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0f9c7a40000000000000000000000000000000000000000000000000000000017905251612bf59190615860565b5f60405180830381855afa9150503d805f8114612c2d576040519150601f19603f3d011682016040523d82523d5f602084013e612c32565b606091505b509150915081612c4657612c46601a6105fb565b80806020019051810190612c5a9190615ad3565b935093505050612c79565b612c73888887878a88614654565b90925090505b965096945050505050565b60b581710100000000000000000000000000000000008110612cab5760409190911b9060801c5b69010000000000000000008110612cc75760209190911b9060401c5b650100000000008110612cdf5760109190911b9060201c5b63010000008110612cf55760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c808204811115612d385781045b919050565b606080601760ff168360c0015103612da85782516020808501516040808701519051612d889493016001600160a01b0393841681529183166020830152909116604082015260600190565b60408051601f19818403018152602083019091525f825292509050613542565b60c08301511580612dbd575060c0830151600b145b80612dcc575060c08301516002145b15612ebe578251602084015160608501515f92612e16928492612df3578760400151612df9565b87602001515b8860600151612e0c5788602001516148cb565b88604001516148cb565b90506060600260ff168560c0015103612eb4575f866001600160a01b0316631e04504c6040518163ffffffff1660e01b81526004016040805180830381865afa158015612e65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e899190615c18565b50604080516001600160a01b0383166020820152919250016040516020818303038152906040529150505b9092509050613542565b60c08301516003190161305d575f835f01516001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2f9190615c50565b6101208501516040517fbb48cea800000000000000000000000000000000000000000000000000000000815260ff90911660048201529091505f906001600160a01b0387169063bb48cea890602401602060405180830381865afa158015612f99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbd9190615896565b90506130278186602001518760400151858960e001518a6101000151604080516001600160a01b03978816602082015295871686820152939095166060850152608084019190915260a083015260c0808301939093528051808303909301835260e0909101905290565b604080516001600160a01b0384166020820152908101849052606001604051602081830303815290604052935093505050613542565b60c0830151600519016130b45761309c836101000151600114845f015185602001518660600151613092578660400151614978565b8660200151614978565b60405180602001604052805f81525091509150613542565b60c083015160021901613198576101008301516101208401516040517fcaf971ea000000000000000000000000000000000000000000000000000000008152600481019290925260ff1660248201525f906001600160a01b0386169063caf971ea906044016040805180830381865afa158015613133573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061315791906158b1565b5060408051602080820183525f825282516001600160a01b0385169181019190915292935091015b6040516020818303038152906040529250925050613542565b60c08301516004190161320f5782516020808501516040808701516101008089015160a0808b01516101408c01516101608d015187516001600160a01b039b8c169a81019a909a52978a169689019690965297909316606087015260808601529084019490945260c083015260e082015201612d88565b60c0830151601b19016132e6575f835f01516001600160a01b031663741bef1a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132809190615896565b9050835f0151846020015185604001516040516020016132c0939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60408051601f198184030181528282526001600160a01b0384166020840152910161317f565b60c083015160251901613426575f846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133549190615896565b90505f856001600160a01b0316633784a05d6040518163ffffffff1660e01b81526004016040805180830381865afa158015613392573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133b69190615c18565b6020878101516040808a015181516001600160a01b0386811695820195909552928416918301829052831660608301819052928716908114608083015290911460a082015290925060c001905060408051601f19818403018152602083019091525f825294509250613542915050565b60c0830151602f19016134ed576101208301516040517f0e6fcc7000000000000000000000000000000000000000000000000000000000815260ff90911660048201525f906001600160a01b03861690630e6fcc7090602401602060405180830381865afa15801561349a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134be9190615896565b84516020808701516040519394506132c0939091016001600160a01b0392831681529116602082015260400190565b825160208085015160408087015190516135269493016001600160a01b0393841681529183166020830152909116604082015260600190565b60408051601f19818403018152602083019091525f8252925090505b9250929050565b5f6060613555846149b2565b156135d0575f805f858060200190518101906135719190615c67565b9250925092505f80613584858585614a11565b9150915060018210806135975750600181105b156135a157600996505b604080516020810184905290810182905260600160405160208183030381529060405295505050505050613738565b60405163edf26d9b60e01b8152600481018590525f9081906001600160a01b0388169063edf26d9b90602401602060405180830381865afa158015613617573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061363b9190615896565b6001600160a01b03166306422b6360e01b878760405160240161365f929190615cb1565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516136ca9190615860565b5f60405180830381855af49150503d805f8114613702576040519150601f19603f3d011682016040523d82523d5f602084013e613707565b606091505b5091509150811561373057808060200190518101906137269190615d0b565b9094509250613735565b600193505b50505b935093915050565b5f6060601760ff168360c001510361378257838060200190518101906137669190615d45565b5060408051602081019091525f81529094509250613738915050565b6137a5858460c001518561012001518660e00151876101000151885f0151614a45565b91509150935093915050565b61386c604051806102e001604052805f151581526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001606081526020015f81525090565b604051806102e00160405280835f0151151581526020018360200151151581526020018360400151815260200183606001518152602001836080015181526020018360a0015181526020018360c0015181526020018360e00151815260200183610100015181526020018361012001518152602001836101400151815260200183610160015181526020018361018001518152602001836101a001518152602001836101c001518152602001836101e00151815260200183610200015181526020018361022001516001600160a01b031681526020018361024001516001600160a01b031681526020018361026001516001600160a01b031681526020018361028001518152602001836102a001518152602001836102c001518152509050919050565b6080810151606090600114806139aa575060808201516008145b806139b9575060808201516011145b806139c857506080820151602b145b806139d757506080820151602c145b806139e657506080820151602e145b806139f5575060808201516024145b15613a5b578161026001518261024001516001600160a01b03168361022001516001600160a01b031610836101400151846101000151856102800151604051602001613a45959493929190615d78565b60405160208183030381529060405290506104f7565b60808201511580613a7057506080820151600b145b80613a7f57506080820151602f145b15613aa857816101400151826102a00151836101000151604051602001613a4593929190615dad565b608082015160051901613b015761026082015160c0808401518451610140860151604080516001600160a01b0396871660208201529589169086015260019092141560608501521515608084015260a083015201613a45565b608082015160031901613b485761014082015160c083015160a084015161010085015160408087015160608801516102a08901519251613a45979695949390602001615dd5565b608082015160041901613b8c578161026001518261014001518360c001518460a00151856101000151866102a00151604051602001613a4596959493929190615e18565b608082015160011901613c1f575f826102800151806020019051810190613bb39190615896565b610140840151610260850151610220860151610240870151604051949550613c089486906020019485526001600160a01b03938416602086015291831660408501528216606084015216608082015260a00190565b6040516020818303038152906040529150506104f7565b608082015160131480613c36575060808201516019145b80613c4557506080820151602d145b15613c85576101408201516102608301516102208401516040805160208101949094526001600160a01b0392831690840152166060820152608001613a45565b60808201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901613cfa57610260820151610220830151610240840151610140850151604080516001600160a01b0395861660208201529385169084015292166060820152608081019190915260a001613a45565b6080820151601c1901613d91575f80836102a00151806020019051810190613d229190615e6d565b6102608801516101008901516101408a0151604080516001600160a01b03909416602085015260ff8087169185019190915284166060840152608083019190915260a0820152919550935060c0019150613d799050565b604051602081830303815290604052925050506104f7565b6080820151601b1901613e2857816102800151806020019051810190613db79190615896565b61022083015161024084015160408086015160608701516101408801516102608901519351613a4597969594906020016001600160a01b0397881681529587166020870152938616604086015260ff92831660608601529116608084015260a083015290911660c082015260e00190565b6080820151601f1901613e5c5761026082015182516101408401516102a0850151604051613a459493929190602001615eb0565b60808201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffde01613f3c575f836001600160a01b0316638e97e2a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ec4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ee89190615896565b610220840151610240850151610140860151610100870151604080516001600160a01b03808816602083015295861691810191909152939092166060840152608083015260a082015290915060c001613c08565b60808201516025190161406c575f836001600160a01b0316633784a05d6040518163ffffffff1660e01b81526004016040805180830381865afa158015613f85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fa99190615c18565b5090505f846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061400d9190615896565b610220850151610240860151610140870151604080516001600160a01b03888116602083015294851691810182905292841660608401819052938516908114608084015290921460a082015260c081019190915290915060e001613d79565b60808201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb016140d0576102608201518251610140840151604080516001600160a01b039094166020850152911515918301919091526060820152608001613a45565b6080820151602f190161414a578161028001518060200190518101906140f69190615896565b610260830151610220840151610240850151610140860151604080516001600160a01b03968716602082015294861690850152918416606084015292909216608082015260a081019190915260c001613a45565b60808201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf016104f757610260820151610220830151610140840151604080516001600160a01b03948516602082015293909216918301919091526060820152608001613a45565b5f805f866001600160a01b031663edf26d9b876040518263ffffffff1660e01b81526004016141e491815260200190565b602060405180830381865afa1580156141ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142239190615896565b6001600160a01b031663cf6000cc60e01b87878760405160240161424993929190615edf565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516142b49190615860565b5f60405180830381855af49150503d805f81146142ec576040519150601f19603f3d011682016040523d82523d5f602084013e6142f1565b606091505b5091509150811561431957808060200190518101906143109190615c50565b925050506112c6565b80516004036143385761433361432e82615efd565b614be3565b61436f565b80515f03614355576143336143506103e8600a615f4c565b6105fb565b8060405162461bcd60e51b81526004016101a09190615806565b5050949350505050565b60605f83515f14614396578351614391906001615f4c565b614399565b60015b90508067ffffffffffffffff8111156143b4576143b4614d7b565b6040519080825280602002602001820160405280156143dd578160200160208202803683370190505b5091505f5b6143ed600183615921565b8110156144405784818151811061440657614406615818565b602002602001015183828151811061442057614420615818565b6001600160a01b03909216602092830291909101909101526001016143e2565b50828261444e600184615921565b8151811061445e5761445e615818565b60200260200101906001600160a01b031690816001600160a01b0316815250505092915050565b604080516001600160a01b0383811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa569e5710000000000000000000000000000000000000000000000000000000017905291515f92839283929187169161450c9190615860565b5f60405180830381855afa9150503d805f8114614544576040519150601f19603f3d011682016040523d82523d5f602084013e614549565b606091505b50915091508161455d575f925050506104f7565b60200151949350505050565b60605f83515f14614586578351614581906001615f4c565b614589565b60015b90508067ffffffffffffffff8111156145a4576145a4614d7b565b6040519080825280602002602001820160405280156145cd578160200160208202803683370190505b5091505f5b6145dd600183615921565b811015614623578481815181106145f6576145f6615818565b602002602001015183828151811061461057614610615818565b60209081029190910101526001016145d2565b508282614631600184615921565b8151811061464157614641615818565b6020026020010181815250505092915050565b5f8060605f84868151811061466b5761466b615818565b602002602001015190505f805f808d6001600160a01b0316856040516024016146949190615ac1565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0f9c7a400000000000000000000000000000000000000000000000000000000179052516146f79190615860565b5f60405180830381855afa9150503d805f811461472f576040519150601f19603f3d011682016040523d82523d5f602084013e614734565b606091505b50915091508161474b5761474b611a008b176105fb565b8080602001905181019061475f9190615ad3565b809450819550505050505f808d6001600160a01b03168d868e8e88888b6101000151620f424061478f9190615921565b6040805160208101969096528501939093526060840191909152608083015260a082015260c00160408051601f19818403018152908290526147d5939291602401615f5f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe2fd899500000000000000000000000000000000000000000000000000000000179052516148389190615860565b5f60405180830381855afa9150503d805f8114614870576040519150601f19603f3d011682016040523d82523d5f602084013e614875565b606091505b50915091508161488c5761488c611a008b176105fb565b808060200190518101906148a09190615f89565b955050505050818060200190518101906148ba9190615ad3565b909b909a5098505050505050505050565b606085614931578484856001600160a01b0316856001600160a01b0316146148f357846148f5565b835b604080516001600160a01b03948516602082015292841690830152909116606082015260800160405160208183030381529060405290506102ab565b50604080516001600160a01b0395861660208201529385168482015291841660608401529092166080808301919091528251808303909101815260a0909101909152919050565b6040805185151560208201526001600160a01b0380861692820192909252818416606082810191909152918316608082015260a0016112b4565b5f60018214806149c25750601182145b806149cd5750600882145b806149d85750602b82145b806149e35750602c82145b806149ee5750602282145b806149f95750602482145b80614a045750602e82145b806104f757505060151490565b5f80614a266001600160a01b038516866104e8565b9150614a3b6001600160a01b038416866104e8565b9050935093915050565b60405160f886811b7fff00000000000000000000000000000000000000000000000000000000000000908116602084015286821b8116602184015285821b811660228401529084901b166023820152606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660248301525f91829081906001600160a01b038b16907f8b0ea186000000000000000000000000000000000000000000000000000000009060380160408051601f1981840301815290829052614b1391602401615806565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051614b7e9190615860565b5f60405180830381855afa9150503d805f8114614bb6576040519150601f19603f3d011682016040523d82523d5f602084013e614bbb565b606091505b509150915081614bcf57614bcf601b6105fb565b808060200190518101906148ba9190615d0b565b604051818152600481fd5b6040518060a001604052805f81526020015f81526020016060815260200160608152602001614cce604051806102e001604052805f151581526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b0316815260200160608152602001606081526020015f81525090565b905290565b60405180604001604052806002906020820280368337509192915050565b5f8060208385031215614d02575f80fd5b823567ffffffffffffffff80821115614d19575f80fd5b818501915085601f830112614d2c575f80fd5b813581811115614d3a575f80fd5b8660208260051b8501011115614d4e575f80fd5b60209290920196919550909350505050565b8015158114614d6d575f80fd5b50565b8035612d3881614d60565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516102e0810167ffffffffffffffff81118282101715614dcc57614dcc614d7b565b60405290565b6040516101c0810167ffffffffffffffff81118282101715614dcc57614dcc614d7b565b604051610160810167ffffffffffffffff81118282101715614dcc57614dcc614d7b565b604051601f8201601f1916810167ffffffffffffffff81118282101715614e4357614e43614d7b565b604052919050565b6001600160a01b0381168114614d6d575f80fd5b8035612d3881614e4b565b5f67ffffffffffffffff821115614e8357614e83614d7b565b50601f01601f191660200190565b5f82601f830112614ea0575f80fd5b8135614eb3614eae82614e6a565b614e1a565b818152846020838601011115614ec7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6102e08284031215614ef4575f80fd5b614efc614da8565b9050614f0782614d70565b8152614f1560208301614d70565b602082015260408281013590820152606080830135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152610100808301359082015261012080830135908201526101408083013590820152610160808301359082015261018080830135908201526101a080830135908201526101c080830135908201526101e080830135908201526102008083013590820152610220614fc7818401614e5f565b90820152610240614fd9838201614e5f565b90820152610260614feb838201614e5f565b908201526102808281013567ffffffffffffffff8082111561500b575f80fd5b61501786838701614e91565b838501526102a0925082850135915080821115615032575f80fd5b5061503f85828601614e91565b8284015250506102c080830135818301525092915050565b5f805f805f60a0868803121561506b575f80fd5b853561507681614d60565b9450602086013567ffffffffffffffff80821115615092575f80fd5b61509e89838a01614ee3565b95506040880135945060608801359150808211156150ba575f80fd5b6150c689838a01614e91565b935060808801359150808211156150db575f80fd5b506150e888828901614e91565b9150509295509295909350565b5f5b8381101561510f5781810151838201526020016150f7565b50505f910152565b5f815180845261512e8160208601602086016150f5565b601f01601f19169290920160200192915050565b602081526001600160a01b038251166020820152602082015160408201525f60408301516080606084015261517a60a0840182615117565b90506060840151601f198483030160808501526102ab8282615117565b5f67ffffffffffffffff8211156151b0576151b0614d7b565b5060051b60200190565b5f82601f8301126151c9575f80fd5b813560206151d9614eae83615197565b8083825260208201915060208460051b8701019350868411156151fa575f80fd5b602086015b8481101561076557803583529183019183016151ff565b5f8060408385031215615227575f80fd5b823567ffffffffffffffff8082111561523e575f80fd5b818501915085601f830112615251575f80fd5b81356020615261614eae83615197565b82815260059290921b8401810191818101908984111561527f575f80fd5b948201945b838610156152a657853561529781614e4b565b82529482019490820190615284565b965050860135925050808211156152bb575f80fd5b506152c8858286016151ba565b9150509250929050565b5f6101c082840312156152e3575f80fd5b6152eb614dd2565b90506152f682614e5f565b815261530460208301614e5f565b602082015261531560408301614e5f565b604082015261532660608301614d70565b606082015261533760808301614d70565b608082015260a0828101359082015260c0808301359082015260e08083013590820152610100808301359082015261012080830135908201526101408083013590820152610160808301359082015261018080830135908201526101a09182013591810191909152919050565b5f82601f8301126153b3575f80fd5b813560206153c3614eae83615197565b808382526020820191506101c060208186028801019450878511156153e6575f80fd5b602087015b8581101561540a576153fd89826152d2565b84529284019281016153eb565b5090979650505050505050565b5f805f805f8060c0878903121561542c575f80fd5b863561543781614e4b565b9550602087013594506040870135935060608701359250608087013561545c81614d60565b915060a087013567ffffffffffffffff80821115615478575f80fd5b90880190610300828b03121561548c575f80fd5b615494614df6565b61549d83614e5f565b81526154ab60208401614d70565b602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101006154fa818501614e5f565b908201526101208381013583811115615511575f80fd5b61551d8d8287016153a4565b82840152505061014091506155348b8385016152d2565b828201528093505050509295509295509295565b5f815180845260208085019450602084015f5b838110156155805781516001600160a01b03168752958201959082019060010161555b565b509495945050505050565b8051151582525f6102e060208301516155a8602086018215159052565b5060408381015190850152606080840151908501526080808401519085015260a0808401519085015260c0808401519085015260e08084015190850152610100808401519085015261012080840151908501526101408084015190850152610160808401519085015261018080840151908501526101a080840151908501526101c080840151908501526101e080840151908501526102008084015190850152610220808401516001600160a01b03908116918601919091526102408085015182169086015261026080850151909116908501526102808084015181860183905261569583870182615117565b925050506102a080840151858303828701526156b18382615117565b6102c095860151969095019590955250919392505050565b5f6020808352835181840152808401516040840152604084015160a060608501526156f760c0850182615548565b90506060850151601f19808684030160808701528282518085528585019150858160051b86010186850194505f5b82811015615751578487830301845261573f82875161558b565b95880195938801939150600101615725565b5060808a01519650838982030160a08a015261576d818861558b565b9a9950505050505050505050565b5f805f805f8060c08789031215615790575f80fd5b863561579b81614e4b565b955060208701356157ab81614e4b565b945060408701356157bb81614d60565b935060608701356157cb81614d60565b92506080870135915060a087013567ffffffffffffffff8111156157ed575f80fd5b6157f989828a01614ee3565b9150509295509295509295565b602081525f6104f46020830184615117565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215615855575f80fd5b81356105f481614e4b565b5f82516158718184602087016150f5565b9190910192915050565b5f6020828403121561588b575f80fd5b81516105f481614d60565b5f602082840312156158a6575f80fd5b81516105f481614e4b565b5f80604083850312156158c2575f80fd5b82516158cd81614e4b565b6020939093015192949293505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176104f7576104f76158dd565b818103818111156104f7576104f76158dd565b5f815180845260208085019450602084015f5b8381101561558057815187529582019590820190600101615947565b5f602080835260c083016001600160a01b0380865116838601528083870151166040860152604086015160a0606087015282815180855260e08801915085830194505f92505b808310156159cb578451841682529385019360019290920191908501906159a9565b5060608801519450601f199350838782030160808801526159ec8186615934565b94505050506080850151818584030160a086015261044b8382615934565b602081526001600160a01b0382511660208201526020820151151560408201525f6040830151615a4560608401826001600160a01b03169052565b50606083015160e06080840152615a60610100840182615548565b90506080840151601f19808584030160a0860152615a7e8383615934565b925060a08601519150808584030160c086015250615a9c8282615934565b91505060c0840151615ab960e08501826001600160a01b03169052565b509392505050565b602081525f6104f4602083018461558b565b5f8060408385031215615ae4575f80fd5b505080516020909101519092909150565b5f82615b28577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b600181815b80851115615b6757815f1904821115615b4d57615b4d6158dd565b80851615615b5a57918102915b93841c9390800290615b32565b509250929050565b5f82615b7d575060016104f7565b81615b8957505f6104f7565b8160018114615b9f5760028114615ba957615bc5565b60019150506104f7565b60ff841115615bba57615bba6158dd565b50506001821b6104f7565b5060208310610133831016604e8410600b8410161715615be8575081810a6104f7565b615bf28383615b2d565b805f1904821115615c0557615c056158dd565b029392505050565b5f6104f48383615b6f565b5f8060408385031215615c29575f80fd5b8251615c3481614e4b565b6020840151909250615c4581614e4b565b809150509250929050565b5f60208284031215615c60575f80fd5b5051919050565b5f805f60608486031215615c79575f80fd5b8351615c8481614e4b565b6020850151909350615c9581614e4b565b6040850151909250615ca681614e4b565b809150509250925092565b828152604060208201525f6112c66040830184615117565b5f82601f830112615cd8575f80fd5b8151615ce6614eae82614e6a565b818152846020838601011115615cfa575f80fd5b6112c68260208301602087016150f5565b5f8060408385031215615d1c575f80fd5b82519150602083015167ffffffffffffffff811115615d39575f80fd5b6152c885828601615cc9565b5f805f8060808587031215615d58575f80fd5b505082516020840151604085015160609095015191969095509092509050565b6001600160a01b0386168152841515602082015283604082015282606082015260a060808201525f61044860a0830184615117565b838152606060208201525f615dc56060830185615117565b9050826040830152949350505050565b8781528660208201528560408201528460608201528360808201528260a082015260e060c08201525f615e0b60e0830184615117565b9998505050505050505050565b6001600160a01b038716815285602082015284604082015283606082015282608082015260c060a08201525f615e5160c0830184615117565b98975050505050505050565b805160ff81168114612d38575f80fd5b5f805f8060808587031215615e80575f80fd5b8451935060208501519250615e9760408601615e5d565b9150615ea560608601615e5d565b905092959194509250565b6001600160a01b03851681528315156020820152826040820152608060608201525f6102a86080830184615117565b838152826020820152606060408201525f6102ab6060830184615117565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015615f445780818460040360031b1b83161693505b505050919050565b808201808211156104f7576104f76158dd565b838152606060208201525f615f77606083018561558b565b828103604084015261044b8185615117565b5f60208284031215615f99575f80fd5b815167ffffffffffffffff811115615faf575f80fd5b6112c684828501615cc956fea26469706673582212204ae155919b566b9f561806a6b8cfda7f5630709b3c30009629ef564c57d9eb5964736f6c63430008170033