608060405234801562000010575f80fd5b5060408051600e8082526101e082019092525f91602082016101c0803683370190505090505f632c40805960e01b82826200004b8162000e38565b93508151811062000060576200006062000e5d565b6001600160e01b031990921660209283029190910190910152639142376560e01b82826200008e8162000e38565b935081518110620000a357620000a362000e5d565b6001600160e01b0319909216602092830291909101909101526307e4c70760e21b8282620000d18162000e38565b935081518110620000e657620000e662000e5d565b6001600160e01b031990921660209283029190910190910152637a0ed62760e01b8282620001148162000e38565b93508151811062000129576200012962000e5d565b6001600160e01b0319909216602092830291909101909101526356fe50af60e11b8282620001578162000e38565b9350815181106200016c576200016c62000e5d565b6001600160e01b0319909216602092830291909101909101526314bbdacb60e21b82826200019a8162000e38565b935081518110620001af57620001af62000e5d565b6001600160e01b0319909216602092830291909101909101526366ffd66360e11b8282620001dd8162000e38565b935081518110620001f257620001f262000e5d565b6001600160e01b031990921660209283029190910190910152637eb1e76160e01b8282620002208162000e38565b93508151811062000235576200023562000e5d565b6001600160e01b03199092166020928302919091019091015263d3b8614160e01b8282620002638162000e38565b93508151811062000278576200027862000e5d565b6001600160e01b0319909216602092830291909101909101526301ffc9a760e01b8282620002a68162000e38565b935081518110620002bb57620002bb62000e5d565b6001600160e01b031990921660209283029190910190910152620002e86301ffc9a760e01b60016200051e565b638da5cb5b60e01b8282620002fd8162000e38565b93508151811062000312576200031262000e5d565b6001600160e01b03199092166020928302919091019091015263455a8a8560e11b8282620003408162000e38565b93508151811062000355576200035562000e5d565b6001600160e01b03199092166020928302919091019091015263f2fde38b60e01b8282620003838162000e38565b93508151811062000398576200039862000e5d565b6001600160e01b0319909216602092830291909101909101526379ba509760e01b8282620003c68162000e38565b935081518110620003db57620003db62000e5d565b6001600160e01b031990921660209283029190910190910152620004086307f5828d60e41b60016200051e565b6040805160018082528183019092525f91816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816200041e579050506040805160608101909152308152909150602081015f815260200184815250815f8151811062000481576200048162000e5d565b6020026020010181905250620004ad815f60405180602001604052805f8152506200058b60201b60201c565b335f9081527f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2ce60205260409020805460ff81161560ff19909116179055620004f53362000757565b620005155f8051602062003942833981519152805460ff19166001179055565b50505062000ff5565b6001600160e01b03198083169003620005715760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420496e7465726661636560781b604482015260640160405180910390fd5b620005876001600160e01b03198316826200076e565b5050565b5f80516020620039428339815191528054610100900461ffff81169081905f9060071615620005cb5750600381901c5f9081526005840160205260409020545b5f5b8751811015620006c5575f888281518110620005ed57620005ed62000e5d565b602002602001015190505f816020015190508160400151515f036200062557604051632b29bef760e11b815260040160405180910390fd5b5f8160028111156200063b576200063b62000e71565b036200065a576200064f87868685620007e4565b9095509350620006ba565b600181600281111562000671576200067162000e71565b03620006895762000683878362000958565b620006ba565b6002816002811115620006a057620006a062000e71565b03620006ba57620006b48786868562000aa7565b90955093505b5050600101620005cd565b50828214620006e357835462ffff00191661010061ffff8416021784555b60078216156200070557600382901c5f90815260058501602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738787876040516200073a9392919062000ed6565b60405180910390a16200074e868662000ccb565b50505050505050565b6200076b6001600160a01b03821662000dae565b50565b6001600160e01b031980831690036200079a576040516309b5e76560e31b815260040160405180910390fd5b6001600160e01b0319919091165f9081527f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2d160205260409020805460ff1916911515919091179055565b80515f9081906001600160a01b03163b156200082d578251306001600160a01b03909116036200082757604051631eb1459960e31b815260040160405180910390fd5b62000858565b82516001600160a01b0316301462000858576040516308a6f82b60e31b815260040160405180910390fd5b5f5b8360400151518110156200094b575f8460400151828151811062000882576200088262000e5d565b6020908102919091018101516001600160e01b031981165f90815260048b01909252604090912054909150606081901c15620008d1576040516318c6bbbf60e11b815260040160405180910390fd5b85516001600160e01b03198381165f81815260048d016020526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c199990991617978190036200093b57600389901c5f90815260058b0160205260408120989098555b505050600195860195016200085a565b5093959294509192505050565b80516001600160a01b03163b62000982576040516308a6f82b60e31b815260040160405180910390fd5b5f5b81604001515181101562000aa2575f82604001518281518110620009ac57620009ac62000e5d565b6020908102919091018101516001600160e01b031981165f90815260048701909252604090912054909150606081901c80620009fb5760405163d5cf065560e01b815260040160405180910390fd5b306001600160a01b0382160362000a2557604051631eb1459960e31b815260040160405180910390fd5b845f01516001600160a01b0316816001600160a01b03160362000a5b576040516377af18c160e01b815260040160405180910390fd5b5083516001600160e01b0319929092165f908152600486016020526040902060609290921b6001600160601b0319166001600160601b039190911617905560010162000984565b505050565b80515f9081906001600160a01b03161562000ad5576040516326f9b68d60e21b815260040160405180910390fd5b600385901c600786165f5b85604001515181101562000cb7575f8660400151828151811062000b085762000b0862000e5d565b6020908102919091018101516001600160e01b031981165f90815260048d01909252604090912054909150606081901c62000b565760405163d5cf065560e01b815260040160405180910390fd5b30606082901c0362000b7b57604051631eb1459960e31b815260040160405180910390fd5b5f89900362000ba6575f199094015f81815260058c0160205260409020549850936007935062000bad565b5f19909301925b600584901b89901b5f806001600160e01b03198084169086161462000c00576001600160e01b031983165f90815260048f016020526040902080546001600160601b0319166001600160601b0386161790555b50506001600160e01b031983165f90815260048d016020526040812055611fff600383901c1660e0600584901b1687821462000c65575f82815260058f016020526040902080546001600160e01b031980841c19909116908516831c17905562000c88565b80836001600160e01b031916901c816001600160e01b03195f1b901c198d16179b505b865f0362000ca5575f88815260058f01602052604081208190559b505b50506001909301925062000ae0915050565b5060039190911b1796939550929350505050565b8051156001600160a01b038316151462000cf857604051630685cf0360e11b815260040160405180910390fd5b6001600160a01b0382161562000587576001600160a01b038216301462000d42576001600160a01b0382163b62000d42576040516308a6f82b60e31b815260040160405180910390fd5b5f826001600160a01b03168260405162000d5d919062000fd8565b5f60405180830381855af49150503d805f811462000d97576040519150601f19603f3d011682016040523d82523d5f602084013e62000d9c565b606091505b505090508062000aa2573d5f803e3d5ffd5b5f8051602062003942833981519152805460ff16158062000dd657506001600160a01b038216155b1562000e10576001810180546001600160a01b0384166001600160a01b031990911617905580546301000000600160b81b03191681555050565b80546001600160a01b0383166301000000026301000000600160b81b03199091161781555050565b5f6001820162000e5657634e487b7160e01b5f52601160045260245ffd5b5060010190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f5b8381101562000ea157818101518382015260200162000e87565b50505f910152565b5f815180845262000ec281602086016020860162000e85565b601f01601f19169290920160200192915050565b5f6060808301818452808751808352608092508286019150828160051b8701016020808b015f5b8481101562000fa657898403607f19018652815180516001600160a01b0316855283810151898601906003811062000f4357634e487b7160e01b5f52602160045260245ffd5b868601526040918201519186018a9052815190819052908401905f90898701905b8083101562000f905783516001600160e01b031916825292860192600192909201919086019062000f64565b5097850197955050509082019060010162000efd565b50506001600160a01b038a1690880152868103604088015262000fca818962000ea9565b9a9950505050505050505050565b5f825162000feb81846020870162000e85565b9190910192915050565b61293f80620010035f395ff3fe6080604052600436106100e0575f3560e01c80638ab5150a1161007e578063adfca15e11610058578063adfca15e14610315578063cdffacc614610341578063d3b8614114610360578063f2fde38b1461037f576100e7565b80638ab5150a146102925780638da5cb5b146102e257806391423765146102f6576100e7565b806352ef6b2c116100ba57806352ef6b2c1461021d57806379ba50971461023e5780637a0ed627146102525780637eb1e76114610273576100e7565b806301ffc9a7146101605780631f931c1c146101945780632c408059146101b3576100e7565b366100e757005b5f6100f061039e565b905073ffffffffffffffffffffffffffffffffffffffff81163b610140576040517fe84f0f9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b365f80375f80365f845af43d5f803e80801561015a573d5ff35b3d5ffd5b005b34801561016b575f80fd5b5061017f61017a36600461200d565b610439565b60405190151581526020015b60405180910390f35b34801561019f575f80fd5b5061015e6101ae3660046120a5565b610449565b3480156101be575f80fd5b507f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cd5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018b565b348015610228575f80fd5b506102316104d8565b60405161018b919061214e565b348015610249575f80fd5b5061015e6104e7565b34801561025d575f80fd5b506102666105d9565b60405161018b9190612202565b34801561027e575f80fd5b5061015e61028d3660046122a8565b6105e3565b34801561029d575f80fd5b507f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb546301000000900473ffffffffffffffffffffffffffffffffffffffff166101f8565b3480156102ed575f80fd5b506101f86107f4565b348015610301575f80fd5b5061015e6103103660046122a8565b6107fd565b348015610320575f80fd5b5061033461032f3660046122a8565b6108a1565b60405161018b91906122c3565b34801561034c575f80fd5b506101f861035b36600461200d565b6108ac565b34801561036b575f80fd5b5061015e61037a3660046122a8565b610904565b34801561038a575f80fd5b5061015e6103993660046122a8565b6109b5565b5f80357fffffffff000000000000000000000000000000000000000000000000000000001681527f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cf602052604090205460601c7f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb8161043557600281015473ffffffffffffffffffffffffffffffffffffffff1691505b5090565b5f610443826109fd565b92915050565b61045233610a55565b610488576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104d161049585876123f0565b8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac992505050565b5050505050565b60606104e2610cbb565b905090565b6104f033610eb7565b610526576040517f1fad56d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105d77f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb80547f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff63010000008404161790557fffffffffffffffffff0000000000000000000000000000000000000000ffffff169055565b565b60606104e2610efd565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9c5c31bd0000000000000000000000000000000000000000000000000000000017905290515f91829173ffffffffffffffffffffffffffffffffffffffff8516916106609161253e565b5f604051808303815f865af19150503d805f8114610699576040519150601f19603f3d011682016040523d82523d5f602084013e61069e565b606091505b50915091508161070e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d6f64756c6546616365747328292063616c6c206661696c6564000000000000604482015260640160405180910390fd5b6040805160018082528183019092525f91816020015b60408051606080820183525f808352602083015291810191909152815260200190600190039081610724579050509050818060200190518101906107689190612559565b5f81518110610779576107796126de565b6020026020010151815f81518110610793576107936126de565b60200260200101819052506107b7815f60405180602001604052805f815250610ac9565b7f501ff1bd7e085ea3ea28cd565047121d0a77552d31107ef3ef2a315eede50596816040516107e691906127f7565b60405180910390a150505050565b5f6104e26113cf565b61080633610a55565b61083c576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cd80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550565b50565b60606104438261140e565b7fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cf602052604081205460601c610443565b61090d33610a55565b610943576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff165f9081527f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2ce6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b6109be33610a55565b6109f4576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61089e816115b1565b7fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2d1602052604081205460ff16610443565b5f610a947f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b7f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb8054610100900461ffff81169081905f9060071615610b1a5750600381901c5f9081526005840160205260409020545b5f5b8751811015610c13575f888281518110610b3857610b386126de565b602002602001015190505f816020015190508160400151515f03610b88576040517f56537dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816002811115610b9b57610b9b61270b565b03610bb657610bac878686856115d0565b9095509350610c09565b6001816002811115610bca57610bca61270b565b03610bde57610bd987836117f3565b610c09565b6002816002811115610bf257610bf261270b565b03610c0957610c0387868685611a1e565b90955093505b5050600101610b1c565b50828214610c4c5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1661010061ffff8416021784555b6007821615610c6d57600382901c5f90815260058501602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673878787604051610ca093929190612809565b60405180910390a1610cb28686611d8c565b50505050505050565b7f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb805460609190610100900461ffff1667ffffffffffffffff811115610d0357610d0361231c565b604051908082528060200260200182016040528015610d2c578160200160208202803683370190505b5091505f805f5b8354610100900461ffff16821015610eaf575f818152600585016020526040812054905b6008811015610e9a5783610d6a816128b4565b8754909550610100900461ffff1685119050610e9a57600581901b82901b7fffffffff0000000000000000000000000000000000000000000000000000000081165f90815260048801602052604081205460601c90805b88811015610e30578a8181518110610ddb57610ddb6126de565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e1e5760019150610e30565b80610e28816128b4565b915050610dc1565b508015610e3f57505050610e88565b818a8981518110610e5257610e526126de565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015287610e81816128b4565b9850505050505b80610e92816128b4565b915050610d57565b50508080610ea7906128b4565b915050610d33565b505082525090565b7f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb545f906301000000900473ffffffffffffffffffffffffffffffffffffffff16610a94565b7f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb805460609190610100900461ffff1667ffffffffffffffff811115610f4557610f4561231c565b604051908082528060200260200182016040528015610f8a57816020015b604080518082019091525f815260606020820152815260200190600190039081610f635790505b5081549092505f90610100900461ffff1667ffffffffffffffff811115610fb357610fb361231c565b604051908082528060200260200182016040528015610fdc578160200160208202803683370190505b5090505f805f5b8454610100900461ffff16821015611360575f818152600586016020526040812054905b600881101561134b578361101a816128b4565b8854909550610100900461ffff168511905061134b57600581901b82901b7fffffffff0000000000000000000000000000000000000000000000000000000081165f90815260048901602052604081205460601c90805b888110156111d0578273ffffffffffffffffffffffffffffffffffffffff168c82815181106110a2576110a26126de565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16036111be57838c82815181106110db576110db6126de565b6020026020010151602001518b83815181106110f9576110f96126de565b602002602001015160ff1681518110611114576111146126de565b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060ff8a8281518110611174576111746126de565b602002602001015160ff1610611188575f80fd5b89818151811061119a5761119a6126de565b6020026020010180518091906111af906128eb565b60ff16905250600191506111d0565b806111c8816128b4565b915050611071565b5080156111df57505050611339565b818b89815181106111f2576111f26126de565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff9091169052895461ffff6101009091041667ffffffffffffffff81111561123b5761123b61231c565b604051908082528060200260200182016040528015611264578160200160208202803683370190505b508b8981518110611277576112776126de565b602002602001015160200181905250828b8981518110611299576112996126de565b6020026020010151602001515f815181106112b6576112b66126de565b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506001898981518110611316576113166126de565b60ff9092166020928302919091019091015287611332816128b4565b9850505050505b80611343816128b4565b915050611007565b50508080611358906128b4565b915050610fe3565b505f5b828110156113c4575f84828151811061137e5761137e6126de565b602002602001015160ff1690505f87838151811061139e5761139e6126de565b6020026020010151602001519050818152505080806113bc906128b4565b915050611363565b508185525050505090565b5f6104e27f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cc5473ffffffffffffffffffffffffffffffffffffffff1690565b7f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb805460609190610100900461ffff1667ffffffffffffffff8111156114565761145661231c565b60405190808252806020026020018201604052801561147f578160200160208202803683370190505b5091505f805f5b8354610100900461ffff168210156115a7575f818152600585016020526040812054905b600881101561159257836114bd816128b4565b8754909550610100900461ffff168511905061159257600581901b82901b7fffffffff0000000000000000000000000000000000000000000000000000000081165f90815260048801602052604090205460601c73ffffffffffffffffffffffffffffffffffffffff8a160361157f5780888781518110611540576115406126de565b7fffffffff00000000000000000000000000000000000000000000000000000000909216602092830291909101909101528561157b816128b4565b9650505b508061158a816128b4565b9150506114aa565b5050808061159f906128b4565b915050611486565b5050825250919050565b61089e8173ffffffffffffffffffffffffffffffffffffffff16611edd565b80515f90819073ffffffffffffffffffffffffffffffffffffffff163b156116495782513073ffffffffffffffffffffffffffffffffffffffff90911603611644576040517ff58a2cc800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611699565b825173ffffffffffffffffffffffffffffffffffffffff163014611699576040517f4537c15800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8360400151518110156117e6575f846040015182815181106116bf576116bf6126de565b6020908102919091018101517fffffffff0000000000000000000000000000000000000000000000000000000081165f90815260048b01909252604090912054909150606081901c1561173e576040517f318d777e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85517fffffffff000000000000000000000000000000000000000000000000000000008381165f81815260048d016020526040902060609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168b1790925560058a901b60e090811692831c91831c199990991617978190036117d757600389901c5f90815260058b0160205260408120989098555b5050506001958601950161169b565b5093959294509192505050565b805173ffffffffffffffffffffffffffffffffffffffff163b611842576040517f4537c15800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b816040015151811015611a19575f82604001518281518110611868576118686126de565b6020908102919091018101517fffffffff0000000000000000000000000000000000000000000000000000000081165f90815260048701909252604090912054909150606081901c806118e7576040517fd5cf065500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff821603611936576040517ff58a2cc800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361199e576040517f77af18c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083517fffffffff00000000000000000000000000000000000000000000000000000000929092165f908152600486016020526040902060609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116179055600101611844565b505050565b80515f90819073ffffffffffffffffffffffffffffffffffffffff1615611a71576040517f9be6da3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600385901c600786165f5b856040015151811015611d78575f86604001518281518110611aa057611aa06126de565b6020908102919091018101517fffffffff0000000000000000000000000000000000000000000000000000000081165f90815260048d01909252604090912054909150606081901c611b1e576040517fd5cf065500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b30606082901c03611b5b576040517ff58a2cc800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f899003611ba3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9094015f81815260058c01602052604090205498509360079350611bc9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909301925b600584901b89901b5f807fffffffff0000000000000000000000000000000000000000000000000000000080841690861614611c68577fffffffff0000000000000000000000000000000000000000000000000000000083165f90815260048f016020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555b50507fffffffff0000000000000000000000000000000000000000000000000000000083165f90815260048d016020526040812055611fff600383901c1660e0600584901b16878214611cfb575f82815260058f016020526040902080547fffffffff0000000000000000000000000000000000000000000000000000000080841c19909116908516831c179055611d4b565b80837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff000000000000000000000000000000000000000000000000000000005f1b901c198d16179b505b865f03611d67575f88815260058f01602052604081208190559b505b505060019093019250611a7c915050565b5060039190911b1796939550929350505050565b80511573ffffffffffffffffffffffffffffffffffffffff83161514611dde576040517f0d0b9e0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615611ed95773ffffffffffffffffffffffffffffffffffffffff82163014611e655773ffffffffffffffffffffffffffffffffffffffff82163b611e65576040517f4537c15800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051611e8b919061253e565b5f60405180830381855af49150503d805f8114611ec3576040519150601f19603f3d011682016040523d82523d5f602084013e611ec8565b606091505b5050905080611a19573d5f803e3d5ffd5b5050565b7f3e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb805460ff161580611f23575073ffffffffffffffffffffffffffffffffffffffff8216155b15611f965760018101805473ffffffffffffffffffffffffffffffffffffffff84167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905580547fffffffffffffffffff0000000000000000000000000000000000000000ffffff1681555050565b805473ffffffffffffffffffffffffffffffffffffffff83166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff9091161781555050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461089e575f80fd5b5f6020828403121561201d575f80fd5b813561202881611fe0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089e575f80fd5b803561205b8161202f565b919050565b5f8083601f840112612070575f80fd5b50813567ffffffffffffffff811115612087575f80fd5b60208301915083602082850101111561209e575f80fd5b9250929050565b5f805f805f606086880312156120b9575f80fd5b853567ffffffffffffffff808211156120d0575f80fd5b818801915088601f8301126120e3575f80fd5b8135818111156120f1575f80fd5b8960208260051b8501011115612105575f80fd5b6020830197508096505061211b60208901612050565b94506040880135915080821115612130575f80fd5b5061213d88828901612060565b969995985093965092949392505050565b602080825282518282018190525f9190848201906040850190845b8181101561219b57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612169565b50909695505050505050565b5f8151808452602080850194508084015f5b838110156121f75781517fffffffff0000000000000000000000000000000000000000000000000000000016875295820195908201906001016121b9565b509495945050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b8381101561229a578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052612287878501826121a7565b9588019593505090860190600101612227565b509098975050505050505050565b5f602082840312156122b8575f80fd5b81356120288161202f565b602080825282518282018190525f9190848201906040850190845b8181101561219b5783517fffffffff0000000000000000000000000000000000000000000000000000000016835292840192918401916001016122de565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561236c5761236c61231c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156123b9576123b961231c565b604052919050565b5f67ffffffffffffffff8211156123da576123da61231c565b5060051b60200190565b6003811061089e575f80fd5b5f6124026123fd846123c1565b612372565b83815260208082019190600586811b86013681111561241f575f80fd5b865b8181101561250f57803567ffffffffffffffff80821115612441575f8081fd5b818a01915060608236031215612456575f8081fd5b61245e612349565b82356124698161202f565b815282870135612478816123e4565b818801526040838101358381111561248f575f8081fd5b939093019236601f8501126124a5575f92508283fd5b833592506124b56123fd846123c1565b83815292871b840188019288810190368511156124d1575f8081fd5b948901945b848610156124f85785356124e981611fe0565b825294890194908901906124d6565b918301919091525088525050948301948301612421565b5092979650505050505050565b5f5b8381101561253657818101518382015260200161251e565b50505f910152565b5f825161254f81846020870161251c565b9190910192915050565b5f602080838503121561256a575f80fd5b825167ffffffffffffffff80821115612581575f80fd5b818501915085601f830112612594575f80fd5b81516125a26123fd826123c1565b81815260059190911b830184019084810190888311156125c0575f80fd5b8585015b838110156126d1578051858111156125db575f8081fd5b86016060818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001811315612610575f8081fd5b612618612349565b898301516126258161202f565b8152604083810151612636816123e4565b828c015291830151918883111561264c575f8081fd5b82840193508d603f850112612662575f92508283fd5b8a84015192506126746123fd846123c1565b83815260059390931b84018101928b8101908f851115612693575f8081fd5b948201945b848610156126ba5785516126ab81611fe0565b8252948c0194908c0190612698565b9183019190915250855250509186019186016125c4565b5098975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81518084526020808501808196508360051b810191508286015f805b868110156127e9578385038a528251606073ffffffffffffffffffffffffffffffffffffffff825116875287820151600381106127b9577f4e487b710000000000000000000000000000000000000000000000000000000085526021600452602485fd5b878901526040918201519187018190526127d5818801836121a7565b9b88019b9650505091850191600101612755565b509298975050505050505050565b602081525f6120286020830184612738565b606081525f61281b6060830186612738565b73ffffffffffffffffffffffffffffffffffffffff851660208401528281036040840152835180825261285581602084016020880161251c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160200195945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128e4576128e4612887565b5060010190565b5f60ff821660ff810361290057612900612887565b6001019291505056fea2646970667358221220b968ecefe33267fc6d5eccab26a45dafbc379f8536bcab90f343d5978f94b6ca64736f6c634300081400333e89671b5cac7e64af9492da70a4a8d6d2d8050d943dff39fa9c97f8870ee2cb