60806040523480156200001157600080fd5b506040516200412638038062004126833981810160405260e08110156200003757600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505060008714158015620000c35750600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015620000fd5750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015620001375750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015620001715750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015620001ab5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015620001e55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b62000258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f21636f6e7374727563746f72000000000000000000000000000000000000000081525060200191505060405180910390fd5b62000268620003e160201b60201c565b62000279866200051260201b60201c565b8360a060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60028190555084609e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260a6819055508660a1819055508160a760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060a860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050620008eb565b600760019054906101000a900460ff168062000409575062000408620005f960201b60201c565b5b80620004225750600760009054906101000a900460ff16155b62000479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180620040f8602e913960400191505060405180910390fd5b6000600760019054906101000a900460ff161590508015620004cc576001600760016101000a81548160ff0219169083151502179055506001600760006101000a81548160ff0219169083151502179055505b620004dc6200061060201b60201c565b620004ec6200072160201b60201c565b80156200050f576000600760016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620005b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f217374616b65206164647265737300000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000803090506000813b9050600081149250505090565b600760019054906101000a900460ff168062000638575062000637620005f960201b60201c565b5b80620006515750600760009054906101000a900460ff16155b620006a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180620040f8602e913960400191505060405180910390fd5b6000600760019054906101000a900460ff161590508015620006fb576001600760016101000a81548160ff0219169083151502179055506001600760006101000a81548160ff0219169083151502179055505b80156200071e576000600760016101000a81548160ff0219169083151502179055505b50565b600760019054906101000a900460ff168062000749575062000748620005f960201b60201c565b5b80620007625750600760009054906101000a900460ff16155b620007b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180620040f8602e913960400191505060405180910390fd5b6000600760019054906101000a900460ff1615905080156200080c576001600760016101000a81548160ff0219169083151502179055506001600760006101000a81548160ff0219169083151502179055505b60006200081e620008e360201b60201c565b905080606c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508015620008e0576000600760016101000a81548160ff0219169083151502179055505b50565b600033905090565b6137fd80620008fb6000396000f3fe608060405234801561001057600080fd5b506004361061023c5760003560e01c806372f702f31161013b578063c8f33c91116100b8578063e9fad8ee1161007c578063e9fad8ee146108e5578063ebe2b12b146108ef578063f2fde38b1461090d578063f7c618c114610951578063fbfa77cf146109855761023c565b8063c8f33c9114610815578063cd3daf9d14610833578063df136d6514610851578063df2671cf1461086f578063e78b69f0146108c75761023c565b80638da5cb5b116100ff5780638da5cb5b146106a95780638de93222146106dd5780638f9a372d1461072b578063a199a0ae1461076f578063a694fc3a146107e75761023c565b806372f702f3146105d757806378e979251461060b5780637b0a47ee146106295780637bf37f301461064757806382e94ac51461069f5761023c565b806341c0e1b5116101c95780636827e7641161018d5780636827e764146104c45780636ebcf607146104e25780636f524b161461054157806370a0823114610575578063715018a6146105cd5761023c565b806341c0e1b5146103c8578063461ac019146103d257806353364c50146103f057806361d027b31461047257806365d0d874146104a65761023c565b80631be05289116102105780631be0528914610320578063207e47531461033e5780632e1a7d4d146103725780633d18b912146103a05780633eaaf86b146103aa5761023c565b80628cc262146102415780630700037d146102995780630c51dde4146102f857806318160ddd14610302575b600080fd5b6102836004803603602081101561025757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b9565b6040518082815260200191505060405180910390f35b6102db600480360360208110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf7565b604051808381526020018281526020019250505060405180910390f35b610300610c1b565b005b61030a610f42565b6040518082815260200191505060405180910390f35b610328610f4c565b6040518082815260200191505060405180910390f35b610346610f52565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603602081101561038857600080fd5b8101908080359060200190929190505050610f78565b005b6103a861123b565b005b6103b2611341565b6040518082815260200191505060405180910390f35b6103d0611347565b005b6103da61141a565b6040518082815260200191505060405180910390f35b61045c6004803603606081101561040657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611420565b6040518082815260200191505060405180910390f35b61047a611649565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104ae61166f565b6040518082815260200191505060405180910390f35b6104cc611675565b6040518082815260200191505060405180910390f35b610524600480360360208110156104f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061167b565b604051808381526020018281526020019250505060405180910390f35b61054961169f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105b76004803603602081101561058b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116c5565b6040518082815260200191505060405180910390f35b6105d5611711565b005b6105df61189c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106136118c0565b6040518082815260200191505060405180910390f35b6106316118c6565b6040518082815260200191505060405180910390f35b6106896004803603602081101561065d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118cc565b6040518082815260200191505060405180910390f35b6106a76119b7565b005b6106b1611c05565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610729600480360360408110156106f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c2f565b005b61076d6004803603602081101561074157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612393565b005b6107d16004803603604081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124a1565b6040518082815260200191505060405180910390f35b610813600480360360208110156107fd57600080fd5b81019080803590602001909291905050506125ab565b005b61081d612776565b6040518082815260200191505060405180910390f35b61083b61277c565b6040518082815260200191505060405180910390f35b610859612838565b6040518082815260200191505060405180910390f35b6108b16004803603602081101561088557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061283e565b6040518082815260200191505060405180910390f35b6108cf612929565b6040518082815260200191505060405180910390f35b6108ed61293c565b005b6108f7612957565b6040518082815260200191505060405180910390f35b61094f6004803603602081101561092357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061295d565b005b610959612b6d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61098d612b93565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365b56b1830856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a6357600080fd5b505afa158015610a77573d6000803e3d6000fd5b505050506040513d6020811015610a8d57600080fd5b810190808051906020019092919050505090506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000610b22610b136103e8610b058686612bb990919063ffffffff16565b612c3f90919063ffffffff16565b83612c8990919063ffffffff16565b9050610b2c6136e1565b60a960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050610bec8160000151610bde670de0b6b3a7640000610bd0610bc18660200151610bb361277c565b612d1190919063ffffffff16565b87612bb990919063ffffffff16565b612c3f90919063ffffffff16565b612c8990919063ffffffff16565b945050505050919050565b60a96020528060005260406000206000915090508060000154908060010154905082565b610c23612d5b565b73ffffffffffffffffffffffffffffffffffffffff16606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d7057600080fd5b505afa158015610d84573d6000803e3d6000fd5b505050506040513d6020811015610d9a57600080fd5b8101908080519060200190929190505050905060008111610e23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f217265776172642061646465640000000000000000000000000000000000000081525060200191505060405180910390fd5b610e2b612d63565b60a2544210610e7d57610e7261546060a15401610e64610e55606285612c3f90919063ffffffff16565b84612d1190919063ffffffff16565b612c3f90919063ffffffff16565b60a481905550610edf565b6000610e944260a254612d1190919063ffffffff16565b90506000610ead60a45483612bb990919063ffffffff16565b9050610ed660a154610ec88386612c8990919063ffffffff16565b612c3f90919063ffffffff16565b60a48190555050505b4260a38190555042600581905550610f0260a15442612c8990919063ffffffff16565b60a2819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d816040518082815260200191505060405180910390a150565b6000600354905090565b60a15481565b609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008111610fee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b610ff733612d81565b60006110226103e861101460025485612bb990919063ffffffff16565b612c3f90919063ffffffff16565b90506110813361103b8385612d1190919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e249092919063ffffffff16565b6110ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e249092919063ffffffff16565b6110f782612ec6565b600060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365b56b1830336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156111a057600080fd5b505afa1580156111b4573d6000803e3d6000fd5b505050506040513d60208110156111ca57600080fd5b810190808051906020019092919050505090506111e8816001612f7f565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5846040518082815260200191505060405180910390a2505050565b61124433612d81565b600061124f336109b9565b9050600081111561133e57600060a960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506112ef3382609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e249092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040518082815260200191505060405180910390a25b50565b60035481565b61134f612d5b565b73ffffffffffffffffffffffffffffffffffffffff16606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611411576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b4260a281905550565b60a65481565b60008060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359ec5cf13087876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156114e857600080fd5b505afa1580156114fc573d6000803e3d6000fd5b505050506040513d602081101561151257600080fd5b81019080805190602001909291905050509050828110611536576000915050611642565b60a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd313a24308787876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060206040518083038186803b15801561160357600080fd5b505afa158015611617573d6000803e3d6000fd5b505050506040513d602081101561162d57600080fd5b81019080805190602001909291905050509150505b9392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60025481565b60066020528060005260406000206000915090508060000154908060010154905082565b60a860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b611719612d5b565b73ffffffffffffffffffffffffffffffffffffffff16606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000606c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60a45481565b600060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd31370830846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561197557600080fd5b505afa158015611989573d6000803e3d6000fd5b505050506040513d602081101561199f57600080fd5b81019080805190602001909291905050509050919050565b6119bf612d5b565b73ffffffffffffffffffffffffffffffffffffffff16606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42600554108015611a98575061a8c060a254014210155b611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061376d6037913960400191505060405180910390fd5b6000609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b7857600080fd5b505afa158015611b8c573d6000803e3d6000fd5b505050506040513d6020811015611ba257600080fd5b81019080805190602001909291905050509050611c023382609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e249092919063ffffffff16565b50565b6000606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634644d9ab30846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611cd657600080fd5b505afa158015611cea573d6000803e3d6000fd5b505050506040513d6020811015611d0057600080fd5b8101908080519060200190929190505050611d83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f742061207370656e6461626c6520746f6b656e000000000000000000000081525060200191505060405180910390fd5b600060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359ec5cf13033866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611e4a57600080fd5b505afa158015611e5e573d6000803e3d6000fd5b505050506040513d6020811015611e7457600080fd5b81019080805190602001909291905050509050818110611edf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137a46024913960400191505060405180910390fd5b6000611eec338585611420565b90506000811415611f65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f636f73742063616e6e6f7420626520300000000000000000000000000000000081525060200191505060405180910390fd5b609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fef57611fea3361dead838773ffffffffffffffffffffffffffffffffffffffff166130e5909392919063ffffffff16565b61215f565b60a860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561210e576120a73360a760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612080600285612c3f90919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff166130e5909392919063ffffffff16565b61210933600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e2600285612c3f90919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff166130e5909392919063ffffffff16565b61215e565b61215d33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838773ffffffffffffffffffffffffffffffffffffffff166130e5909392919063ffffffff16565b5b5b60a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166327f268ad303387876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050600060405180830381600087803b15801561222e57600080fd5b505af1158015612242573d6000803e3d6000fd5b50505050600060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365b56b1830336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156122ef57600080fd5b505afa158015612303573d6000803e3d6000fd5b505050506040513d602081101561231957600080fd5b81019080805190602001909291905050509050612337816000612f7f565b7fe31c25a8c942cffbe38e830ad0320372c461b098e910c8ee77567f287ca603fe8585604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050505050565b61239b612d5b565b73ffffffffffffffffffffffffffffffffffffffff16606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166363655ea63085856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561256857600080fd5b505afa15801561257c573d6000803e3d6000fd5b505050506040513d602081101561259257600080fd5b8101908080519060200190929190505050905092915050565b6125b433612d81565b6000811161262a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b612633816131a6565b600060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365b56b1830336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156126dc57600080fd5b505afa1580156126f0573d6000803e3d6000fd5b505050506040513d602081101561270657600080fd5b81019080805190602001909291905050509050612724816000612f7f565b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b60a35481565b60006005544210156127915760009050612835565b600060035414156127a65760a5549050612835565b60006127bf600454600354612c8990919063ffffffff16565b905061283161282082612812670de0b6b3a764000061280460a4546127f660a3546127e8612929565b612d1190919063ffffffff16565b612bb990919063ffffffff16565b612bb990919063ffffffff16565b612c3f90919063ffffffff16565b60a554612c8990919063ffffffff16565b9150505b90565b60a55481565b600060a060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365b56b1830846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156128e757600080fd5b505afa1580156128fb573d6000803e3d6000fd5b505050506040513d602081101561291157600080fd5b81019080805190602001909291905050509050919050565b60006129374260a2546132ac565b905090565b61294461123b565b612955612950336116c5565b610f78565b565b60a25481565b612965612d5b565b73ffffffffffffffffffffffffffffffffffffffff16606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612aad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806136fc6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380606c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60a760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080831415612bcc5760009050612c39565b6000828402905082848281612bdd57fe5b0414612c34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806137226021913960400191505060405180910390fd5b809150505b92915050565b6000612c8183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c5565b905092915050565b600080828401905083811015612d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000612d5383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061338b565b905092915050565b600033905090565b612d6b61277c565b60a581905550612d79612929565b60a381905550565b612d89612d63565b612d92816109b9565b60a960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060a55460a960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555050565b612ec18363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061344b565b505050565b612edb81600354612d1190919063ffffffff16565b600381905550612f3681600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612d1190919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010154905060008411156130b95760006130016103e8612ff3878660000154612bb990919063ffffffff16565b612c3f90919063ffffffff16565b9050831561306057600061301e8284612d1190919063ffffffff16565b9050613037818560010154612d1190919063ffffffff16565b846001018190555061305481600454612d1190919063ffffffff16565b600481905550506130b3565b60006130758383612d1190919063ffffffff16565b905061308e818560010154612c8990919063ffffffff16565b84600101819055506130ab81600454612c8990919063ffffffff16565b600481905550505b506130df565b600082600101819055506130d881600454612d1190919063ffffffff16565b6004819055505b50505050565b6131a0846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061344b565b50505050565b6131fb81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612c8990919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061325681600354612c8990919063ffffffff16565b6003819055506132a933308360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166130e5909392919063ffffffff16565b50565b60008183106132bb57816132bd565b825b905092915050565b60008083118290613371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561333657808201518184015260208101905061331b565b50505050905090810190601f1680156133635780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161337d57fe5b049050809150509392505050565b6000838311158290613438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133fd5780820151818401526020810190506133e2565b50505050905090810190601f16801561342a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61346a8273ffffffffffffffffffffffffffffffffffffffff16613696565b6134dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061352b5780518252602082019150602081019050602083039250613508565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461358d576040519150601f19603f3d011682016040523d82523d6000602084013e613592565b606091505b50915091508161360a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156136905780806020019051602081101561362957600080fd5b810190808051906020019092919050505061368f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613743602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156136d857506000801b8214155b92505050919050565b60405180604001604052806000815260200160008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656443616e6e6f7420656a656374206265666f726520706572696f642066696e6973686573206f7220706f6f6c20686173207374617274656443616e6e6f7420646f776e6772616465206c6576656c206f722073616d65206c6576656ca264697066735822122084fc1cebbf003a786df14597836b3b03502849670289f364e6dc2fbd17269ea564736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656400000000000000000000000000000000000000000000000000000000001baf800000000000000000000000005036ff28f4d9200b61ad92548abf1ab4da51f250000000000000000000000000151220cf596c3ac80736a7ef7036c6f1b30aaf48000000000000000000000000a472fca97f969f656ec6928578106be7936cbd100000000000000000000000003249f8c62640dc8ae2f4ed14cd03bca9c6af98b2000000000000000000000000f9747560d0e82f91ef4953fc9415f05a9ca05906000000000000000000000000bc35d7753f0db8fb9c788b7d7d284cdd78a4ede3