60806040526040518060400160405280601081526020017f506f706f2c2050657065277320446f6700000000000000000000000000000000815250600190816200004a9190620005b4565b506040518060400160405280600481526020017f504f504f0000000000000000000000000000000000000000000000000000000081525060029081620000919190620005b4565b506009600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff1660ff166001620000cf91906200081e565b670de0b6b3a7640000620000e491906200086f565b600455664a9b63844880006007556001600860006101000a81548160ff0219169083151502179055503480156200011a57600080fd5b5060006200012d6200033260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000620001dd6200033260201b60201c565b905080600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600454600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620003239190620008cb565b60405180910390a350620008e8565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003bc57607f821691505b602082108103620003d257620003d162000374565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200043c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003fd565b620004488683620003fd565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004956200048f620004898462000460565b6200046a565b62000460565b9050919050565b6000819050919050565b620004b18362000474565b620004c9620004c0826200049c565b8484546200040a565b825550505050565b600090565b620004e0620004d1565b620004ed818484620004a6565b505050565b5b81811015620005155762000509600082620004d6565b600181019050620004f3565b5050565b601f82111562000564576200052e81620003d8565b6200053984620003ed565b8101602085101562000549578190505b620005616200055885620003ed565b830182620004f2565b50505b505050565b600082821c905092915050565b6000620005896000198460080262000569565b1980831691505092915050565b6000620005a4838362000576565b9150826002028217905092915050565b620005bf826200033a565b67ffffffffffffffff811115620005db57620005da62000345565b5b620005e78254620003a3565b620005f482828562000519565b600060209050601f8311600181146200062c576000841562000617578287015190505b62000623858262000596565b86555062000693565b601f1984166200063c86620003d8565b60005b8281101562000666578489015182556001820191506020850194506020810190506200063f565b8683101562000686578489015162000682601f89168262000576565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000729578086048111156200070157620007006200069b565b5b6001851615620007115780820291505b80810290506200072185620006ca565b9450620006e1565b94509492505050565b60008262000744576001905062000817565b8162000754576000905062000817565b81600181146200076d57600281146200077857620007ae565b600191505062000817565b60ff8411156200078d576200078c6200069b565b5b8360020a915084821115620007a757620007a66200069b565b5b5062000817565b5060208310610133831016604e8410600b8410161715620007e85782820a905083811115620007e257620007e16200069b565b5b62000817565b620007f78484846001620006d7565b925090508184048111156200081157620008106200069b565b5b81810290505b9392505050565b60006200082b8262000460565b9150620008388362000460565b9250620008677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000732565b905092915050565b60006200087c8262000460565b9150620008898362000460565b9250828202620008998162000460565b91508282048414831517620008b357620008b26200069b565b5b5092915050565b620008c58162000460565b82525050565b6000602082019050620008e26000830184620008ba565b92915050565b61199880620008f86000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d7146102c1578063a9059cbb146102f1578063aac5d69f14610321578063dd62ed3e1461033d578063f4cb7a571461036d57610116565b806370a082311461024b578063715018a61461027b5780638da5cb5b1461028557806395d89b41146102a357610116565b806329cb924d116100e957806329cb924d146101b7578063313ce567146101d5578063317b330a146101f35780633950935114610211578063538567051461024157610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b610123610377565b604051610130919061119a565b60405180910390f35b610153600480360381019061014e9190611255565b610409565b60405161016091906112b0565b60405180910390f35b610171610420565b60405161017e91906112da565b60405180910390f35b6101a1600480360381019061019c91906112f5565b61042a565b6040516101ae91906112b0565b60405180910390f35b6101bf61051d565b6040516101cc91906112da565b60405180910390f35b6101dd610525565b6040516101ea9190611364565b60405180910390f35b6101fb61053c565b60405161020891906112b0565b60405180910390f35b61022b60048036038101906102269190611255565b610545565b60405161023891906112b0565b60405180910390f35b6102496105ea565b005b6102656004803603810190610260919061137f565b61069c565b60405161027291906112da565b60405180910390f35b6102836106e5565b005b61028d610838565b60405161029a91906113bb565b60405180910390f35b6102ab610861565b6040516102b8919061119a565b60405180910390f35b6102db60048036038101906102d69190611255565b6108f3565b6040516102e891906112b0565b60405180910390f35b61030b60048036038101906103069190611255565b610998565b60405161031891906112b0565b60405180910390f35b61033b600480360381019061033691906113d6565b6109f1565b005b61035760048036038101906103529190611403565b610ad3565b60405161036491906112da565b60405180910390f35b610375610b5a565b005b60606001805461038690611472565b80601f01602080910402602001604051908101604052809291908181526020018280546103b290611472565b80156103ff5780601f106103d4576101008083540402835291602001916103ff565b820191906000526020600020905b8154815290600101906020018083116103e257829003601f168201915b5050505050905090565b6000610416338484610c0c565b6001905092915050565b6000600454905090565b600080821161046e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610465906114ef565b60405180910390fd5b610479848484610cf7565b610512843361050d85600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6d90919063ffffffff16565b610c0c565b600190509392505050565b600042905090565b6000600360009054906101000a900460ff16905090565b60006001905090565b60006105e033846105db85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fcc90919063ffffffff16565b610c0c565b6001905092915050565b6105f261102a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461067f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106769061155b565b60405180910390fd5b6001600860006101000a81548160ff021916908315150217905550565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ed61102a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461077a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107719061155b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461087090611472565b80601f016020809104026020016040519081016040528092919081815260200182805461089c90611472565b80156108e95780601f106108be576101008083540402835291602001916108e9565b820191906000526020600020905b8154815290600101906020018083116108cc57829003601f168201915b5050505050905090565b600061098e338461098985600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6d90919063ffffffff16565b610c0c565b6001905092915050565b60008082116109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d3906114ef565b60405180910390fd5b6109e7338484610cf7565b6001905092915050565b6109f961102a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d9061155b565b60405180910390fd5b60008111610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac0906115c7565b60405180910390fd5b8060078190555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b6261102a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be69061155b565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cea91906112da565b60405180910390a3505050565b8281600860009054906101000a900460ff161580610d54575060075481111580610d535750610d24610838565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90611633565b60405180910390fd5b6000610dbc6064610dae60008761103290919063ffffffff16565b6110ac90919063ffffffff16565b90506000610dd38286610f6d90919063ffffffff16565b9050610e2785600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6d90919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebc81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fcc90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f5c91906112da565b60405180910390a350505050505050565b600082821115610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa99061169f565b60405180910390fd5b60008284610fc091906116ee565b90508091505092915050565b6000808284610fdb9190611722565b905083811015611020576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611017906117a2565b60405180910390fd5b8091505092915050565b600033905090565b600080830361104457600090506110a6565b6000828461105291906117c2565b90508284826110619190611833565b146110a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611098906118d6565b60405180910390fd5b809150505b92915050565b60008082116110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790611942565b60405180910390fd5b600082846110fe9190611833565b90508091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611144578082015181840152602081019050611129565b60008484015250505050565b6000601f19601f8301169050919050565b600061116c8261110a565b6111768185611115565b9350611186818560208601611126565b61118f81611150565b840191505092915050565b600060208201905081810360008301526111b48184611161565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111ec826111c1565b9050919050565b6111fc816111e1565b811461120757600080fd5b50565b600081359050611219816111f3565b92915050565b6000819050919050565b6112328161121f565b811461123d57600080fd5b50565b60008135905061124f81611229565b92915050565b6000806040838503121561126c5761126b6111bc565b5b600061127a8582860161120a565b925050602061128b85828601611240565b9150509250929050565b60008115159050919050565b6112aa81611295565b82525050565b60006020820190506112c560008301846112a1565b92915050565b6112d48161121f565b82525050565b60006020820190506112ef60008301846112cb565b92915050565b60008060006060848603121561130e5761130d6111bc565b5b600061131c8682870161120a565b935050602061132d8682870161120a565b925050604061133e86828701611240565b9150509250925092565b600060ff82169050919050565b61135e81611348565b82525050565b60006020820190506113796000830184611355565b92915050565b600060208284031215611395576113946111bc565b5b60006113a38482850161120a565b91505092915050565b6113b5816111e1565b82525050565b60006020820190506113d060008301846113ac565b92915050565b6000602082840312156113ec576113eb6111bc565b5b60006113fa84828501611240565b91505092915050565b6000806040838503121561141a576114196111bc565b5b60006114288582860161120a565b92505060206114398582860161120a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061148a57607f821691505b60208210810361149d5761149c611443565b5b50919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b60006114d9602083611115565b91506114e4826114a3565b602082019050919050565b60006020820190508181036000830152611508816114cc565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611545602083611115565b91506115508261150f565b602082019050919050565b6000602082019050818103600083015261157481611538565b9050919050565b7f4c696d6974206d7573742062652067726561746572207468616e207a65726f00600082015250565b60006115b1601f83611115565b91506115bc8261157b565b602082019050919050565b600060208201905081810360008301526115e0816115a4565b9050919050565b7f427579206c696d69742065786365656465640000000000000000000000000000600082015250565b600061161d601283611115565b9150611628826115e7565b602082019050919050565b6000602082019050818103600083015261164c81611610565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000611689601e83611115565b915061169482611653565b602082019050919050565b600060208201905081810360008301526116b88161167c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116f98261121f565b91506117048361121f565b925082820390508181111561171c5761171b6116bf565b5b92915050565b600061172d8261121f565b91506117388361121f565b92508282019050808211156117505761174f6116bf565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061178c601b83611115565b915061179782611756565b602082019050919050565b600060208201905081810360008301526117bb8161177f565b9050919050565b60006117cd8261121f565b91506117d88361121f565b92508282026117e68161121f565b915082820484148315176117fd576117fc6116bf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061183e8261121f565b91506118498361121f565b92508261185957611858611804565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006118c0602183611115565b91506118cb82611864565b604082019050919050565b600060208201905081810360008301526118ef816118b3565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b600061192c601a83611115565b9150611937826118f6565b602082019050919050565b6000602082019050818103600083015261195b8161191f565b905091905056fea26469706673582212203f97a8908aa1bd3f01ef4b7a75c6509f06eb2108875b2aa03266d90ff641cffb64736f6c63430008130033