60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f4d6961205061636d616e000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5041434d4941000000000000000000000000000000000000000000000000000081525033826006908162000090919062000541565b508160079081620000a2919062000541565b5080600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548160ff0219169083151502179055505050506200014133620001176200014760201b60201c565b600a620001259190620007b8565b624c4b4062000135919062000809565b6200015060201b60201c565b62000940565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b990620008b5565b60405180910390fd5b620001d660008383620002bd60201b60201c565b8060036000828254620001ea9190620008d7565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200029d919062000923565b60405180910390a3620002b960008383620002c260201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200034957607f821691505b6020821081036200035f576200035e62000301565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200038a565b620003d586836200038a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004226200041c6200041684620003ed565b620003f7565b620003ed565b9050919050565b6000819050919050565b6200043e8362000401565b620004566200044d8262000429565b84845462000397565b825550505050565b600090565b6200046d6200045e565b6200047a81848462000433565b505050565b5b81811015620004a2576200049660008262000463565b60018101905062000480565b5050565b601f821115620004f157620004bb8162000365565b620004c6846200037a565b81016020851015620004d6578190505b620004ee620004e5856200037a565b8301826200047f565b50505b505050565b600082821c905092915050565b60006200051660001984600802620004f6565b1980831691505092915050565b600062000531838362000503565b9150826002028217905092915050565b6200054c82620002c7565b67ffffffffffffffff811115620005685762000567620002d2565b5b62000574825462000330565b62000581828285620004a6565b600060209050601f831160018114620005b95760008415620005a4578287015190505b620005b0858262000523565b86555062000620565b601f198416620005c98662000365565b60005b82811015620005f357848901518255600182019150602085019450602081019050620005cc565b868310156200061357848901516200060f601f89168262000503565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006b6578086048111156200068e576200068d62000628565b5b60018516156200069e5780820291505b8081029050620006ae8562000657565b94506200066e565b94509492505050565b600082620006d15760019050620007a4565b81620006e15760009050620007a4565b8160018114620006fa576002811462000705576200073b565b6001915050620007a4565b60ff8411156200071a576200071962000628565b5b8360020a91508482111562000734576200073362000628565b5b50620007a4565b5060208310610133831016604e8410600b8410161715620007755782820a9050838111156200076f576200076e62000628565b5b620007a4565b62000784848484600162000664565b925090508184048111156200079e576200079d62000628565b5b81810290505b9392505050565b600060ff82169050919050565b6000620007c582620003ed565b9150620007d283620007ab565b9250620008017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006bf565b905092915050565b60006200081682620003ed565b91506200082383620003ed565b92508282026200083381620003ed565b915082820484148315176200084d576200084c62000628565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200089d601f8362000854565b9150620008aa8262000865565b602082019050919050565b60006020820190508181036000830152620008d0816200088e565b9050919050565b6000620008e482620003ed565b9150620008f183620003ed565b92508282019050808211156200090c576200090b62000628565b5b92915050565b6200091d81620003ed565b82525050565b60006020820190506200093a600083018462000912565b92915050565b61198780620009506000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063b2bdfa7b11610071578063b2bdfa7b146102e2578063c966c51514610300578063cd1671c81461031c578063dd62ed3e14610326578063ef89aff3146103565761010b565b806370a082311461023457806395d89b4114610264578063a457c2d714610282578063a9059cbb146102b25761010b565b8063313ce567116100de578063313ce567146101ac57806339509351146101ca5780634437152a146101fa578063636fc28b146102165761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610360565b6040516101259190611198565b60405180910390f35b61014860048036038101906101439190611253565b6103f2565b60405161015591906112ae565b60405180910390f35b61016661040e565b60405161017391906112d8565b60405180910390f35b610196600480360381019061019191906112f3565b610418565b6040516101a391906112ae565b60405180910390f35b6101b4610440565b6040516101c19190611362565b60405180910390f35b6101e460048036038101906101df9190611253565b610449565b6040516101f191906112ae565b60405180910390f35b610214600480360381019061020f919061137d565b610479565b005b61021e610517565b60405161022b91906113b9565b60405180910390f35b61024e6004803603810190610249919061137d565b61053d565b60405161025b91906112d8565b60405180910390f35b61026c610585565b6040516102799190611198565b60405180910390f35b61029c60048036038101906102979190611253565b610617565b6040516102a991906112ae565b60405180910390f35b6102cc60048036038101906102c79190611253565b610687565b6040516102d991906112ae565b60405180910390f35b6102ea6106a3565b6040516102f791906113b9565b60405180910390f35b61031a600480360381019061031591906113d4565b6106c9565b005b610324610994565b005b610340600480360381019061033b9190611476565b610a0b565b60405161034d91906112d8565b60405180910390f35b61035e610a92565b005b60606006805461036f906114e5565b80601f016020809104026020016040519081016040528092919081815260200182805461039b906114e5565b80156103e85780601f106103bd576101008083540402835291602001916103e8565b820191906000526020600020905b8154815290600101906020018083116103cb57829003601f168201915b5050505050905090565b600080339050610403818585610b09565b600191505092915050565b6000600354905090565b600080339050610429858285610cd2565b610434858585610d5e565b60019150509392505050565b60006012905090565b60008033905061046e81858561045f8589610a0b565b6104699190611545565b610b09565b600191505092915050565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d357600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060078054610594906114e5565b80601f01602080910402602001604051908101604052809291908181526020018280546105c0906114e5565b801561060d5780601f106105e25761010080835404028352916020019161060d565b820191906000526020600020905b8154815290600101906020018083116105f057829003601f168201915b5050505050905090565b60008033905060006106298286610a0b565b90508381101561066e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610665906115eb565b60405180910390fd5b61067b8286868403610b09565b60019250505092915050565b600080339050610698818585610d5e565b600191505092915050565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072357600080fd5b6001600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050505050565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ee57600080fd5b6000600460006101000a81548160ff021916908315150217905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aec57600080fd5b6001600460006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f9061167d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde9061170f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cc591906112d8565b60405180910390a3505050565b6000610cde8484610a0b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d585781811015610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d419061177b565b60405180910390fd5b610d578484848403610b09565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc49061180d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e339061189f565b60405180910390fd5b60011515600460009054906101000a900460ff16151503610f6657600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614158015610f05575060001515600260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15610f6557600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f6457600080fd5b5b5b610f718383836110fe565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee90611931565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110e591906112d8565b60405180910390a36110f8848484611103565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611142578082015181840152602081019050611127565b60008484015250505050565b6000601f19601f8301169050919050565b600061116a82611108565b6111748185611113565b9350611184818560208601611124565b61118d8161114e565b840191505092915050565b600060208201905081810360008301526111b2818461115f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111ea826111bf565b9050919050565b6111fa816111df565b811461120557600080fd5b50565b600081359050611217816111f1565b92915050565b6000819050919050565b6112308161121d565b811461123b57600080fd5b50565b60008135905061124d81611227565b92915050565b6000806040838503121561126a576112696111ba565b5b600061127885828601611208565b92505060206112898582860161123e565b9150509250929050565b60008115159050919050565b6112a881611293565b82525050565b60006020820190506112c3600083018461129f565b92915050565b6112d28161121d565b82525050565b60006020820190506112ed60008301846112c9565b92915050565b60008060006060848603121561130c5761130b6111ba565b5b600061131a86828701611208565b935050602061132b86828701611208565b925050604061133c8682870161123e565b9150509250925092565b600060ff82169050919050565b61135c81611346565b82525050565b60006020820190506113776000830184611353565b92915050565b600060208284031215611393576113926111ba565b5b60006113a184828501611208565b91505092915050565b6113b3816111df565b82525050565b60006020820190506113ce60008301846113aa565b92915050565b600080600080600080600060e0888a0312156113f3576113f26111ba565b5b60006114018a828b01611208565b97505060206114128a828b01611208565b96505060406114238a828b01611208565b95505060606114348a828b01611208565b94505060806114458a828b01611208565b93505060a06114568a828b01611208565b92505060c06114678a828b01611208565b91505092959891949750929550565b6000806040838503121561148d5761148c6111ba565b5b600061149b85828601611208565b92505060206114ac85828601611208565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806114fd57607f821691505b6020821081036115105761150f6114b6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115508261121d565b915061155b8361121d565b925082820190508082111561157357611572611516565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006115d5602583611113565b91506115e082611579565b604082019050919050565b60006020820190508181036000830152611604816115c8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611667602483611113565b91506116728261160b565b604082019050919050565b600060208201905081810360008301526116968161165a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006116f9602283611113565b91506117048261169d565b604082019050919050565b60006020820190508181036000830152611728816116ec565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611765601d83611113565b91506117708261172f565b602082019050919050565b6000602082019050818103600083015261179481611758565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006117f7602583611113565b91506118028261179b565b604082019050919050565b60006020820190508181036000830152611826816117ea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611889602383611113565b91506118948261182d565b604082019050919050565b600060208201905081810360008301526118b88161187c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061191b602683611113565b9150611926826118bf565b604082019050919050565b6000602082019050818103600083015261194a8161190e565b905091905056fea2646970667358221220dc87ffc1b793a7489f7e2c43889d10ccb8f187d55b074c8e7aafb587d9b5246d64736f6c63430008120033