608060405260056008553480156200001657600080fd5b506040518060400160405280600a81526020017f476f64734b6e69676874000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f474b540000000000000000000000000000000000000000000000000000000000815250620000a362000097620006bd60201b60201c565b620006c560201b60201c565b8160059080519060200190620000bb92919062000c3b565b508060069080519060200190620000d492919062000c3b565b505050620000ff620000eb620007ca60201b60201c565b66038d7ea4c68000620007f360201b60201c565b6103e866038d7ea4c6800062000116919062000d53565b600b81905550603266038d7ea4c6800062000132919062000d53565b601381905550603266038d7ea4c680006200014e919062000d53565b60128190555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600f8190555060026010819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020757600080fd5b505afa1580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000242919062000df5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a557600080fd5b505afa158015620002ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e0919062000df5565b6040518363ffffffff1660e01b8152600401620002ff92919062000e38565b602060405180830381600087803b1580156200031a57600080fd5b505af11580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000df5565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042e30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200096d60201b60201c565b6200044181600162000b4060201b60201c565b6001600d600062000457620007ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600062000664620007ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620011a0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085d9062000ec6565b60405180910390fd5b6200087a6000838362000c3160201b60201c565b80600460008282546200088e919062000ee8565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008e6919062000ee8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200094d919062000f56565b60405180910390a3620009696000838362000c3660201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620009e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d79062000fe9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4a9062001081565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000b33919062000f56565b60405180910390a3505050565b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcd9062001119565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b505050565b505050565b82805462000c49906200116a565b90600052602060002090601f01602090048101928262000c6d576000855562000cb9565b82601f1062000c8857805160ff191683800117855562000cb9565b8280016001018555821562000cb9579182015b8281111562000cb857825182559160200191906001019062000c9b565b5b50905062000cc8919062000ccc565b5090565b5b8082111562000ce757600081600090555060010162000ccd565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d608262000ceb565b915062000d6d8362000ceb565b92508262000d805762000d7f62000cf5565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dbd8262000d90565b9050919050565b62000dcf8162000db0565b811462000ddb57600080fd5b50565b60008151905062000def8162000dc4565b92915050565b60006020828403121562000e0e5762000e0d62000d8b565b5b600062000e1e8482850162000dde565b91505092915050565b62000e328162000db0565b82525050565b600060408201905062000e4f600083018562000e27565b62000e5e602083018462000e27565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000eae601f8362000e65565b915062000ebb8262000e76565b602082019050919050565b6000602082019050818103600083015262000ee18162000e9f565b9050919050565b600062000ef58262000ceb565b915062000f028362000ceb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f3a5762000f3962000d24565b5b828201905092915050565b62000f508162000ceb565b82525050565b600060208201905062000f6d600083018462000f45565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000fd160248362000e65565b915062000fde8262000f73565b604082019050919050565b60006020820190508181036000830152620010048162000fc2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200106960228362000e65565b915062001076826200100b565b604082019050919050565b600060208201905081810360008301526200109c816200105a565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200110160388362000e65565b91506200110e82620010a3565b604082019050919050565b600060208201905081810360008301526200113481620010f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200118357607f821691505b602082108114156200119a57620011996200113b565b5b50919050565b6141f880620011b06000396000f3fe60806040526004361061023f5760003560e01c806370a082311161012e578063b62496f5116100ab578063dd62ed3e1161006f578063dd62ed3e14610882578063e0add380146108bf578063e57f14e1146108ea578063f04d639314610913578063f2fde38b1461095057610246565b8063b62496f51461078b578063c3db55f6146107c8578063cb94a370146107f1578063cd12cde41461081a578063d87854b31461085757610246565b806395d89b41116100f257806395d89b41146106925780639a7a23d6146106bd578063a457c2d7146106e6578063a9059cbb14610723578063b000968e1461076057610246565b806370a08231146105bf578063715018a6146105fc57806379cc6790146106135780638c0b5e221461063c5780638da5cb5b1461066757610246565b80633ad10ef6116101bc5780634fbee193116101805780634fbee193146105025780636161eb181461053f578063622565891461056857806368ca92d41461057f5780636c580801146105a857610246565b80633ad10ef61461042d57806342966c681461045857806344489ad11461048157806347062402146104ac57806349bd5a5e146104d757610246565b806323b872dd1161020357806323b872dd146103325780632b14ca561461036f578063313ce5671461039a578063333e6f06146103c557806339509351146103f057610246565b806306fdde031461024b578063095ea7b3146102765780631694505e146102b357806316a2f82a146102de57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610979565b60405161026d9190612f1b565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612fd6565b610a0b565b6040516102aa9190613031565b60405180910390f35b3480156102bf57600080fd5b506102c8610a2e565b6040516102d591906130ab565b60405180910390f35b3480156102ea57600080fd5b50610305600480360381019061030091906130c6565b610a54565b005b34801561031357600080fd5b5061031c610c08565b6040516103299190613102565b60405180910390f35b34801561033e57600080fd5b506103596004803603810190610354919061311d565b610c12565b6040516103669190613031565b60405180910390f35b34801561037b57600080fd5b50610384610c41565b6040516103919190613102565b60405180910390f35b3480156103a657600080fd5b506103af610c47565b6040516103bc919061318c565b60405180910390f35b3480156103d157600080fd5b506103da610c50565b6040516103e79190613102565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190612fd6565b610c56565b6040516104249190613031565b60405180910390f35b34801561043957600080fd5b50610442610c8d565b60405161044f91906131b6565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a91906131d1565b610cb3565b005b34801561048d57600080fd5b50610496610cc7565b6040516104a39190613031565b60405180910390f35b3480156104b857600080fd5b506104c1610cda565b6040516104ce9190613102565b60405180910390f35b3480156104e357600080fd5b506104ec610ce0565b6040516104f991906131b6565b60405180910390f35b34801561050e57600080fd5b50610529600480360381019061052491906130c6565b610d06565b6040516105369190613031565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190612fd6565b610d5c565b005b34801561057457600080fd5b5061057d610fdc565b005b34801561058b57600080fd5b506105a660048036038101906105a1919061322a565b611001565b005b3480156105b457600080fd5b506105bd611064565b005b3480156105cb57600080fd5b506105e660048036038101906105e191906130c6565b6111d8565b6040516105f39190613102565b60405180910390f35b34801561060857600080fd5b50610611611221565b005b34801561061f57600080fd5b5061063a60048036038101906106359190612fd6565b611235565b005b34801561064857600080fd5b50610651611255565b60405161065e9190613102565b60405180910390f35b34801561067357600080fd5b5061067c61125b565b60405161068991906131b6565b60405180910390f35b34801561069e57600080fd5b506106a7611284565b6040516106b49190612f1b565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df919061322a565b611316565b005b3480156106f257600080fd5b5061070d60048036038101906107089190612fd6565b6113bd565b60405161071a9190613031565b60405180910390f35b34801561072f57600080fd5b5061074a60048036038101906107459190612fd6565b611434565b6040516107579190613031565b60405180910390f35b34801561076c57600080fd5b50610775611457565b6040516107829190613102565b60405180910390f35b34801561079757600080fd5b506107b260048036038101906107ad91906130c6565b61145d565b6040516107bf9190613031565b60405180910390f35b3480156107d457600080fd5b506107ef60048036038101906107ea91906130c6565b61147d565b005b3480156107fd57600080fd5b50610818600480360381019061081391906130c6565b6116f1565b005b34801561082657600080fd5b50610841600480360381019061083c919061326a565b611878565b60405161084e9190613031565b60405180910390f35b34801561086357600080fd5b5061086c611a11565b6040516108799190613031565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a4919061326a565b611a24565b6040516108b69190613102565b60405180910390f35b3480156108cb57600080fd5b506108d4611aab565b6040516108e19190613102565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c91906130c6565b611ab1565b005b34801561091f57600080fd5b5061093a600480360381019061093591906130c6565b611ca9565b6040516109479190613031565b60405180910390f35b34801561095c57600080fd5b50610977600480360381019061097291906130c6565b611cc9565b005b606060058054610988906132d9565b80601f01602080910402602001604051908101604052809291908181526020018280546109b4906132d9565b8015610a015780601f106109d657610100808354040283529160200191610a01565b820191906000526020600020905b8154815290600101906020018083116109e457829003601f168201915b5050505050905090565b600080610a16611d4d565b9050610a23818585611d55565b600191505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610a7361125b565b73ffffffffffffffffffffffffffffffffffffffff161480610ae257503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890613357565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba4906133c3565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600454905090565b600080610c1d611d4d565b9050610c2a858285611f20565b610c35858585611fac565b60019150509392505050565b600f5481565b60006009905090565b60135481565b600080610c61611d4d565b9050610c82818585610c738589611a24565b610c7d9190613412565b611d55565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cc4610cbe611d4d565b82610d5c565b50565b601160009054906101000a900460ff1681565b60105481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc3906134da565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e2657600080fd5b610e3282600083612531565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb09061356c565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508160046000828254610f5e919061358c565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc39190613102565b60405180910390a3610fd783600084612536565b505050565b610fe461253b565b6001601160006101000a81548160ff021916908315150217905550565b61100961253b565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff1661108361125b565b73ffffffffffffffffffffffffffffffffffffffff1614806110f257503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890613357565b60405180910390fd5b60001515600c60009054906101000a900460ff16151514611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e9061360c565b60405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550600a66038d7ea4c680006111b6919061365b565b601381905550600a66038d7ea4c680006111d0919061365b565b601281905550565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61122961253b565b61123360006125b9565b565b61124782611241611d4d565b83611f20565b6112518282610d5c565b5050565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054611293906132d9565b80601f01602080910402602001604051908101604052809291908181526020018280546112bf906132d9565b801561130c5780601f106112e15761010080835404028352916020019161130c565b820191906000526020600020905b8154815290600101906020018083116112ef57829003601f168201915b5050505050905090565b61131e61253b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a6906136fe565b60405180910390fd5b6113b982826126be565b5050565b6000806113c8611d4d565b905060006113d68286611a24565b90508381101561141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290613790565b60405180910390fd5b6114288286868403611d55565b60019250505092915050565b60008061143f611d4d565b905061144c818585611fac565b600191505092915050565b600b5481565b600e6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1661149c61125b565b73ffffffffffffffffffffffffffffffffffffffff16148061150b57503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190613357565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115cb573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156115c5573d6000803e3d6000fd5b506116ee565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161160b91906131b6565b60206040518083038186803b15801561162357600080fd5b505afa158015611637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165b91906137c5565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116989291906137f2565b602060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ea9190613830565b5050505b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561179c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d2906138cf565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5fd8e08a154f0b534b7cb9c3656fd02ef25f1a0cbda52f3da6abbaa22cb32bfa600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161186d91906131b6565b60405180910390a150565b600061188261125b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806119085750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806119605750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061199d575061196e61125b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806119d357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611a0957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b600c60009054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b3373ffffffffffffffffffffffffffffffffffffffff16611ad061125b565b73ffffffffffffffffffffffffffffffffffffffff161480611b3f57503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7590613357565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290613961565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f57a00f76b5f242fb1e04b0b514a6974665a5b07bce45e39f36dabff4a042d93660405160405180910390a250565b60146020528060005260406000206000915054906101000a900460ff1681565b611cd161253b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d38906139f3565b60405180910390fd5b611d4a816125b9565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbc90613a85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c90613b17565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f139190613102565b60405180910390a3505050565b6000611f2c8484611a24565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611fa65781811015611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f90613b83565b60405180910390fd5b611fa58484848403611d55565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390613c15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561208c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208390613ca7565b60405180910390fd5b600a60149054906101000a900460ff166120ac576120ab8383836127ac565b5b600060105490506000600f549050601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561215e5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121b357600c60009054906101000a900460ff166121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a990613d13565b60405180910390fd5b5b60008314156121c357505061252c565b6000600a60149054906101000a900460ff16159050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122795750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561228357600090505b600061228e306111d8565b90506000600b5482101580156122a45750600082115b80156122fa5750600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123035750825b905080801561231f5750600a60149054906101000a900460ff16155b156123d2576001600a60146101000a81548160ff021916908315150217905550600061236c600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111d8565b905060646008548261237e9190613d33565b612388919061365b565b8311156123ac5760646008548261239f9190613d33565b6123a9919061365b565b92505b6123b583612926565b6000600a60146101000a81548160ff021916908315150217905550505b82801561242c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b80156124385750600084115b156124785760006064858861244d9190613d33565b612457919061365b565b90508087612465919061358c565b9650612472893083612b8d565b5061251b565b8280156124d25750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b80156124de5750600085115b1561251a576000606486886124f39190613d33565b6124fd919061365b565b9050808761250b919061358c565b9650612518893083612b8d565b505b5b612526888888612b8d565b50505050505b505050565b505050565b505050565b612543611d4d565b73ffffffffffffffffffffffffffffffffffffffff1661256161125b565b73ffffffffffffffffffffffffffffffffffffffff16146125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ae90613357565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274890613dff565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601160009054906101000a900460ff16612920576127ca8383611878565b1580156128215750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561291f5760125481111561286b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286290613e6b565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128c657612921565b601354816128d3846111d8565b6128dd9190613412565b111561291e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291590613ed7565b60405180910390fd5b5b5b5b505050565b6000600267ffffffffffffffff81111561294357612942613ef7565b5b6040519080825280602002602001820160405280156129715781602001602082028036833780820191505090505b509050308160008151811061298957612988613f26565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a639190613f6a565b81600181518110612a7757612a76613f26565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004714612abe57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b22959493929190614090565b600060405180830381600087803b158015612b3c57600080fd5b505af1925050508015612b4d575060015b612b5657612b57565b5b6000479050612b88600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612e11565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf490613c15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6490613ca7565b60405180910390fd5b612c78838383612531565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf69061415c565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d949190613412565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612df89190613102565b60405180910390a3612e0b848484612536565b50505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc82604051612e38906141ad565b600060405180830381858888f193505050503d8060008114612e76576040519150601f19603f3d011682016040523d82523d6000602084013e612e7b565b606091505b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ebc578082015181840152602081019050612ea1565b83811115612ecb576000848401525b50505050565b6000601f19601f8301169050919050565b6000612eed82612e82565b612ef78185612e8d565b9350612f07818560208601612e9e565b612f1081612ed1565b840191505092915050565b60006020820190508181036000830152612f358184612ee2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f6d82612f42565b9050919050565b612f7d81612f62565b8114612f8857600080fd5b50565b600081359050612f9a81612f74565b92915050565b6000819050919050565b612fb381612fa0565b8114612fbe57600080fd5b50565b600081359050612fd081612faa565b92915050565b60008060408385031215612fed57612fec612f3d565b5b6000612ffb85828601612f8b565b925050602061300c85828601612fc1565b9150509250929050565b60008115159050919050565b61302b81613016565b82525050565b60006020820190506130466000830184613022565b92915050565b6000819050919050565b600061307161306c61306784612f42565b61304c565b612f42565b9050919050565b600061308382613056565b9050919050565b600061309582613078565b9050919050565b6130a58161308a565b82525050565b60006020820190506130c0600083018461309c565b92915050565b6000602082840312156130dc576130db612f3d565b5b60006130ea84828501612f8b565b91505092915050565b6130fc81612fa0565b82525050565b600060208201905061311760008301846130f3565b92915050565b60008060006060848603121561313657613135612f3d565b5b600061314486828701612f8b565b935050602061315586828701612f8b565b925050604061316686828701612fc1565b9150509250925092565b600060ff82169050919050565b61318681613170565b82525050565b60006020820190506131a1600083018461317d565b92915050565b6131b081612f62565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b6000602082840312156131e7576131e6612f3d565b5b60006131f584828501612fc1565b91505092915050565b61320781613016565b811461321257600080fd5b50565b600081359050613224816131fe565b92915050565b6000806040838503121561324157613240612f3d565b5b600061324f85828601612f8b565b925050602061326085828601613215565b9150509250929050565b6000806040838503121561328157613280612f3d565b5b600061328f85828601612f8b565b92505060206132a085828601612f8b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132f157607f821691505b60208210811415613305576133046132aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613341602083612e8d565b915061334c8261330b565b602082019050919050565b6000602082019050818103600083015261337081613334565b9050919050565b7f4163636f756e7420616c726561647920696e636c756465640000000000000000600082015250565b60006133ad601883612e8d565b91506133b882613377565b602082019050919050565b600060208201905081810360008301526133dc816133a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061341d82612fa0565b915061342883612fa0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561345d5761345c6133e3565b5b828201905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c4602183612e8d565b91506134cf82613468565b604082019050919050565b600060208201905081810360008301526134f3816134b7565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613556602283612e8d565b9150613561826134fa565b604082019050919050565b6000602082019050818103600083015261358581613549565b9050919050565b600061359782612fa0565b91506135a283612fa0565b9250828210156135b5576135b46133e3565b5b828203905092915050565b7f54726164696e6720697320616c7265616479206f70656e210000000000000000600082015250565b60006135f6601883612e8d565b9150613601826135c0565b602082019050919050565b60006020820190508181036000830152613625816135e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061366682612fa0565b915061367183612fa0565b9250826136815761368061362c565b5b828204905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006136e8603983612e8d565b91506136f38261368c565b604082019050919050565b60006020820190508181036000830152613717816136db565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061377a602583612e8d565b91506137858261371e565b604082019050919050565b600060208201905081810360008301526137a98161376d565b9050919050565b6000815190506137bf81612faa565b92915050565b6000602082840312156137db576137da612f3d565b5b60006137e9848285016137b0565b91505092915050565b600060408201905061380760008301856131a7565b61381460208301846130f3565b9392505050565b60008151905061382a816131fe565b92915050565b60006020828403121561384657613845612f3d565b5b60006138548482850161381b565b91505092915050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006138b9602883612e8d565b91506138c48261385d565b604082019050919050565b600060208201905081810360008301526138e8816138ac565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f7472756500000000000000000000000000000000000000000000000000000000602082015250565b600061394b602483612e8d565b9150613956826138ef565b604082019050919050565b6000602082019050818103600083015261397a8161393e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139dd602683612e8d565b91506139e882613981565b604082019050919050565b60006020820190508181036000830152613a0c816139d0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a6f602483612e8d565b9150613a7a82613a13565b604082019050919050565b60006020820190508181036000830152613a9e81613a62565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b01602283612e8d565b9150613b0c82613aa5565b604082019050919050565b60006020820190508181036000830152613b3081613af4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613b6d601d83612e8d565b9150613b7882613b37565b602082019050919050565b60006020820190508181036000830152613b9c81613b60565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613bff602583612e8d565b9150613c0a82613ba3565b604082019050919050565b60006020820190508181036000830152613c2e81613bf2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c91602383612e8d565b9150613c9c82613c35565b604082019050919050565b60006020820190508181036000830152613cc081613c84565b9050919050565b7f5472616465206973206e6f74206f70656e000000000000000000000000000000600082015250565b6000613cfd601183612e8d565b9150613d0882613cc7565b602082019050919050565b60006020820190508181036000830152613d2c81613cf0565b9050919050565b6000613d3e82612fa0565b9150613d4983612fa0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d8257613d816133e3565b5b828202905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b6000613de9603883612e8d565b9150613df482613d8d565b604082019050919050565b60006020820190508181036000830152613e1881613ddc565b9050919050565b7f416d6f756e742065786365656473206d61780000000000000000000000000000600082015250565b6000613e55601283612e8d565b9150613e6082613e1f565b602082019050919050565b60006020820190508181036000830152613e8481613e48565b9050919050565b7f4d617820686f6c64696e67206578636565646564206d61780000000000000000600082015250565b6000613ec1601883612e8d565b9150613ecc82613e8b565b602082019050919050565b60006020820190508181036000830152613ef081613eb4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f6481612f74565b92915050565b600060208284031215613f8057613f7f612f3d565b5b6000613f8e84828501613f55565b91505092915050565b6000819050919050565b6000613fbc613fb7613fb284613f97565b61304c565b612fa0565b9050919050565b613fcc81613fa1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61400781612f62565b82525050565b60006140198383613ffe565b60208301905092915050565b6000602082019050919050565b600061403d82613fd2565b6140478185613fdd565b935061405283613fee565b8060005b8381101561408357815161406a888261400d565b975061407583614025565b925050600181019050614056565b5085935050505092915050565b600060a0820190506140a560008301886130f3565b6140b26020830187613fc3565b81810360408301526140c48186614032565b90506140d360608301856131a7565b6140e060808301846130f3565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614146602683612e8d565b9150614151826140ea565b604082019050919050565b6000602082019050818103600083015261417581614139565b9050919050565b600081905092915050565b50565b600061419760008361417c565b91506141a282614187565b600082019050919050565b60006141b88261418a565b915081905091905056fea264697066735822122061c32d1d56a75788d7cd0ee5ba767961c13e8ebed67971bbcec712e733fbf23664736f6c63430008090033