0x60806040526040518060400160405280600981526020017f456d656d436f696e730000000000000000000000000000000000000000000000815250600590816200004a919062000673565b506040518060400160405280600481526020017f454d454d000000000000000000000000000000000000000000000000000000008152506006908162000091919062000673565b506006600760006101000a81548160ff021916908360ff160217905550348015620000bb57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001806000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001f4600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166955a2ce834b71446a9500620001fa60201b60201c565b620008e7565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200026c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026390620007bb565b60405180910390fd5b62000288816002546200039660201b62000b281790919060201c565b600281905550620002e781600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200039660201b62000b281790919060201c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200038a9190620007ee565b60405180910390a35050565b6000808284620003a791906200083a565b905083811015620003ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e690620008c5565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200047b57607f821691505b60208210810362000491576200049062000433565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004bc565b620005078683620004bc565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005546200054e62000548846200051f565b62000529565b6200051f565b9050919050565b6000819050919050565b620005708362000533565b620005886200057f826200055b565b848454620004c9565b825550505050565b600090565b6200059f62000590565b620005ac81848462000565565b505050565b5b81811015620005d457620005c860008262000595565b600181019050620005b2565b5050565b601f8211156200062357620005ed8162000497565b620005f884620004ac565b8101602085101562000608578190505b620006206200061785620004ac565b830182620005b1565b50505b505050565b600082821c905092915050565b6000620006486000198460080262000628565b1980831691505092915050565b600062000663838362000635565b9150826002028217905092915050565b6200067e82620003f9565b67ffffffffffffffff8111156200069a576200069962000404565b5b620006a6825462000462565b620006b3828285620005d8565b600060209050601f831160018114620006eb5760008415620006d6578287015190505b620006e2858262000655565b86555062000752565b601f198416620006fb8662000497565b60005b828110156200072557848901518255600182019150602085019450602081019050620006fe565b8683101562000745578489015162000741601f89168262000635565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007a3601f836200075a565b9150620007b0826200076b565b602082019050919050565b60006020820190508181036000830152620007d68162000794565b9050919050565b620007e8816200051f565b82525050565b6000602082019050620008056000830184620007dd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000847826200051f565b915062000854836200051f565b92508282019050808211156200086f576200086e6200080b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620008ad601b836200075a565b9150620008ba8262000875565b602082019050919050565b60006020820190508181036000830152620008e0816200089e565b9050919050565b611c3e80620008f76000396000f3fe6080604052600436106100f75760003560e01c806370a082311161008a578063a9059cbb11610059578063a9059cbb146103c7578063b2bdfa7b14610404578063c492f0461461042f578063dd62ed3e1461045857610166565b806370a08231146102f757806378e979251461033457806395d89b411461035f578063a457c2d71461038a57610166565b8063313ce567116100c6578063313ce5671461023b578063395093511461026657806342966c68146102a3578063534d7a8f146102e057610166565b806306fdde031461016b578063095ea7b31461019657806318160ddd146101d357806323b872dd146101fe57610166565b3661016657600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610164573d6000803e3d6000fd5b005b600080fd5b34801561017757600080fd5b50610180610495565b60405161018d9190611303565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b891906113c3565b610527565b6040516101ca919061141e565b60405180910390f35b3480156101df57600080fd5b506101e861053e565b6040516101f59190611448565b60405180910390f35b34801561020a57600080fd5b5061022560048036038101906102209190611463565b610548565b604051610232919061141e565b60405180910390f35b34801561024757600080fd5b5061025061060b565b60405161025d91906114d2565b60405180910390f35b34801561027257600080fd5b5061028d600480360381019061028891906113c3565b610622565b60405161029a919061141e565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c591906114ed565b6106c7565b6040516102d7919061141e565b60405180910390f35b3480156102ec57600080fd5b506102f56106dc565b005b34801561030357600080fd5b5061031e6004803603810190610319919061151a565b6107ad565b60405161032b9190611448565b60405180910390f35b34801561034057600080fd5b506103496107f6565b6040516103569190611448565b60405180910390f35b34801561036b57600080fd5b506103746107fc565b6040516103819190611303565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac91906113c3565b61088e565b6040516103be919061141e565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e991906113c3565b610933565b6040516103fb919061141e565b60405180910390f35b34801561041057600080fd5b5061041961094a565b6040516104269190611556565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190611602565b61096e565b005b34801561046457600080fd5b5061047f600480360381019061047a9190611662565b610aa1565b60405161048c9190611448565b60405180910390f35b6060600580546104a4906116d1565b80601f01602080910402602001604051908101604052809291908181526020018280546104d0906116d1565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b6000610534338484610b86565b6001905092915050565b6000600254905090565b6000610555848484610d4f565b60006008540361056757426008819055505b61060084336105fb85600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461108b90919063ffffffff16565b610b86565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60006106bd33846106b885600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b2890919063ffffffff16565b610b86565b6001905092915050565b60006106d333836110ea565b60019050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107619061174e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b60606006805461080b906116d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610837906116d1565b80156108845780601f1061085957610100808354040283529160200191610884565b820191906000526020600020905b81548152906001019060200180831161086757829003601f168201915b5050505050905090565b6000610929338461092485600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461108b90919063ffffffff16565b610b86565b6001905092915050565b6000610940338484610d4f565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f39061174e565b60405180910390fd5b60005b83839050811015610a9b578160016000868685818110610a2257610a2161176e565b5b9050602002016020810190610a37919061151a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a93906117cc565b9150506109ff565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808284610b379190611814565b905083811015610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390611894565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90611926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b906119b8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d429190611448565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590611a4a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2390611ab6565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610ecd5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610ef75742610ee9610708600854610b2890919063ffffffff16565b1115610ef657620f424090505b5b610f4981600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461108b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fde81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b2890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161107e9190611448565b60405180910390a3505050565b6000828211156110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790611b22565b60405180910390fd5b600082846110de9190611b42565b90508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115090611be8565b60405180910390fd5b61116e8160025461108b90919063ffffffff16565b6002819055506111c681600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461108b90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112679190611448565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156112ad578082015181840152602081019050611292565b60008484015250505050565b6000601f19601f8301169050919050565b60006112d582611273565b6112df818561127e565b93506112ef81856020860161128f565b6112f8816112b9565b840191505092915050565b6000602082019050818103600083015261131d81846112ca565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061135a8261132f565b9050919050565b61136a8161134f565b811461137557600080fd5b50565b60008135905061138781611361565b92915050565b6000819050919050565b6113a08161138d565b81146113ab57600080fd5b50565b6000813590506113bd81611397565b92915050565b600080604083850312156113da576113d9611325565b5b60006113e885828601611378565b92505060206113f9858286016113ae565b9150509250929050565b60008115159050919050565b61141881611403565b82525050565b6000602082019050611433600083018461140f565b92915050565b6114428161138d565b82525050565b600060208201905061145d6000830184611439565b92915050565b60008060006060848603121561147c5761147b611325565b5b600061148a86828701611378565b935050602061149b86828701611378565b92505060406114ac868287016113ae565b9150509250925092565b600060ff82169050919050565b6114cc816114b6565b82525050565b60006020820190506114e760008301846114c3565b92915050565b60006020828403121561150357611502611325565b5b6000611511848285016113ae565b91505092915050565b6000602082840312156115305761152f611325565b5b600061153e84828501611378565b91505092915050565b6115508161134f565b82525050565b600060208201905061156b6000830184611547565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261159657611595611571565b5b8235905067ffffffffffffffff8111156115b3576115b2611576565b5b6020830191508360208202830111156115cf576115ce61157b565b5b9250929050565b6115df81611403565b81146115ea57600080fd5b50565b6000813590506115fc816115d6565b92915050565b60008060006040848603121561161b5761161a611325565b5b600084013567ffffffffffffffff8111156116395761163861132a565b5b61164586828701611580565b93509350506020611658868287016115ed565b9150509250925092565b6000806040838503121561167957611678611325565b5b600061168785828601611378565b925050602061169885828601611378565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116e957607f821691505b6020821081036116fc576116fb6116a2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061173860208361127e565b915061174382611702565b602082019050919050565b600060208201905081810360008301526117678161172b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117d78261138d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118095761180861179d565b5b600182019050919050565b600061181f8261138d565b915061182a8361138d565b92508282019050808211156118425761184161179d565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061187e601b8361127e565b915061188982611848565b602082019050919050565b600060208201905081810360008301526118ad81611871565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061191060248361127e565b915061191b826118b4565b604082019050919050565b6000602082019050818103600083015261193f81611903565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006119a260228361127e565b91506119ad82611946565b604082019050919050565b600060208201905081810360008301526119d181611995565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611a3460258361127e565b9150611a3f826119d8565b604082019050919050565b60006020820190508181036000830152611a6381611a27565b9050919050565b7f73616d6520616464726573730000000000000000000000000000000000000000600082015250565b6000611aa0600c8361127e565b9150611aab82611a6a565b602082019050919050565b60006020820190508181036000830152611acf81611a93565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000611b0c601e8361127e565b9150611b1782611ad6565b602082019050919050565b60006020820190508181036000830152611b3b81611aff565b9050919050565b6000611b4d8261138d565b9150611b588361138d565b9250828203905081811115611b7057611b6f61179d565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bd260218361127e565b9150611bdd82611b76565b604082019050919050565b60006020820190508181036000830152611c0181611bc5565b905091905056fea2646970667358221220c047d79566f5cae5c3d452910a432248f2d36ddd5ddadfe7ffca9fac31a940db64736f6c63430008120033