60806040523480156200001157600080fd5b506040516200211738038062002117833981810160405281019062000037919062000673565b620000576200004b620003af60201b60201c565b620003b760201b60201c565b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000106573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012c919062000723565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001dc919062000723565b6040518363ffffffff1660e01b8152600401620001fb92919062000766565b6020604051808303816000875af11580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000241919062000723565b600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360029081620002929190620009de565b508260049081620002a49190620009de565b506009600660006101000a81548160ff021916908360ff16021790555060036001819055506064600581905550600660009054906101000a900460ff1660ff16601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900460ff16600a62000345919062000c55565b66038d7ea4c6800062000359919062000ca6565b600381905550600354600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505062000d07565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004e48262000499565b810181811067ffffffffffffffff82111715620005065762000505620004aa565b5b80604052505050565b60006200051b6200047b565b9050620005298282620004d9565b919050565b600067ffffffffffffffff8211156200054c576200054b620004aa565b5b620005578262000499565b9050602081019050919050565b60005b838110156200058457808201518184015260208101905062000567565b60008484015250505050565b6000620005a7620005a1846200052e565b6200050f565b905082815260208101848484011115620005c657620005c562000494565b5b620005d384828562000564565b509392505050565b600082601f830112620005f357620005f26200048f565b5b81516200060584826020860162000590565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200063b826200060e565b9050919050565b6200064d816200062e565b81146200065957600080fd5b50565b6000815190506200066d8162000642565b92915050565b6000806000806080858703121562000690576200068f62000485565b5b600085015167ffffffffffffffff811115620006b157620006b06200048a565b5b620006bf87828801620005db565b945050602085015167ffffffffffffffff811115620006e357620006e26200048a565b5b620006f187828801620005db565b935050604062000704878288016200065c565b925050606062000717878288016200065c565b91505092959194509250565b6000602082840312156200073c576200073b62000485565b5b60006200074c848285016200065c565b91505092915050565b62000760816200062e565b82525050565b60006040820190506200077d600083018562000755565b6200078c602083018462000755565b9392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007e657607f821691505b602082108103620007fc57620007fb6200079e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000827565b62000872868362000827565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008bf620008b9620008b3846200088a565b62000894565b6200088a565b9050919050565b6000819050919050565b620008db836200089e565b620008f3620008ea82620008c6565b84845462000834565b825550505050565b600090565b6200090a620008fb565b62000917818484620008d0565b505050565b5b818110156200093f576200093360008262000900565b6001810190506200091d565b5050565b601f8211156200098e57620009588162000802565b620009638462000817565b8101602085101562000973578190505b6200098b620009828562000817565b8301826200091c565b50505b505050565b600082821c905092915050565b6000620009b36000198460080262000993565b1980831691505092915050565b6000620009ce8383620009a0565b9150826002028217905092915050565b620009e98262000793565b67ffffffffffffffff81111562000a055762000a04620004aa565b5b62000a118254620007cd565b62000a1e82828562000943565b600060209050601f83116001811462000a56576000841562000a41578287015190505b62000a4d8582620009c0565b86555062000abd565b601f19841662000a668662000802565b60005b8281101562000a905784890151825560018201915060208501945060208101905062000a69565b8683101562000ab0578489015162000aac601f891682620009a0565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b535780860481111562000b2b5762000b2a62000ac5565b5b600185161562000b3b5780820291505b808102905062000b4b8562000af4565b945062000b0b565b94509492505050565b60008262000b6e576001905062000c41565b8162000b7e576000905062000c41565b816001811462000b97576002811462000ba25762000bd8565b600191505062000c41565b60ff84111562000bb75762000bb662000ac5565b5b8360020a91508482111562000bd15762000bd062000ac5565b5b5062000c41565b5060208310610133831016604e8410600b841016171562000c125782820a90508381111562000c0c5762000c0b62000ac5565b5b62000c41565b62000c21848484600162000b01565b9250905081840481111562000c3b5762000c3a62000ac5565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c62826200088a565b915062000c6f8362000c48565b925062000c9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b5c565b905092915050565b600062000cb3826200088a565b915062000cc0836200088a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cfc5762000cfb62000ac5565b5b828202905092915050565b6114008062000d176000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b4114610204578063a9059cbb14610222578063dd62ed3e14610252578063f2fde38b14610282576100cf565b806370a08231146101ac578063715018a6146101dc5780638da5cb5b146101e6576100cf565b806306fdde03146100d4578063095ea7b3146100f25780631694505e1461012257806318160ddd1461014057806323b872dd1461015e578063313ce5671461018e575b600080fd5b6100dc61029e565b6040516100e99190610dca565b60405180910390f35b61010c60048036038101906101079190610e85565b610330565b6040516101199190610ee0565b60405180910390f35b61012a610345565b6040516101379190610f5a565b60405180910390f35b61014861036b565b6040516101559190610f84565b60405180910390f35b61017860048036038101906101739190610f9f565b610375565b6040516101859190610ee0565b60405180910390f35b61019661041d565b6040516101a39190610f84565b60405180910390f35b6101c660048036038101906101c19190610ff2565b610437565b6040516101d39190610f84565b60405180910390f35b6101e4610480565b005b6101ee610508565b6040516101fb919061102e565b60405180910390f35b61020c610531565b6040516102199190610dca565b60405180910390f35b61023c60048036038101906102379190610e85565b6105c3565b6040516102499190610ee0565b60405180910390f35b61026c60048036038101906102679190611049565b6105da565b6040516102799190610f84565b60405180910390f35b61029c60048036038101906102979190610ff2565b610661565b005b6060600280546102ad906110b8565b80601f01602080910402602001604051908101604052809291908181526020018280546102d9906110b8565b80156103265780601f106102fb57610100808354040283529160200191610326565b820191906000526020600020905b81548152906001019060200180831161030957829003601f168201915b5050505050905090565b600061033d338484610758565b905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b600061038284848461088e565b610414843384600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461040f9190611118565b610758565b90509392505050565b6000600660009054906101000a900460ff1660ff16905090565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610488610c6e565b73ffffffffffffffffffffffffffffffffffffffff166104a6610508565b73ffffffffffffffffffffffffffffffffffffffff16146104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390611198565b60405180910390fd5b6105066000610c76565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610540906110b8565b80601f016020809104026020016040519081016040528092919081815260200182805461056c906110b8565b80156105b95780601f1061058e576101008083540402835291602001916105b9565b820191906000526020600020905b81548152906001019060200180831161059c57829003601f168201915b5050505050905090565b60006105d033848461088e565b6001905092915050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610669610c6e565b73ffffffffffffffffffffffffffffffffffffffff16610687610508565b73ffffffffffffffffffffffffffffffffffffffff16146106dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d490611198565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361074c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107439061122a565b60405180910390fd5b61075581610c76565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107c35750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b610802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f9906112bc565b60405180910390fd5b81600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b8273ffffffffffffffffffffffffffffffffffffffff16600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614600960006101000a81548160ff021916908315150217905550600960009054906101000a900460ff1615801561095457506000601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b801561099f57506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15610a0d57600660009054906101000a900460ff1660ff16601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a059190611118565b925050819055505b60015481610a1b91906112dc565b6007819055506000601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610abf5780600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ab79190611118565b925050819055505b600554600754610acf9190611365565b600881905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085481610b879190611118565b9050600660009054906101000a900460ff1660ff16600f6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c0c9190611396565b9250508190555080600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c629190611396565b92505081905550505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d74578082015181840152602081019050610d59565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d9c82610d3a565b610da68185610d45565b9350610db6818560208601610d56565b610dbf81610d80565b840191505092915050565b60006020820190508181036000830152610de48184610d91565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e1c82610df1565b9050919050565b610e2c81610e11565b8114610e3757600080fd5b50565b600081359050610e4981610e23565b92915050565b6000819050919050565b610e6281610e4f565b8114610e6d57600080fd5b50565b600081359050610e7f81610e59565b92915050565b60008060408385031215610e9c57610e9b610dec565b5b6000610eaa85828601610e3a565b9250506020610ebb85828601610e70565b9150509250929050565b60008115159050919050565b610eda81610ec5565b82525050565b6000602082019050610ef56000830184610ed1565b92915050565b6000819050919050565b6000610f20610f1b610f1684610df1565b610efb565b610df1565b9050919050565b6000610f3282610f05565b9050919050565b6000610f4482610f27565b9050919050565b610f5481610f39565b82525050565b6000602082019050610f6f6000830184610f4b565b92915050565b610f7e81610e4f565b82525050565b6000602082019050610f996000830184610f75565b92915050565b600080600060608486031215610fb857610fb7610dec565b5b6000610fc686828701610e3a565b9350506020610fd786828701610e3a565b9250506040610fe886828701610e70565b9150509250925092565b60006020828403121561100857611007610dec565b5b600061101684828501610e3a565b91505092915050565b61102881610e11565b82525050565b6000602082019050611043600083018461101f565b92915050565b600080604083850312156110605761105f610dec565b5b600061106e85828601610e3a565b925050602061107f85828601610e3a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806110d057607f821691505b6020821081036110e3576110e2611089565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061112382610e4f565b915061112e83610e4f565b9250828203905081811115611146576111456110e9565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611182602083610d45565b915061118d8261114c565b602082019050919050565b600060208201905081810360008301526111b181611175565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611214602683610d45565b915061121f826111b8565b604082019050919050565b6000602082019050818103600083015261124381611207565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006112a6602483610d45565b91506112b18261124a565b604082019050919050565b600060208201905081810360008301526112d581611299565b9050919050565b60006112e782610e4f565b91506112f283610e4f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561132b5761132a6110e9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061137082610e4f565b915061137b83610e4f565b92508261138b5761138a611336565b5b828204905092915050565b60006113a182610e4f565b91506113ac83610e4f565b92508282019050808211156113c4576113c36110e9565b5b9291505056fea264697066735822122098ad251f01105545630a26d23bccd92b21e3723272a61b1b5a48ee30e9804eec64736f6c63430008100033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000010f767924c19a5b62f257a72f90bb45eb88ba2e9000000000000000000000000000000000000000000000000000000000000000d537461726275636b7320496e7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d537461726275636b7320496e7500000000000000000000000000000000000000