60806040526000600455600060055562093a806006556000600d5560006010556107d06015553480156200003257600080fd5b506040516200535a3803806200535a83398181016040528101906200005891906200051c565b8560016000819055506000600160006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000f15760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000e89190620005c9565b60405180910390fd5b62000102816200036f60201b60201c565b5084600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816015819055506001601860007f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050620005e6565b600060018054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004648262000437565b9050919050565b620004768162000457565b81146200048257600080fd5b50565b60008151905062000496816200046b565b92915050565b6000819050919050565b620004b1816200049c565b8114620004bd57600080fd5b50565b600081519050620004d181620004a6565b92915050565b6000620004e48262000457565b9050919050565b620004f681620004d7565b81146200050257600080fd5b50565b6000815190506200051681620004eb565b92915050565b60008060008060008060c087890312156200053c576200053b62000432565b5b60006200054c89828a0162000485565b96505060206200055f89828a0162000485565b95505060406200057289828a0162000485565b94505060606200058589828a0162000485565b93505060806200059889828a01620004c0565b92505060a0620005ab89828a0162000505565b9150509295509295509295565b620005c38162000457565b82525050565b6000602082019050620005e06000830184620005b8565b92915050565b614d6480620005f66000396000f3fe60806040526004361061027b5760003560e01c80637a78b6b71161014f578063cc1a378f116100c1578063f1c4db6d1161007a578063f1c4db6d14610958578063f23a6e6114610981578063f2fde38b146109be578063f60a038d146109e7578063fc5ba1a414610a10578063ffd189a714610a3b5761027b565b8063cc1a378f14610848578063cd3daf9d14610871578063d5d390641461089c578063df136d65146108c5578063e1eb5512146108f0578063ebe2b12b1461092d5761027b565b80638b876347116101135780638b876347146107315780638da5cb5b1461076e578063a694fc3a14610799578063bc197c81146107b5578063c6def076146107f2578063c8f33c911461081d5761027b565b80637a78b6b7146106705780637b0a47ee1461069957806380faa57d146106c45780638456cb59146106ef57806388eeb9b5146107065761027b565b806325633caf116101f35780633f4ba83a116101ac5780633f4ba83a146105725780635207129b146105895780635c975abb146105c657806370a08231146105f1578063715018a61461062e578063750142e6146106455761027b565b806325633caf146104a45780632e1a7d4d146104cd57806332e7c5bf146104e9578063386a9525146105145780633c6b16ab1461053f5780633d18b912146105685761027b565b806310accedb1161024557806310accedb1461038d578063150b7a02146103ca57806318160ddd146104075780631c1f78eb14610432578063221864ba1461045d578063222c9777146104795761027b565b80628cc26214610280578062c5c5ce146102bd57806301ffc9a7146102e85780630700037d146103255780630ce71e3214610362575b600080fd5b34801561028c57600080fd5b506102a760048036038101906102a291906136f3565b610a57565b6040516102b49190613739565b60405180910390f35b3480156102c957600080fd5b506102d2610bf3565b6040516102df9190613739565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a91906137ac565b610bf9565b60405161031c91906137f4565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906136f3565b610c61565b6040516103599190613739565b60405180910390f35b34801561036e57600080fd5b50610377610c79565b604051610384919061381e565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906136f3565b610c9f565b6040516103c19190613739565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec91906139ab565b610cb7565b6040516103fe9190613a3d565b60405180910390f35b34801561041357600080fd5b5061041c610ccb565b6040516104299190613739565b60405180910390f35b34801561043e57600080fd5b50610447610cd5565b6040516104549190613739565b60405180910390f35b61047760048036038101906104729190613a58565b610cec565b005b34801561048557600080fd5b5061048e611280565b60405161049b9190613ae4565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190613b5f565b6112a6565b005b6104e760048036038101906104e29190613a58565b61146a565b005b3480156104f557600080fd5b506104fe611998565b60405161050b9190613739565b60405180910390f35b34801561052057600080fd5b5061052961199e565b6040516105369190613739565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190613a58565b6119a4565b005b610570611ba3565b005b34801561057e57600080fd5b50610587612252565b005b34801561059557600080fd5b506105b060048036038101906105ab9190613be0565b612264565b6040516105bd919061381e565b60405180910390f35b3480156105d257600080fd5b506105db6122a6565b6040516105e891906137f4565b60405180910390f35b3480156105fd57600080fd5b50610618600480360381019061061391906136f3565b6122bd565b6040516106259190613739565b60405180910390f35b34801561063a57600080fd5b50610643612306565b005b34801561065157600080fd5b5061065a61231a565b6040516106679190613739565b60405180910390f35b34801561067c57600080fd5b5061069760048036038101906106929190613c5e565b612324565b005b3480156106a557600080fd5b506106ae612370565b6040516106bb9190613739565b60405180910390f35b3480156106d057600080fd5b506106d9612376565b6040516106e69190613739565b60405180910390f35b3480156106fb57600080fd5b50610704612390565b005b34801561071257600080fd5b5061071b6123a2565b604051610728919061381e565b60405180910390f35b34801561073d57600080fd5b50610758600480360381019061075391906136f3565b6123c8565b6040516107659190613739565b60405180910390f35b34801561077a57600080fd5b506107836123e0565b604051610790919061381e565b60405180910390f35b6107b360048036038101906107ae9190613a58565b612408565b005b3480156107c157600080fd5b506107dc60048036038101906107d79190613d4e565b61286d565b6040516107e99190613a3d565b60405180910390f35b3480156107fe57600080fd5b50610807612882565b604051610814919061381e565b60405180910390f35b34801561082957600080fd5b506108326128a8565b60405161083f9190613739565b60405180910390f35b34801561085457600080fd5b5061086f600480360381019061086a9190613a58565b6128ae565b005b34801561087d57600080fd5b5061088661293d565b6040516108939190613739565b60405180910390f35b3480156108a857600080fd5b506108c360048036038101906108be91906136f3565b6129ed565b005b3480156108d157600080fd5b506108da612aca565b6040516108e79190613739565b60405180910390f35b3480156108fc57600080fd5b5061091760048036038101906109129190613a58565b612ad0565b604051610924919061381e565b60405180910390f35b34801561093957600080fd5b50610942612b03565b60405161094f9190613739565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a9190613a58565b612b09565b005b34801561098d57600080fd5b506109a860048036038101906109a39190613e73565b612b5f565b6040516109b59190613a3d565b60405180910390f35b3480156109ca57600080fd5b506109e560048036038101906109e091906136f3565b612b75565b005b3480156109f357600080fd5b50610a0e6004803603810190610a0991906136f3565b612bfb565b005b348015610a1c57600080fd5b50610a25612c47565b604051610a32919061381e565b60405180910390f35b610a556004803603810190610a509190613a58565b612c6d565b005b600080601554601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aa79190613f3c565b90506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af361293d565b610afd9190613f7e565b9050600082612710610b0f9190613fb2565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b599190613f3c565b9050670de0b6b3a76400006127108383610b739190613f3c565b610b7d9190614015565b610b879190614015565b9050662386f26fc10000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bdb9190613fb2565b81610be69190613fb2565b9050809350505050919050565b60155481565b600060186000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600a6020528060005260406000206000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60146020528060005260406000206000915090505481565b600063150b7a0260e01b9050949350505050565b6000600c54905090565b6000600654600554610ce79190613f3c565b905090565b610cf46131ba565b33610cfd61293d565b600881905550610d0b612376565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dd857610d4e81610a57565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e60906140a3565b60405180910390fd5b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee29061410f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660176000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe29061417b565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060046040518363ffffffff1660e01b81526004016110499291906141e3565b602060405180830381865afa158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a9190614221565b34146110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c29061429a565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b815260040161112a939291906142ba565b600060405180830381600087803b15801561114457600080fd5b505af1158015611158573d6000803e3d6000fd5b505050506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111ac9190613f7e565b92505081905550600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601660008282546112049190613f7e565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611273573d6000803e3d6000fd5b505061127d613200565b50565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112ae61320a565b8181905084849050146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90614363565b60405180910390fd5b60005b8484905081101561146357600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a333088888681811061135757611356614383565b5b9050602002013587878781811061137157611370614383565b5b905060200201356040518563ffffffff1660e01b815260040161139794939291906143e9565b600060405180830381600087803b1580156113b157600080fd5b505af11580156113c5573d6000803e3d6000fd5b50505050670de0b6b3a76400008383838181106113e5576113e4614383565b5b905060200201356113f69190613f3c565b600d60008282546114079190613fb2565b92505081905550600e85858381811061142357611422614383565b5b905060200201359080600181540180825580915050600190039060005260206000200160009091909190915055808061145b90614441565b9150506112f9565b5050505050565b6114726131ba565b3361147b61293d565b600881905550611489612376565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611556576114cc81610a57565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060016040518363ffffffff1660e01b81526004016115b49291906144c4565b602060405180830381865afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190614221565b3414611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d90614539565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af906145a5565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600b600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117509061417b565b60405180910390fd5b670de0b6b3a7640000600c60008282546117739190613f7e565b92505081905550670de0b6b3a7640000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117d19190613f7e565b92505081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b8152600401611837939291906142ba565b600060405180830381600087803b15801561185157600080fd5b505af1158015611865573d6000803e3d6000fd5b50505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156118d1573d6000803e3d6000fd5b50601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054670de0b6b3a76400006119259190613f3c565b601660008282546119369190613f7e565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5600160405161198491906145f6565b60405180910390a250611995613200565b50565b60165481565b60065481565b6119ac61320a565b60006119b661293d565b6008819055506119c4612376565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611a9157611a0781610a57565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6004544210611ab35760065482611aa89190614015565b600581905550611af9565b600042600454611ac39190613f7e565b9050600060055482611ad59190613f3c565b90506006548185611ae69190613fb2565b611af09190614015565b60058190555050505b600654600d54611b099190614015565b6005541115611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b449061465d565b60405180910390fd5b4260078190555060065442611b629190613fb2565b6004819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d82604051611b979190613739565b60405180910390a15050565b611bab6131ba565b33611bb461293d565b600881905550611bc2612376565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c8f57611c0581610a57565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060026040518363ffffffff1660e01b8152600401611ced9291906146b8565b602060405180830381865afa158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e9190614221565b3414611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d669061472d565b60405180910390fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000670de0b6b3a764000082611dc99190614015565b90506000819050600d54670de0b6b3a764000083611de79190613f3c565b1115611e0657670de0b6b3a7640000600d54611e039190614015565b90505b60008111611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090614799565b60405180910390fd5b611e51613291565b6000600e80549050905060005b82811015612129576000611e7183613414565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e30600e8581548110611ec757611ec6614383565b5b90600052602060002001546040518363ffffffff1660e01b8152600401611eef9291906147b9565b602060405180830381865afa158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190614221565b9050600081111561208257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3033600e8681548110611f8f57611f8e614383565b5b906000526020600020015460016040518563ffffffff1660e01b8152600401611fbb94939291906147e2565b600060405180830381600087803b158015611fd557600080fd5b505af1158015611fe9573d6000803e3d6000fd5b50505050670de0b6b3a7640000600d60008282546120079190613f7e565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fd93bbb9e10b7af5aa4b410ac845ae87a717d305e8a4777959ad1dd06e6a1ac98600e848154811061205a57612059614383565b5b9060005260206000200154600160405161207592919061483a565b60405180910390a2612114565b600e6001856120919190613f7e565b815481106120a2576120a1614383565b5b9060005260206000200154600e83815481106120c1576120c0614383565b5b9060005260206000200181905550600e8054806120e1576120e0614863565b5b60019003818190600052602060002001600090559055828061210290614892565b935050838061211090614892565b9450505b5050808061212190614441565b915050611e5e565b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612192573d6000803e3d6000fd5b50670de0b6b3a7640000826121a79190613f3c565b846121b29190613f7e565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04868360405161223b9190613739565b60405180910390a25050505050612250613200565b565b61225a61320a565b612262613470565b565b60176020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900460ff16905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61230e61320a565b61231860006134d3565b565b6000600d54905090565b61232c61320a565b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600060045442106123895760045461238b565b425b905090565b61239861320a565b6123a0613596565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915090505481565b600060018054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6124106131ba565b6124186135f8565b3361242161293d565b60088190555061242f612376565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146124fc5761247281610a57565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060006040518363ffffffff1660e01b815260040161255a9291906148f6565b602060405180830381865afa158015612577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259b9190614221565b34146125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d39061496b565b60405180910390fd5b670de0b6b3a7640000600c60008282546125f69190613fb2565b92505081905550670de0b6b3a7640000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126549190613fb2565b92505081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b81526004016126ba939291906142ba565b600060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b50505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612754573d6000803e3d6000fd5b50601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054670de0b6b3a76400006127a89190613f3c565b601660008282546127b99190613fb2565b9250508190555033600b600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d600160405161285991906145f6565b60405180910390a25061286a613200565b50565b600063bc197c8160e01b905095945050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6128b661320a565b60045442116128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f190614a23565b60405180910390fd5b806006819055507ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d36006546040516129329190613739565b60405180910390a150565b600080600c54036129525760085490506129ea565b60006127106005546129649190613f3c565b905060006015546016546129789190613f3c565b612710600c546129889190613f3c565b6129929190613fb2565b905060006007546129a1612376565b6129ab9190613f7e565b90508183670de0b6b3a7640000836129c39190613f3c565b6129cd9190613f3c565b6129d79190614015565b6008546129e49190613fb2565b93505050505b90565b6129f561320a565b600073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d90614a8f565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b612b1161320a565b610ce48110612b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4c90614afb565b60405180910390fd5b8060158190555050565b600063f23a6e6160e01b90509695505050505050565b612b7d61320a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bef5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612be6919061381e565b60405180910390fd5b612bf8816134d3565b50565b612c0361320a565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612c756131ba565b612c7d6135f8565b33612c8661293d565b600881905550612c94612376565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612d6157612cd781610a57565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600854600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de9906140a3565b60405180910390fd5b6003601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6b90614b67565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663805f7c9c3060036040518363ffffffff1660e01b8152600401612ed2929190614bc2565b602060405180830381865afa158015612eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f139190614221565b3414612f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4b90614c37565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b8152600401612fb3939291906142ba565b600060405180830381600087803b158015612fcd57600080fd5b505af1158015612fe1573d6000803e3d6000fd5b505050503360176000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130e69190613fb2565b92505081905550600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546016600082825461313e9190613fb2565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156131ad573d6000803e3d6000fd5b50506131b7613200565b50565b6002600054036131f6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b6001600081905550565b613212613639565b73ffffffffffffffffffffffffffffffffffffffff166132306123e0565b73ffffffffffffffffffffffffffffffffffffffff161461328f57613253613639565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613286919061381e565b60405180910390fd5b565b6000600e80549050905060005b81811015613410576000600e82815481106132bc576132bb614383565b5b906000526020600020015490506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016133279291906147b9565b602060405180830381865afa158015613344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133689190614221565b9050600081036133fa57600e6001856133819190613f7e565b8154811061339257613391614383565b5b9060005260206000200154600e84815481106133b1576133b0614383565b5b9060005260206000200181905550600e8054806133d1576133d0614863565b5b6001900381819060005260206000200160009055905583806133f290614892565b945050613409565b828061340590614441565b9350505b505061329e565b5050565b60006010600081548092919061342990614441565b919050555081423360105460405160200161344693929190614cc0565b6040516020818303038152906040528051906020012060001c6134699190614cfd565b9050919050565b613478613641565b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6134bc613639565b6040516134c9919061381e565b60405180910390a1565b600060018054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61359e6135f8565b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586135e1613639565b6040516135ee919061381e565b60405180910390a1565b6136006122a6565b15613637576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600033905090565b6136496122a6565b61367f576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136c082613695565b9050919050565b6136d0816136b5565b81146136db57600080fd5b50565b6000813590506136ed816136c7565b92915050565b6000602082840312156137095761370861368b565b5b6000613717848285016136de565b91505092915050565b6000819050919050565b61373381613720565b82525050565b600060208201905061374e600083018461372a565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61378981613754565b811461379457600080fd5b50565b6000813590506137a681613780565b92915050565b6000602082840312156137c2576137c161368b565b5b60006137d084828501613797565b91505092915050565b60008115159050919050565b6137ee816137d9565b82525050565b600060208201905061380960008301846137e5565b92915050565b613818816136b5565b82525050565b6000602082019050613833600083018461380f565b92915050565b61384281613720565b811461384d57600080fd5b50565b60008135905061385f81613839565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138b88261386f565b810181811067ffffffffffffffff821117156138d7576138d6613880565b5b80604052505050565b60006138ea613681565b90506138f682826138af565b919050565b600067ffffffffffffffff82111561391657613915613880565b5b61391f8261386f565b9050602081019050919050565b82818337600083830152505050565b600061394e613949846138fb565b6138e0565b90508281526020810184848401111561396a5761396961386a565b5b61397584828561392c565b509392505050565b600082601f83011261399257613991613865565b5b81356139a284826020860161393b565b91505092915050565b600080600080608085870312156139c5576139c461368b565b5b60006139d3878288016136de565b94505060206139e4878288016136de565b93505060406139f587828801613850565b925050606085013567ffffffffffffffff811115613a1657613a15613690565b5b613a228782880161397d565b91505092959194509250565b613a3781613754565b82525050565b6000602082019050613a526000830184613a2e565b92915050565b600060208284031215613a6e57613a6d61368b565b5b6000613a7c84828501613850565b91505092915050565b6000819050919050565b6000613aaa613aa5613aa084613695565b613a85565b613695565b9050919050565b6000613abc82613a8f565b9050919050565b6000613ace82613ab1565b9050919050565b613ade81613ac3565b82525050565b6000602082019050613af96000830184613ad5565b92915050565b600080fd5b600080fd5b60008083601f840112613b1f57613b1e613865565b5b8235905067ffffffffffffffff811115613b3c57613b3b613aff565b5b602083019150836020820283011115613b5857613b57613b04565b5b9250929050565b60008060008060408587031215613b7957613b7861368b565b5b600085013567ffffffffffffffff811115613b9757613b96613690565b5b613ba387828801613b09565b9450945050602085013567ffffffffffffffff811115613bc657613bc5613690565b5b613bd287828801613b09565b925092505092959194509250565b60008060408385031215613bf757613bf661368b565b5b6000613c05858286016136de565b9250506020613c1685828601613850565b9150509250929050565b6000613c2b826136b5565b9050919050565b613c3b81613c20565b8114613c4657600080fd5b50565b600081359050613c5881613c32565b92915050565b600060208284031215613c7457613c7361368b565b5b6000613c8284828501613c49565b91505092915050565b600067ffffffffffffffff821115613ca657613ca5613880565b5b602082029050602081019050919050565b6000613cca613cc584613c8b565b6138e0565b90508083825260208201905060208402830185811115613ced57613cec613b04565b5b835b81811015613d165780613d028882613850565b845260208401935050602081019050613cef565b5050509392505050565b600082601f830112613d3557613d34613865565b5b8135613d45848260208601613cb7565b91505092915050565b600080600080600060a08688031215613d6a57613d6961368b565b5b6000613d78888289016136de565b9550506020613d89888289016136de565b945050604086013567ffffffffffffffff811115613daa57613da9613690565b5b613db688828901613d20565b935050606086013567ffffffffffffffff811115613dd757613dd6613690565b5b613de388828901613d20565b925050608086013567ffffffffffffffff811115613e0457613e03613690565b5b613e108882890161397d565b9150509295509295909350565b60008083601f840112613e3357613e32613865565b5b8235905067ffffffffffffffff811115613e5057613e4f613aff565b5b602083019150836001820283011115613e6c57613e6b613b04565b5b9250929050565b60008060008060008060a08789031215613e9057613e8f61368b565b5b6000613e9e89828a016136de565b9650506020613eaf89828a016136de565b9550506040613ec089828a01613850565b9450506060613ed189828a01613850565b935050608087013567ffffffffffffffff811115613ef257613ef1613690565b5b613efe89828a01613e1d565b92509250509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f4782613720565b9150613f5283613720565b9250828202613f6081613720565b91508282048414831517613f7757613f76613f0d565b5b5092915050565b6000613f8982613720565b9150613f9483613720565b9250828203905081811115613fac57613fab613f0d565b5b92915050565b6000613fbd82613720565b9150613fc883613720565b9250828201905080821115613fe057613fdf613f0d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061402082613720565b915061402b83613720565b92508261403b5761403a613fe6565b5b828204905092915050565b600082825260208201905092915050565b7f626f6f73746572206973206e6f74207365740000000000000000000000000000600082015250565b600061408d601283614046565b915061409882614057565b602082019050919050565b600060208201905081810360008301526140bc81614080565b9050919050565b7f6e6f20626f6f7374657220746f2072656d6f7665000000000000000000000000600082015250565b60006140f9601483614046565b9150614104826140c3565b602082019050919050565b60006020820190508181036000830152614128816140ec565b9050919050565b7f6e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6000614165600983614046565b91506141708261412f565b602082019050919050565b6000602082019050818103600083015261419481614158565b9050919050565b6000819050919050565b600060ff82169050919050565b60006141cd6141c86141c38461419b565b613a85565b6141a5565b9050919050565b6141dd816141b2565b82525050565b60006040820190506141f8600083018561380f565b61420560208301846141d4565b9392505050565b60008151905061421b81613839565b92915050565b6000602082840312156142375761423661368b565b5b60006142458482850161420c565b91505092915050565b7f72656d6f766520626f6f7374657220666565206973206e6f7420656e6f756768600082015250565b6000614284602083614046565b915061428f8261424e565b602082019050919050565b600060208201905081810360008301526142b381614277565b9050919050565b60006060820190506142cf600083018661380f565b6142dc602083018561380f565b6142e9604083018461372a565b949350505050565b7f455243313135353a206e667449647320616e6420616d6f756e7473206c656e6760008201527f7468206d69736d61746368000000000000000000000000000000000000000000602082015250565b600061434d602b83614046565b9150614358826142f1565b604082019050919050565b6000602082019050818103600083015261437c81614340565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b50565b60006143d36000836143b2565b91506143de826143c3565b600082019050919050565b600060a0820190506143fe600083018761380f565b61440b602083018661380f565b614418604083018561372a565b614425606083018461372a565b8181036080830152614436816143c6565b905095945050505050565b600061444c82613720565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361447e5761447d613f0d565b5b600182019050919050565b6000819050919050565b60006144ae6144a96144a484614489565b613a85565b6141a5565b9050919050565b6144be81614493565b82525050565b60006040820190506144d9600083018561380f565b6144e660208301846144b5565b9392505050565b7f776974686472617720666565206973206e6f7420656e6f756768000000000000600082015250565b6000614523601a83614046565b915061452e826144ed565b602082019050919050565b6000602082019050818103600083015261455281614516565b9050919050565b7f6e6f206e667420746f2077697468647261770000000000000000000000000000600082015250565b600061458f601283614046565b915061459a82614559565b602082019050919050565b600060208201905081810360008301526145be81614582565b9050919050565b60006145e06145db6145d684614489565b613a85565b613720565b9050919050565b6145f0816145c5565b82525050565b600060208201905061460b60008301846145e7565b92915050565b7f50726f76696465642072657761726420746f6f20686967680000000000000000600082015250565b6000614647601883614046565b915061465282614611565b602082019050919050565b600060208201905081810360008301526146768161463a565b9050919050565b6000819050919050565b60006146a261469d6146988461467d565b613a85565b6141a5565b9050919050565b6146b281614687565b82525050565b60006040820190506146cd600083018561380f565b6146da60208301846146a9565b9392505050565b7f436c61696d20666565206973206e6f7420656e6f756768000000000000000000600082015250565b6000614717601783614046565b9150614722826146e1565b602082019050919050565b600060208201905081810360008301526147468161470a565b9050919050565b7f4e6f204e465473206c65667420746f20636c61696d0000000000000000000000600082015250565b6000614783601583614046565b915061478e8261474d565b602082019050919050565b600060208201905081810360008301526147b281614776565b9050919050565b60006040820190506147ce600083018561380f565b6147db602083018461372a565b9392505050565b600060a0820190506147f7600083018761380f565b614804602083018661380f565b614811604083018561372a565b61481e60608301846145e7565b818103608083015261482f816143c6565b905095945050505050565b600060408201905061484f600083018561372a565b61485c60208301846145e7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061489d82613720565b9150600082036148b0576148af613f0d565b5b600182039050919050565b6000819050919050565b60006148e06148db6148d6846148bb565b613a85565b6141a5565b9050919050565b6148f0816148c5565b82525050565b600060408201905061490b600083018561380f565b61491860208301846148e7565b9392505050565b7f5374616b6520666565206973206e6f7420656e6f756768000000000000000000600082015250565b6000614955601783614046565b91506149608261491f565b602082019050919050565b6000602082019050818103600083015261498481614948565b9050919050565b7f50726576696f7573207265776172647320706572696f64206d7573742062652060008201527f636f6d706c657465206265666f7265206368616e67696e67207468652064757260208201527f6174696f6e20666f7220746865206e657720706572696f640000000000000000604082015250565b6000614a0d605883614046565b9150614a188261498b565b606082019050919050565b60006020820190508181036000830152614a3c81614a00565b9050919050565b7f626f6f7374657220616c72656164792073657400000000000000000000000000600082015250565b6000614a79601383614046565b9150614a8482614a43565b602082019050919050565b60006020820190508181036000830152614aa881614a6c565b9050919050565b7f726174696f206d757374206265206c657373207468616e203333250000000000600082015250565b6000614ae5601b83614046565b9150614af082614aaf565b602082019050919050565b60006020820190508181036000830152614b1481614ad8565b9050919050565b7f626f6f73746572206c696d697420726561636865640000000000000000000000600082015250565b6000614b51601583614046565b9150614b5c82614b1b565b602082019050919050565b60006020820190508181036000830152614b8081614b44565b9050919050565b6000819050919050565b6000614bac614ba7614ba284614b87565b613a85565b6141a5565b9050919050565b614bbc81614b91565b82525050565b6000604082019050614bd7600083018561380f565b614be46020830184614bb3565b9392505050565b7f61646420626f6f7374657220666565206973206e6f7420656e6f756768000000600082015250565b6000614c21601d83614046565b9150614c2c82614beb565b602082019050919050565b60006020820190508181036000830152614c5081614c14565b9050919050565b6000819050919050565b614c72614c6d82613720565b614c57565b82525050565b60008160601b9050919050565b6000614c9082614c78565b9050919050565b6000614ca282614c85565b9050919050565b614cba614cb5826136b5565b614c97565b82525050565b6000614ccc8286614c61565b602082019150614cdc8285614ca9565b601482019150614cec8284614c61565b602082019150819050949350505050565b6000614d0882613720565b9150614d1383613720565b925082614d2357614d22613fe6565b5b82820690509291505056fea2646970667358221220ae4dd6453658335d689fd841dc8f7fb5f41680f3d8682d381e3a95665635828264736f6c634300081400330000000000000000000000002b3183a99a88a119a6cc30b4ff7e68f3b413d03b0000000000000000000000002572b23701b4ab0462bc5f40a704f322be83ae22000000000000000000000000c78478d78e11f31eda3171ffb7b8315a7d7fbf0b0000000000000000000000002572b23701b4ab0462bc5f40a704f322be83ae220000000000000000000000000000000000000000000000000000000000000c800000000000000000000000002c002c39d0b8728b8ba7e22e281c59656c2f879d