60c06040523373ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600960a09081525060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006001556000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006003556000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561011a57600080fd5b5060805160a051611caa61014760003960006108880152600081816104cb01526109d00152611caa6000f3fe6080604052600436106101155760003560e01c80636999b377116100a0578063b88d4fde11610064578063b88d4fde146103e1578063bf848f811461040a578063dcca396014610435578063fc2e39a614610473578063ff7aab801461049e57610116565b80636999b377146102e45780636d5442c21461030f5780638da5cb5b1461034e578063af00160514610379578063b2016bd4146103b657610116565b80632e1a7d4d116100e75780632e1a7d4d146101ef578063371fd8e61461021857806342842e0e14610241578063504006ca1461026a5780636352211e146102a757610116565b80600014610156578063095ea7b3146101725780632283487d1461019b57806323b872dd146101c657610116565b5b34801561012257600080fd5b506000366060600160405160200161013a9190610d7c565b6040516020818303038152906040529050915050805190602001f35b610170600480360381019061016b9190610e10565b6104c9565b005b34801561017e57600080fd5b5061019960048036038101906101949190610ef1565b61083a565b005b3480156101a757600080fd5b506101b061083e565b6040516101bd9190610f40565b60405180910390f35b3480156101d257600080fd5b506101ed60048036038101906101e89190610f5b565b610843565b005b3480156101fb57600080fd5b5061021660048036038101906102119190610fae565b610848565b005b34801561022457600080fd5b5061023f600480360381019061023a9190610fae565b61084b565b005b34801561024d57600080fd5b5061026860048036038101906102639190610f5b565b61084e565b005b34801561027657600080fd5b50610291600480360381019061028c9190610fae565b610853565b60405161029e9190611142565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190610fae565b610945565b6040516102db919061116d565b60405180910390f35b3480156102f057600080fd5b506102f96109c1565b60405161030691906111dd565b60405180910390f35b34801561031b57600080fd5b50610336600480360381019061033191906111f8565b6109c9565b60405161034593929190611238565b60405180910390f35b34801561035a57600080fd5b506103636109ce565b604051610370919061116d565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906112f5565b6109f2565b6040516103ad9190610f40565b60405180910390f35b3480156103c257600080fd5b506103cb610b47565b6040516103d891906113a6565b60405180910390f35b3480156103ed57600080fd5b50610408600480360381019061040391906113c1565b610b4f565b005b34801561041657600080fd5b5061041f610b56565b60405161042c919061146a565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906111f8565b610b73565b60405161046a929190611485565b60405180910390f35b34801561047f57600080fd5b50610488610b78565b6040516104959190610f40565b60405180910390f35b3480156104aa57600080fd5b506104b3610b7d565b6040516104c0919061146a565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054e9061150b565b60405180910390fd5b6000806000848481019061056b91906116b8565b92509250925082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b82518110156108325760006105ff8383815181106105d6576105d5611743565b5b60200260200101518584815181106105f1576105f0611743565b5b602002602001015187610b85565b90506000810361060f575061081f565b82828151811061062257610621611743565b5b60200260200101516000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060018190555083828151811061068357610682611743565b5b6020026020010151600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006003819055508473ffffffffffffffffffffffffffffffffffffffff16632dcb8bcc60405180608001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681525060006040518060a00160405280600781526020016000815260200160008152602001600281526020018888815181106107a4576107a3611743565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681525060008060006040518763ffffffff1660e01b81526004016107eb9695949392919061195d565b600060405180830381600087803b15801561080557600080fd5b505af1158015610819573d6000803e3d6000fd5b50505050505b808061082a906119f1565b9150506105b5565b505050505050565b5050565b600090565b505050565b50565b50565b505050565b61085b610c9e565b6040518060a0016040528060018152602001600081526020016040518060a00160405280600181526020017f00000000000000000000000000000000000000000000000000000000000000006127106108b49190611a39565b6127106001546108c49190611a6d565b6108ce9190611ade565b8152602001600081526020016002815260200160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081526020016001600381111561093457610933611061565b5b815260200160018152509050919050565b60006002820361097957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109bc565b6001600380546109899190611b0f565b03610996573090506109bc565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b919050565b600030905090565b600080fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b600080876080016020810190610a089190611b40565b73ffffffffffffffffffffffffffffffffffffffff166370a08231600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610a62919061116d565b602060405180830381865afa158015610a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa39190611b82565b9050876080016020810190610ab89190611b40565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd3332846040518463ffffffff1660e01b8152600401610af493929190611baf565b6020604051808303816000875af1158015610b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b379190611c1e565b5060009150509695505050505050565b600030905090565b5050505050565b60006001600354610b679190611a39565b60038190555030905090565b600080fd5b600090565b600030905090565b6000808473ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610bc1919061116d565b602060405180830381865afa158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c029190611b82565b905060008573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e86866040518363ffffffff1660e01b8152600401610c41929190611c4b565b602060405180830381865afa158015610c5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c829190611b82565b9050808211610c915781610c93565b805b925050509392505050565b6040518060a001604052806000815260200160008152602001610cbf610ce5565b815260200160006003811115610cd857610cd7611061565b5b8152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000610d66610d61610d5c84610d2a565b610d41565b610d34565b9050919050565b610d7681610d4b565b82525050565b6000602082019050610d916000830184610d6d565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610dd057610dcf610dab565b5b8235905067ffffffffffffffff811115610ded57610dec610db0565b5b602083019150836001820283011115610e0957610e08610db5565b5b9250929050565b60008060208385031215610e2757610e26610da1565b5b600083013567ffffffffffffffff811115610e4557610e44610da6565b5b610e5185828601610dba565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e8882610e5d565b9050919050565b610e9881610e7d565b8114610ea357600080fd5b50565b600081359050610eb581610e8f565b92915050565b6000819050919050565b610ece81610ebb565b8114610ed957600080fd5b50565b600081359050610eeb81610ec5565b92915050565b60008060408385031215610f0857610f07610da1565b5b6000610f1685828601610ea6565b9250506020610f2785828601610edc565b9150509250929050565b610f3a81610ebb565b82525050565b6000602082019050610f556000830184610f31565b92915050565b600080600060608486031215610f7457610f73610da1565b5b6000610f8286828701610ea6565b9350506020610f9386828701610ea6565b9250506040610fa486828701610edc565b9150509250925092565b600060208284031215610fc457610fc3610da1565b5b6000610fd284828501610edc565b91505092915050565b610fe481610ebb565b82525050565b610ff381610e7d565b82525050565b60a08201600082015161100f6000850182610fdb565b5060208201516110226020850182610fdb565b5060408201516110356040850182610fdb565b5060608201516110486060850182610fdb565b50608082015161105b6080850182610fea565b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106110a1576110a0611061565b5b50565b60008190506110b282611090565b919050565b60006110c2826110a4565b9050919050565b6110d2816110b7565b82525050565b610120820160008201516110ef6000850182610fdb565b5060208201516111026020850182610fdb565b5060408201516111156040850182610ff9565b50606082015161112860e08501826110c9565b50608082015161113c610100850182610fdb565b50505050565b60006101208201905061115860008301846110d8565b92915050565b61116781610e7d565b82525050565b6000602082019050611182600083018461115e565b92915050565b60006111a361119e61119984610e5d565b610d41565b610e5d565b9050919050565b60006111b582611188565b9050919050565b60006111c7826111aa565b9050919050565b6111d7816111bc565b82525050565b60006020820190506111f260008301846111ce565b92915050565b6000806040838503121561120f5761120e610da1565b5b600061121d85828601610edc565b925050602061122e85828601610edc565b9150509250929050565b600060608201905061124d600083018661115e565b61125a6020830185610f31565b6112676040830184610f31565b949350505050565b600080fd5b600060a0828403121561128a5761128961126f565b5b81905092915050565b61129c81610d34565b81146112a757600080fd5b50565b6000813590506112b981611293565b92915050565b6000819050919050565b6112d2816112bf565b81146112dd57600080fd5b50565b6000813590506112ef816112c9565b92915050565b600080600080600080610140878903121561131357611312610da1565b5b600061132189828a01611274565b96505060a061133289828a01610ea6565b95505060c061134389828a01610ea6565b94505060e061135489828a016112aa565b93505061010061136689828a016112e0565b92505061012061137889828a016112e0565b9150509295509295509295565b6000611390826111aa565b9050919050565b6113a081611385565b82525050565b60006020820190506113bb6000830184611397565b92915050565b6000806000806000608086880312156113dd576113dc610da1565b5b60006113eb88828901610ea6565b95505060206113fc88828901610ea6565b945050604061140d88828901610edc565b935050606086013567ffffffffffffffff81111561142e5761142d610da6565b5b61143a88828901610dba565b92509250509295509295909350565b6000611454826111aa565b9050919050565b61146481611449565b82525050565b600060208201905061147f600083018461145b565b92915050565b600060408201905061149a600083018561115e565b6114a76020830184610f31565b9392505050565b600082825260208201905092915050565b7f2161000000000000000000000000000000000000000000000000000000000000600082015250565b60006114f56002836114ae565b9150611500826114bf565b602082019050919050565b60006020820190508181036000830152611524816114e8565b9050919050565b600061153682610e5d565b9050919050565b6115468161152b565b811461155157600080fd5b50565b6000813590506115638161153d565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6115b282611569565b810181811067ffffffffffffffff821117156115d1576115d061157a565b5b80604052505050565b60006115e4610d97565b90506115f082826115a9565b919050565b600067ffffffffffffffff8211156116105761160f61157a565b5b602082029050602081019050919050565b600061163461162f846115f5565b6115da565b9050808382526020820190506020840283018581111561165757611656610db5565b5b835b81811015611680578061166c8882610ea6565b845260208401935050602081019050611659565b5050509392505050565b600082601f83011261169f5761169e610dab565b5b81356116af848260208601611621565b91505092915050565b6000806000606084860312156116d1576116d0610da1565b5b60006116df86828701611554565b935050602084013567ffffffffffffffff811115611700576116ff610da6565b5b61170c8682870161168a565b925050604084013567ffffffffffffffff81111561172d5761172c610da6565b5b6117398682870161168a565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061177d826111aa565b9050919050565b61178d81611772565b82525050565b600061179e826111aa565b9050919050565b6117ae81611793565b82525050565b60006117bf826111aa565b9050919050565b6117cf816117b4565b82525050565b60006117e0826111aa565b9050919050565b6117f0816117d5565b82525050565b60808201600082015161180c6000850182611784565b50602082015161181f60208501826117a5565b50604082015161183260408501826117c6565b50606082015161184560608501826117e7565b50505050565b6000819050919050565b600061187061186b6118668461184b565b610d41565b610ebb565b9050919050565b61188081611855565b82525050565b60a08201600082015161189c6000850182610fdb565b5060208201516118af6020850182610fdb565b5060408201516118c26040850182610fdb565b5060608201516118d56060850182610fdb565b5060808201516118e86080850182610fea565b50505050565b60006119096119046118ff8461184b565b610d41565b610d34565b9050919050565b611919816118ee565b82525050565b60008160001b9050919050565b600061194761194261193d8461184b565b61191f565b6112bf565b9050919050565b6119578161192c565b82525050565b60006101a08201905061197360008301896117f6565b6119806080830188611877565b61198d60a0830187611886565b61199b610140830186611910565b6119a961016083018561194e565b6119b761018083018461194e565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006119fc82610ebb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a2e57611a2d6119c2565b5b600182019050919050565b6000611a4482610ebb565b9150611a4f83610ebb565b9250828201905080821115611a6757611a666119c2565b5b92915050565b6000611a7882610ebb565b9150611a8383610ebb565b9250828202611a9181610ebb565b91508282048414831517611aa857611aa76119c2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611ae982610ebb565b9150611af483610ebb565b925082611b0457611b03611aaf565b5b828204905092915050565b6000611b1a82610ebb565b9150611b2583610ebb565b925082611b3557611b34611aaf565b5b828206905092915050565b600060208284031215611b5657611b55610da1565b5b6000611b6484828501610ea6565b91505092915050565b600081519050611b7c81610ec5565b92915050565b600060208284031215611b9857611b97610da1565b5b6000611ba684828501611b6d565b91505092915050565b6000606082019050611bc4600083018661115e565b611bd1602083018561115e565b611bde6040830184610f31565b949350505050565b60008115159050919050565b611bfb81611be6565b8114611c0657600080fd5b50565b600081519050611c1881611bf2565b92915050565b600060208284031215611c3457611c33610da1565b5b6000611c4284828501611c09565b91505092915050565b6000604082019050611c60600083018561115e565b611c6d602083018461115e565b939250505056fea26469706673582212208efd2a72b729b16ca4586e68018fec3eceb1c67b860af13ac32581d70bf2284b64736f6c63430008110033