608060405261251c600b55611388600c556019600d5562093a80600e556000600f60006101000a81548160ff02191690831515021790555060006018553480156200004957600080fd5b506040516200688538038062006885833981810160405260a08110156200006f57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508473ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620000ef57600080fd5b505afa15801562000104573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156200012f57600080fd5b81019080805160405193929190846401000000008211156200015057600080fd5b838201915060208201858111156200016757600080fd5b82518660018202830111640100000000821117156200018557600080fd5b8083526020830192505050908051906020019080838360005b83811015620001bb5780820151818401526020810190506200019e565b50505050905090810190601f168015620001e95780820380516001836020036101000a031916815260200191505b5060405250505060405160200180807f797673696520000000000000000000000000000000000000000000000000000081525060060182805190602001908083835b602083106200025057805182526020820191506020810190506020830392506200022b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620002cb57600080fd5b505afa158015620002e0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156200030b57600080fd5b81019080805160405193929190846401000000008211156200032c57600080fd5b838201915060208201858111156200034357600080fd5b82518660018202830111640100000000821117156200036157600080fd5b8083526020830192505050908051906020019080838360005b83811015620003975780820151818401526020810190506200037a565b50505050905090810190601f168015620003c55780820380516001836020036101000a031916815260200191505b5060405250505060405160200180807f797673000000000000000000000000000000000000000000000000000000000081525060030182805190602001908083835b602083106200042c578051825260208201915060208101905060208303925062000407565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405281600390805190602001906200047892919062000896565b5080600490805190602001906200049192919062000896565b506012600560006101000a81548160ff021916908360ff160217905550505060016006819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200055b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21756e6465726c79696e6700000000000000000000000000000000000000000081525060200191505060405180910390fd5b620005ef8573ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620005a657600080fd5b505afa158015620005bb573d6000803e3d6000fd5b505050506040513d6020811015620005d257600080fd5b81019080805190602001909291905050506200087860201b60201c565b84600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506017674563918244f4000090806001815401808255809150506001900390600052602060002001600090919091909150556017678ac7230489e80000908060018154018082558091505060019003906000526020600020016000909190919091505560176801158e460913d000009080600181540180825580915050600190039060005260206000200160009091909190915055601768022b1c8c1227a00000908060018154018082558091505060019003906000526020600020016000909190919091505560176804563918244f400000908060018154018082558091505060019003906000526020600020016000909190919091505550505050506200093c565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620008d957805160ff19168380011785556200090a565b828001600101855582156200090a579182015b8281111562000909578251825591602001919060010190620008ec565b5b5090506200091991906200091d565b5090565b5b80821115620009385760008160009055506001016200091e565b5090565b615f39806200094c6000396000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c806392eefe9b116101e9578063d389800f1161010f578063f0f44260116100ad578063fa43a10e1161007c578063fa43a10e1461100c578063fc7e286d1461102a578063fce589d814611082578063ff50abdc146110a0576103a4565b8063f0f4426014610f58578063f5a6ef3914610f9c578063f77c479114610fba578063f889794514610fee576103a4565b8063e4fc6b6d116100e9578063e4fc6b6d14610eba578063e68af51814610ec4578063ec1ebd7a14610ee2578063f02d7ef014610f00576103a4565b8063d389800f14610e2e578063dd62ed3e14610e38578063de5f626814610eb0576103a4565b8063ab033ea911610187578063b6b55f2511610156578063b6b55f2514610d30578063bdacb30314610d5e578063c8111f2714610da2578063d33219b414610dfa576103a4565b8063ab033ea914610c70578063ac1e502514610cb4578063acec338a14610ce2578063b69ef8a814610d12576103a4565b8063a235872d116101c3578063a235872d14610b32578063a457c2d714610b74578063a8c62e7614610bd8578063a9059cbb14610c0c576103a4565b806392eefe9b14610a4d57806395d89b4114610a915780639a7b551714610b14576103a4565b80633cdc8819116102ce57806361d027b31161026c578063730aaa8c1161023b578063730aaa8c146109e95780637349996a14610a07578063853828b614610a255780638bc7e8c414610a2f576103a4565b806361d027b31461090b5780636ac5db191461093f5780636f307dc31461095d57806370a0823114610991576103a4565b806345dc3dd8116102a857806345dc3dd81461085d57806348a0d7541461088b5780634bf2c7c9146108a95780635aa6e675146108d7576103a4565b80633cdc8819146107d35780633e3309cc146107f157806340490a901461083f576103a4565b80632e1a7d4d1161034657806333a100ca1161031557806333a100ca146106b557806334c3d0b0146106f957806339509351146107175780633c2505221461077b576103a4565b80632e1a7d4d146105d6578063313ce5671461060457806331d7a26214610625578063333271d01461067d576103a4565b80630b1eebb5116103825780630b1eebb5146104d257806318160ddd1461051457806322f3e2d41461053257806323b872dd14610552576103a4565b8063042ff632146103a957806306fdde03146103eb578063095ea7b31461046e575b600080fd5b6103d5600480360360208110156103bf57600080fd5b81019080803590602001909291905050506110be565b6040518082815260200191505060405180910390f35b6103f36116b7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610433578082015181840152602081019050610418565b50505050905090810190601f1680156104605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104ba6004803603604081101561048457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611759565b60405180821515815260200191505060405180910390f35b6104fe600480360360208110156104e857600080fd5b8101908080359060200190929190505050611777565b6040518082815260200191505060405180910390f35b61051c611875565b6040518082815260200191505060405180910390f35b61053a61187f565b60405180821515815260200191505060405180910390f35b6105be6004803603606081101561056857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611892565b60405180821515815260200191505060405180910390f35b610602600480360360208110156105ec57600080fd5b810190808035906020019092919050505061196b565b005b61060c612526565b604051808260ff16815260200191505060405180910390f35b6106676004803603602081101561063b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061253d565b6040518082815260200191505060405180910390f35b6106b36004803603604081101561069357600080fd5b8101908080359060200190929190803590602001909291905050506125e1565b005b6106f7600480360360208110156106cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c4565b005b61070161290e565b6040518082815260200191505060405180910390f35b6107636004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612914565b60405180821515815260200191505060405180910390f35b6107bd6004803603602081101561079157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129c7565b6040518082815260200191505060405180910390f35b6107db6129df565b6040518082815260200191505060405180910390f35b61083d6004803603604081101561080757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612af6565b005b610847612d92565b6040518082815260200191505060405180910390f35b6108896004803603602081101561087357600080fd5b8101908080359060200190929190505050612dd9565b005b610893612f1e565b6040518082815260200191505060405180910390f35b6108d5600480360360208110156108bf57600080fd5b8101908080359060200190929190505050613011565b005b6108df6131ce565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109136131f4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61094761321a565b6040518082815260200191505060405180910390f35b610965613220565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109d3600480360360208110156109a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613246565b6040518082815260200191505060405180910390f35b6109f161328e565b6040518082815260200191505060405180910390f35b610a0f613294565b6040518082815260200191505060405180910390f35b610a2d61329a565b005b610a376132e4565b6040518082815260200191505060405180910390f35b610a8f60048036036020811015610a6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132ea565b005b610a996134b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad9578082015181840152602081019050610abe565b50505050905090810190601f168015610b065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610b1c613557565b6040518082815260200191505060405180910390f35b610b5e60048036036020811015610b4857600080fd5b810190808035906020019092919050505061355d565b6040518082815260200191505060405180910390f35b610bc060048036036040811015610b8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061357e565b60405180821515815260200191505060405180910390f35b610be061364b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c5860048036036040811015610c2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613671565b60405180821515815260200191505060405180910390f35b610cb260048036036020811015610c8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061368f565b005b610ce060048036036020811015610cca57600080fd5b8101908080359060200190929190505050613796565b005b610d1060048036036020811015610cf857600080fd5b810190808035151590602001909291905050506138da565b005b610d1a6139ba565b6040518082815260200191505060405180910390f35b610d5c60048036036020811015610d4657600080fd5b8101908080359060200190929190505050613b39565b005b610da060048036036020811015610d7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614370565b005b610de460048036036020811015610db857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614477565b6040518082815260200191505060405180910390f35b610e0261448f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e366144b5565b005b610e9a60048036036040811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506146fc565b6040518082815260200191505060405180910390f35b610eb8614783565b005b610ec2614851565b005b610ecc614b9c565b6040518082815260200191505060405180910390f35b610eea614ba9565b6040518082815260200191505060405180910390f35b610f4260048036036020811015610f1657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614bff565b6040518082815260200191505060405180910390f35b610f9a60048036036020811015610f6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614c17565b005b610fa4614d1e565b6040518082815260200191505060405180910390f35b610fc2614d24565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ff6614d4a565b6040518082815260200191505060405180910390f35b611014614d50565b6040518082815260200191505060405180910390f35b61106c6004803603602081101561104057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614d55565b6040518082815260200191505060405180910390f35b61108a614d6d565b6040518082815260200191505060405180910390f35b6110a8614d73565b6040518082815260200191505060405180910390f35b6000600f60009054906101000a900460ff16611142576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f216163746976650000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f217374726174656779000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000821161127d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217469657273000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006017805490509050806112da84601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b111561134e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f216d61780000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000806113a385601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b90506000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b8381101561143857818114156113ff57611438565b6114296017828154811061140f57fe5b906000526020600020015484614d7990919063ffffffff16565b925080806001019150506113ea565b5081600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114c357600080fd5b505afa1580156114d7573d6000803e3d6000fd5b505050506040513d60208110156114ed57600080fd5b81019080805190602001909291905050501015611572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f217976730000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6115c1333084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614e01909392919063ffffffff16565b61161385601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b935083601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f9486b93ebe3cc3c54c18694e48c862cb92a7cbe539691e21d043bcc992ee8b5f8684604051808381526020018281526020019250505060405180910390a2505050919050565b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561174f5780601f106117245761010080835404028352916020019161174f565b820191906000526020600020905b81548152906001019060200180831161173257829003601f168201915b5050505050905090565b600061176d611766614ec2565b8484614eca565b6001905092915050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f2174696d656c6f636b000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60178290806001815401808255809150506001900390600052602060002001600090919091909150556001601780549050039050919050565b6000600254905090565b600f60009054906101000a900460ff1681565b600061189f8484846150c1565b611960846118ab614ec2565b61195b85604051806060016040528060288152602001615e2360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611911614ec2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546153829092919063ffffffff16565b614eca565b600190509392505050565b600260065414156119e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600681905550611a0b3373ffffffffffffffffffffffffffffffffffffffff16615442565b158015611a4357503273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611ab5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f77697468647261773a20216e6f20636f6e74726163740000000000000000000081525060200191505060405180910390fd5b611b09600e54601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b431015611b7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f77697468647261773a20216d696e4465706f736974506572696f64000000000081525060200191505060405180910390fd5b60008111611bf4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f21706f736974697665000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115611ca9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f3e6465706f73697400000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611d5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f216465706f73697400000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611e10601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e02670de0b6b3a76400008661545590919063ffffffff16565b6154db90919063ffffffff16565b90506000611e41670de0b6b3a7640000611e33848661545590919063ffffffff16565b6154db90919063ffffffff16565b905080611e4d33613246565b1015611ec1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f217368617265730000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611ecb3382615525565b611f1d81601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e990919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611f7e601854611f706139ba565b6156e990919063ffffffff16565b9050600080821115611fb957611fb6611f95611875565b611fa8878561545590919063ffffffff16565b6154db90919063ffffffff16565b90505b6000811115611ff257611fef670de0b6b3a7640000611fe1868461545590919063ffffffff16565b6154db90919063ffffffff16565b90505b60006120078288614d7990919063ffffffff16565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561209457600080fd5b505afa1580156120a8573d6000803e3d6000fd5b505050506040513d60208110156120be57600080fd5b810190808051906020019092919050505090508181101561227e5760006120ee82846156e990919063ffffffff16565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561216557600080fd5b505af1158015612179573d6000803e3d6000fd5b505050506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561220857600080fd5b505afa15801561221c573d6000803e3d6000fd5b505050506040513d602081101561223257600080fd5b81019080805190602001909291905050509050600061225a84836156e990919063ffffffff16565b90508281101561227a576122778185614d7990919063ffffffff16565b94505b5050505b6122d088601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156e990919063ffffffff16565b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612328886018546156e990919063ffffffff16565b601881905550600061235961271061234b600d548c61545590919063ffffffff16565b6154db90919063ffffffff16565b90506123ca601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166157339092919063ffffffff16565b612429336123e183866156e990919063ffffffff16565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166157339092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648a6040518082815260200191505060405180910390a23373ffffffffffffffffffffffffffffffffffffffff167f17603142347da9e422e7a13b7d8d03d2546cc9e5524fc730bb5d0280e800096b876040518082815260200191505060405180910390a23373ffffffffffffffffffffffffffffffffffffffff167f1f89f96333d3133000ee447473151fa9606543368f02271c9d95ae14f13bcc67856040518082815260200191505060405180910390a25050505050505050600160068190555050565b6000600560009054906101000a900460ff16905090565b60008061255c60185461254e6139ba565b6156e990919063ffffffff16565b90506000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008211156125da576125d76125b6611875565b6125c9838561545590919063ffffffff16565b6154db90919063ffffffff16565b92505b5050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f2174696d656c6f636b000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601783815481106126b257fe5b90600052602060002001819055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612787576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f2174696d656c6f636b000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561280657600080fd5b505afa15801561281a573d6000803e3d6000fd5b505050506040513d602081101561283057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146128ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21756e6465726c79696e6700000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109c481565b60006129bd612921614ec2565b846129b88560016000612932614ec2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b614eca565b6001905092915050565b60136020528060005260406000206000915090505481565b6000601780549050601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f21616c6c0000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6017601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110612ae657fe5b9060005260206000200154905090565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f21746f6b656e000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d41576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f217976730000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612d8e601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166157339092919063ffffffff16565b5050565b6000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b612710811115612f14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f6d696e3e6d61780000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600b8190555050565b600061300c612710612ffe600b54600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612fb557600080fd5b505afa158015612fc9573d6000803e3d6000fd5b505050506040513d6020811015612fdf57600080fd5b810190808051906020019092919050505061545590919063ffffffff16565b6154db90919063ffffffff16565b905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146130d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f2174696d656c6f636b000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611d4c81111561314c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f6d6178000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6109c48110156131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f6d696e000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c8190555050565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61271081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d4c81565b600e5481565b6132e2601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461196b565b565b600d5481565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561354d5780601f106135225761010080835404028352916020019161354d565b820191906000526020600020905b81548152906001019060200180831161353057829003601f168201915b5050505050905090565b61271081565b6017818154811061356a57fe5b906000526020600020016000915090505481565b600061364161358b614ec2565b8461363c85604051806060016040528060258152602001615edf60259139600160006135b5614ec2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546153829092919063ffffffff16565b614eca565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061368561367e614ec2565b84846150c1565b6001905092915050565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f2174696d656c6f636b000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60198111156138d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f216d61780000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d8190555050565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461399d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000613b34601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663722713f76040518163ffffffff1660e01b815260040160206040518083038186803b158015613a2757600080fd5b505afa158015613a3b573d6000803e3d6000fd5b505050506040513d6020811015613a5157600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613aeb57600080fd5b505afa158015613aff573d6000803e3d6000fd5b505050506040513d6020811015613b1557600080fd5b8101908080519060200190929190505050614d7990919063ffffffff16565b905090565b60026006541415613bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600681905550613bd93373ffffffffffffffffffffffffffffffffffffffff16615442565b158015613c1157503273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b613c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6465706f7369743a2021636f6e7472616374000000000000000000000000000081525060200191505060405180910390fd5b600f60009054906101000a900460ff16613d05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6465706f7369743a20217661756c74000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613dca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6465706f7369743a20217374726174656779000000000000000000000000000081525060200191505060405180910390fd5b6000613dd46139ba565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613e6157600080fd5b505afa158015613e75573d6000803e3d6000fd5b505050506040513d6020811015613e8b57600080fd5b81019080805190602001909291905050509050613eed333085600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614e01909392919063ffffffff16565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613f7857600080fd5b505afa158015613f8c573d6000803e3d6000fd5b505050506040513d6020811015613fa257600080fd5b81019080805190602001909291905050509050613fc882826156e990919063ffffffff16565b935061401c84601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061407484601854614d7990919063ffffffff16565b601881905550600080614085611875565b14156141235760006140f360646140e56005601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461545590919063ffffffff16565b614d7990919063ffffffff16565b905061411b606461410d838961545590919063ffffffff16565b6154db90919063ffffffff16565b9150506141e2565b600061418b606461417d6005601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461545590919063ffffffff16565b614d7990919063ffffffff16565b90506141de856141d061419c611875565b6141c260646141b4878d61545590919063ffffffff16565b6154db90919063ffffffff16565b61545590919063ffffffff16565b6154db90919063ffffffff16565b9150505b6141ec33826157d5565b61423e81601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c866040518082815260200191505060405180910390a23373ffffffffffffffffffffffffffffffffffffffff167f3abf6d97fde3541bb582f72fa6fb75093b8bb699577fbc722ac25de9f6fbc4ed826040518082815260200191505060405180910390a250505050600160068190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614433576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f2174696d656c6f636b000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60166020528060005260406000206000915090505481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff16614537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6561726e3a20216163746976650000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156145fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6561726e3a20217374726174656779000000000000000000000000000000000081525060200191505060405180910390fd5b6000614606612f1e565b9050614677601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166157339092919063ffffffff16565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156146e157600080fd5b505af11580156146f5573d6000803e3d6000fd5b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61484f600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561480f57600080fd5b505afa158015614823573d6000803e3d6000fd5b505050506040513d602081101561483957600080fd5b8101908080519060200190929190505050613b39565b565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156148a857506148a63373ffffffffffffffffffffffffffffffffffffffff16615442565b155b806149005750600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806149585750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61496157600080fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156149ec57600080fd5b505afa158015614a00573d6000803e3d6000fd5b505050506040513d6020811015614a1657600080fd5b810190808051906020019092919050505090506000811115614b99576000614a5d612710614a4f600c548561545590919063ffffffff16565b6154db90919063ffffffff16565b90506000614a7482846156e990919063ffffffff16565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015614aeb57600080fd5b505af1158015614aff573d6000803e3d6000fd5b505050506040513d6020811015614b1557600080fd5b810190808051906020019092919050505050614b96601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166157339092919063ffffffff16565b50505b50565b6000601780549050905090565b6000614bfa614bb6611875565b614bec670de0b6b3a7640000614bde601854614bd06139ba565b6156e990919063ffffffff16565b61545590919063ffffffff16565b6154db90919063ffffffff16565b905090565b60156020528060005260406000206000915090505481565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61271081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b601981565b60146020528060005260406000206000915090505481565b600c5481565b60185481565b600080828401905083811015614df7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b614ebc846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061599c565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e916024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615dba6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615147576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615e6c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156151cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615d756023913960400191505060405180910390fd5b6151d8838383615a8b565b61524381604051806060016040528060268152602001615ddc602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546153829092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152d6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061542f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156153f45780820151818401526020810190506153d9565b50505050905090810190601f1680156154215780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080823b905060008111915050919050565b60008083141561546857600090506154d5565b600082840290508284828161547957fe5b04146154d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e026021913960400191505060405180910390fd5b809150505b92915050565b600061551d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615a90565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156155ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e4b6021913960400191505060405180910390fd5b6155b782600083615a8b565b61562281604051806060016040528060228152602001615d98602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546153829092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615679816002546156e990919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061572b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615382565b905092915050565b6157d08363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061599c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415615878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61588460008383615a8b565b61589981600254614d7990919063ffffffff16565b6002819055506158f0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d7990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60606159fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615b569092919063ffffffff16565b9050600081511115615a8657808060200190516020811015615a1f57600080fd5b8101908080519060200190929190505050615a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615eb5602a913960400191505060405180910390fd5b5b505050565b505050565b60008083118290615b3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615b01578082015181840152602081019050615ae6565b50505050905090810190601f168015615b2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615b4857fe5b049050809150509392505050565b6060615b658484600085615b6e565b90509392505050565b6060615b7985615442565b615beb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310615c3b5780518252602082019150602081019050602083039250615c18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615c9d576040519150601f19603f3d011682016040523d82523d6000602084013e615ca2565b606091505b50915091508115615cb7578092505050615d6c565b600081511115615cca5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615d31578082015181840152602081019050615d16565b50505050905090810190601f168015615d5e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b94935050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202e2461ba62cb785c7c9a5f5c0acb9c61592b82299e3ddb47f509184a3110c9a864736f6c634300060c003300000000000000000000000064eda51d3ad40d56b9dfc5554e06f94e1dd786fd000000000000000000000000ec681f28f4561c2a9534799aa38e0d36a83cf4780000000000000000000000000c954cb86352fc56aad062f78489cba625535297000000000000000000000000e04af79053639d2c4c1c3827f72e52459ee0e88e00000000000000000000000000a83550deaa56aae7d54afde5c23739b6d0ba63