60806040525f60065534801562000014575f80fd5b506200003562000029620002c060201b60201c565b620002c760201b60201c565b6040518060400160405280600681526020017f5448454341540000000000000000000000000000000000000000000000000000815250600490816200007b91906200074c565b506040518060400160405280600681526020017f544845434154000000000000000000000000000000000000000000000000000081525060059081620000c291906200074c565b506200010433620000d86200038860201b60201c565b600a620000e69190620009b9565b640218711a00620000f8919062000a09565b6200039060201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000166573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200018c919062000ab8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000218919062000ab8565b6040518363ffffffff1660e01b81526004016200023792919062000af9565b6020604051808303815f875af115801562000254573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027a919062000ab8565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000c08565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6008905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000401576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003f89062000b82565b60405180910390fd5b8060035f82825462000414919062000ba2565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004c4919062000bed565b60405180910390a3620004df5f8383620004e360201b60201c565b5050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200056457607f821691505b6020821081036200057a57620005796200051f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005a1565b620005ea8683620005a1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620006346200062e620006288462000602565b6200060b565b62000602565b9050919050565b5f819050919050565b6200064f8362000614565b620006676200065e826200063b565b848454620005ad565b825550505050565b5f90565b6200067d6200066f565b6200068a81848462000644565b505050565b5b81811015620006b157620006a55f8262000673565b60018101905062000690565b5050565b601f8211156200070057620006ca8162000580565b620006d58462000592565b81016020851015620006e5578190505b620006fd620006f48562000592565b8301826200068f565b50505b505050565b5f82821c905092915050565b5f620007225f198460080262000705565b1980831691505092915050565b5f6200073c838362000711565b9150826002028217905092915050565b6200075782620004e8565b67ffffffffffffffff811115620007735762000772620004f2565b5b6200077f82546200054c565b6200078c828285620006b5565b5f60209050601f831160018114620007c2575f8415620007ad578287015190505b620007b985826200072f565b86555062000828565b601f198416620007d28662000580565b5f5b82811015620007fb57848901518255600182019150602085019450602081019050620007d4565b868310156200081b578489015162000817601f89168262000711565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008ba5780860481111562000892576200089162000830565b5b6001851615620008a25780820291505b8081029050620008b2856200085d565b945062000872565b94509492505050565b5f82620008d45760019050620009a6565b81620008e3575f9050620009a6565b8160018114620008fc576002811462000907576200093d565b6001915050620009a6565b60ff8411156200091c576200091b62000830565b5b8360020a91508482111562000936576200093562000830565b5b50620009a6565b5060208310610133831016604e8410600b8410161715620009775782820a90508381111562000971576200097062000830565b5b620009a6565b62000986848484600162000869565b92509050818404811115620009a0576200099f62000830565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620009c58262000602565b9150620009d283620009ad565b925062000a017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c3565b905092915050565b5f62000a158262000602565b915062000a228362000602565b925082820262000a328162000602565b9150828204841483151762000a4c5762000a4b62000830565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a828262000a57565b9050919050565b62000a948162000a76565b811462000a9f575f80fd5b50565b5f8151905062000ab28162000a89565b92915050565b5f6020828403121562000ad05762000acf62000a53565b5b5f62000adf8482850162000aa2565b91505092915050565b62000af38162000a76565b82525050565b5f60408201905062000b0e5f83018562000ae8565b62000b1d602083018462000ae8565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000b6a601f8362000b24565b915062000b778262000b34565b602082019050919050565b5f6020820190508181035f83015262000b9b8162000b5c565b9050919050565b5f62000bae8262000602565b915062000bbb8362000602565b925082820190508082111562000bd65762000bd562000830565b5b92915050565b62000be78162000602565b82525050565b5f60208201905062000c025f83018462000bdc565b92915050565b611eb58062000c165f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c8063715018a6116100ab578063beabacc81161006f578063beabacc81461031c578063ca72a4e714610338578063dd62ed3e14610354578063e2f4560514610384578063f2fde38b146103a25761012a565b8063715018a61461028a5780638da5cb5b1461029457806395d89b41146102b2578063a9059cbb146102d0578063b18834aa146103005761012a565b806326ededb8116100f257806326ededb8146101e6578063313ce56714610202578063321bef231461022057806349bd5a5e1461023c57806370a082311461025a5761012a565b806306fdde031461012e578063095ea7b31461014c57806318160ddd1461017c5780632349e24a1461019a57806323b872dd146101b6575b5f80fd5b6101366103be565b6040516101439190611426565b60405180910390f35b610166600480360381019061016191906114e4565b61044e565b604051610173919061153c565b60405180910390f35b610184610470565b6040516101919190611564565b60405180910390f35b6101b460048036038101906101af91906116e7565b610479565b005b6101d060048036038101906101cb9190611741565b610656565b6040516101dd919061153c565b60405180910390f35b61020060048036038101906101fb91906117ea565b610684565b005b61020a610751565b6040516102179190611862565b60405180910390f35b61023a600480360381019061023591906117ea565b610759565b005b610244610826565b604051610251919061188a565b60405180910390f35b610274600480360381019061026f91906118a3565b61084b565b6040516102819190611564565b60405180910390f35b610292610891565b005b61029c6108a4565b6040516102a9919061188a565b60405180910390f35b6102ba6108cb565b6040516102c79190611426565b60405180910390f35b6102ea60048036038101906102e591906114e4565b61095b565b6040516102f7919061153c565b60405180910390f35b61031a600480360381019061031591906117ea565b61097d565b005b61033660048036038101906103319190611741565b610a4a565b005b610352600480360381019061034d91906118a3565b610ab4565b005b61036e600480360381019061036991906118ce565b610b07565b60405161037b9190611564565b60405180910390f35b61038c610b89565b6040516103999190611564565b60405180910390f35b6103bc60048036038101906103b791906118a3565b610b8f565b005b6060600480546103cd90611939565b80601f01602080910402602001604051908101604052809291908181526020018280546103f990611939565b80156104445780601f1061041b57610100808354040283529160200191610444565b820191905f5260205f20905b81548152906001019060200180831161042757829003601f168201915b5050505050905090565b5f80610458610c11565b9050610465818585610c18565b600191505092915050565b5f600354905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ff906119b3565b60405180910390fd5b5f5b825181101561065157600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683828151811061055e5761055d6119d1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614806105aa57505f6105a784838151811061059a576105996119d1565b5b602002602001015161084b565b11155b8061061b5750811515600a5f8584815181106105c9576105c86119d1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b61064457610643838281518110610635576106346119d1565b5b602002602001015183610ddb565b5b808060010191505061050a565b505050565b5f80610660610c11565b905061066d858285610e33565b610678858585610ebe565b60019150509392505050565b5f5b8383905081101561074b578383828181106106a4576106a36119d1565b5b90506020020160208101906106b991906118a3565b73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107369190611564565b60405180910390a38080600101915050610686565b50505050565b5f6008905090565b5f5b8383905081101561082057838382818110610779576107786119d1565b5b905060200201602081019061078e91906118a3565b73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161080b9190611564565b60405180910390a3808060010191505061075b565b50505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108996111e6565b6108a25f611264565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546108da90611939565b80601f016020809104026020016040519081016040528092919081815260200182805461090690611939565b80156109515780601f1061092857610100808354040283529160200191610951565b820191905f5260205f20905b81548152906001019060200180831161093457829003601f168201915b5050505050905090565b5f80610965610c11565b9050610972818585610ebe565b600191505092915050565b5f5b83839050811015610a445783838281811061099d5761099c6119d1565b5b90506020020160208101906109b291906118a3565b73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a2f9190611564565b60405180910390a3808060010191505061097f565b50505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610aa79190611564565b60405180910390a3505050565b610abc6111e6565b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b04610891565b50565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b610b976111e6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc90611a6e565b60405180910390fd5b610c0e81611264565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90611afc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb90611b8a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dce9190611564565b60405180910390a3505050565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610e3e8484610b07565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610eb85781811015610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190611bf2565b60405180910390fd5b610eb78484848403610c18565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390611c80565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190611d0e565b60405180910390fd5b5f610fa43061084b565b90505f6009548210159050808015610fc8575060085f9054906101000a900460ff16155b801561101a5750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561105c57600160085f6101000a81548160ff02191690831515021790555061104285611325565b5f60085f6101000a81548160ff0219169083151502179055505b5f60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050838110156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790611d9c565b60405180910390fd5b83810360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516111cb9190611564565b60405180910390a36111de868686611397565b505050505050565b6111ee610c11565b73ffffffffffffffffffffffffffffffffffffffff1661120c6108a4565b73ffffffffffffffffffffffffffffffffffffffff1614611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990611e04565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f61132f8261084b565b90505f60019050600a8211156113455760065490505b80826113519190611e4f565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156113d35780820151818401526020810190506113b8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6113f88261139c565b61140281856113a6565b93506114128185602086016113b6565b61141b816113de565b840191505092915050565b5f6020820190508181035f83015261143e81846113ee565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61148082611457565b9050919050565b61149081611476565b811461149a575f80fd5b50565b5f813590506114ab81611487565b92915050565b5f819050919050565b6114c3816114b1565b81146114cd575f80fd5b50565b5f813590506114de816114ba565b92915050565b5f80604083850312156114fa576114f961144f565b5b5f6115078582860161149d565b9250506020611518858286016114d0565b9150509250929050565b5f8115159050919050565b61153681611522565b82525050565b5f60208201905061154f5f83018461152d565b92915050565b61155e816114b1565b82525050565b5f6020820190506115775f830184611555565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6115b7826113de565b810181811067ffffffffffffffff821117156115d6576115d5611581565b5b80604052505050565b5f6115e8611446565b90506115f482826115ae565b919050565b5f67ffffffffffffffff82111561161357611612611581565b5b602082029050602081019050919050565b5f80fd5b5f61163a611635846115f9565b6115df565b9050808382526020820190506020840283018581111561165d5761165c611624565b5b835b818110156116865780611672888261149d565b84526020840193505060208101905061165f565b5050509392505050565b5f82601f8301126116a4576116a361157d565b5b81356116b4848260208601611628565b91505092915050565b6116c681611522565b81146116d0575f80fd5b50565b5f813590506116e1816116bd565b92915050565b5f80604083850312156116fd576116fc61144f565b5b5f83013567ffffffffffffffff81111561171a57611719611453565b5b61172685828601611690565b9250506020611737858286016116d3565b9150509250929050565b5f805f606084860312156117585761175761144f565b5b5f6117658682870161149d565b93505060206117768682870161149d565b9250506040611787868287016114d0565b9150509250925092565b5f80fd5b5f8083601f8401126117aa576117a961157d565b5b8235905067ffffffffffffffff8111156117c7576117c6611791565b5b6020830191508360208202830111156117e3576117e2611624565b5b9250929050565b5f805f604084860312156118015761180061144f565b5b5f84013567ffffffffffffffff81111561181e5761181d611453565b5b61182a86828701611795565b9350935050602061183d868287016114d0565b9150509250925092565b5f60ff82169050919050565b61185c81611847565b82525050565b5f6020820190506118755f830184611853565b92915050565b61188481611476565b82525050565b5f60208201905061189d5f83018461187b565b92915050565b5f602082840312156118b8576118b761144f565b5b5f6118c58482850161149d565b91505092915050565b5f80604083850312156118e4576118e361144f565b5b5f6118f18582860161149d565b92505060206119028582860161149d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061195057607f821691505b6020821081036119635761196261190c565b5b50919050565b7f5f61697264726f704164647265737320657272000000000000000000000000005f82015250565b5f61199d6013836113a6565b91506119a882611969565b602082019050919050565b5f6020820190508181035f8301526119ca81611991565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611a586026836113a6565b9150611a63826119fe565b604082019050919050565b5f6020820190508181035f830152611a8581611a4c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611ae66024836113a6565b9150611af182611a8c565b604082019050919050565b5f6020820190508181035f830152611b1381611ada565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611b746022836113a6565b9150611b7f82611b1a565b604082019050919050565b5f6020820190508181035f830152611ba181611b68565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611bdc601d836113a6565b9150611be782611ba8565b602082019050919050565b5f6020820190508181035f830152611c0981611bd0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611c6a6025836113a6565b9150611c7582611c10565b604082019050919050565b5f6020820190508181035f830152611c9781611c5e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611cf86023836113a6565b9150611d0382611c9e565b604082019050919050565b5f6020820190508181035f830152611d2581611cec565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611d866026836113a6565b9150611d9182611d2c565b604082019050919050565b5f6020820190508181035f830152611db381611d7a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611dee6020836113a6565b9150611df982611dba565b602082019050919050565b5f6020820190508181035f830152611e1b81611de2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611e59826114b1565b9150611e64836114b1565b925082611e7457611e73611e22565b5b82820490509291505056fea26469706673582212202eb7f5914f8d3863602a7902ebdcd3914de567d82745d4dbf38246fe3687c8fe64736f6c63430008180033