0x60806040523480156200001157600080fd5b506000620000246200023560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280601681526020017f5374726f6e6720536d617274204661726d20636f696e0000000000000000000081525060069081620001089190620004b7565b506040518060400160405280600481526020017f5353464300000000000000000000000000000000000000000000000000000000815250600590816200014f9190620004b7565b506012600460006101000a81548160ff021916908360ff1602179055506b1027e72f1f12813088000000600381905550600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620002279190620005af565b60405180910390a3620005cc565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002bf57607f821691505b602082108103620002d557620002d462000277565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200033f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000300565b6200034b868362000300565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000398620003926200038c8462000363565b6200036d565b62000363565b9050919050565b6000819050919050565b620003b48362000377565b620003cc620003c3826200039f565b8484546200030d565b825550505050565b600090565b620003e3620003d4565b620003f0818484620003a9565b505050565b5b8181101562000418576200040c600082620003d9565b600181019050620003f6565b5050565b601f82111562000467576200043181620002db565b6200043c84620002f0565b810160208510156200044c578190505b620004646200045b85620002f0565b830182620003f5565b50505b505050565b600082821c905092915050565b60006200048c600019846008026200046c565b1980831691505092915050565b6000620004a7838362000479565b9150826002028217905092915050565b620004c2826200023d565b67ffffffffffffffff811115620004de57620004dd62000248565b5b620004ea8254620002a6565b620004f78282856200041c565b600060209050601f8311600181146200052f57600084156200051a578287015190505b62000526858262000499565b86555062000596565b601f1984166200053f86620002db565b60005b82811015620005695784890151825560018201915060208501945060208101905062000542565b8683101562000589578489015162000585601f89168262000479565b8355505b6001600288020188555050505b505050505050565b620005a98162000363565b82525050565b6000602082019050620005c660008301846200059e565b92915050565b6118a380620005dc6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d714610278578063a9059cbb146102a8578063dd62ed3e146102d8578063f2fde38b14610308576100f5565b8063715018a614610214578063893d20e81461021e5780638da5cb5b1461023c57806395d89b411461025a576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806370a08231146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610324565b60405161010f91906110d5565b60405180910390f35b610132600480360381019061012d9190611190565b6103b6565b60405161013f91906111eb565b60405180910390f35b6101506103d4565b60405161015d9190611215565b60405180910390f35b610180600480360381019061017b9190611230565b6103de565b60405161018d91906111eb565b60405180910390f35b61019e6104b7565b6040516101ab919061129f565b60405180910390f35b6101ce60048036038101906101c99190611190565b6104ce565b6040516101db91906111eb565b60405180910390f35b6101fe60048036038101906101f991906112ba565b610581565b60405161020b9190611215565b60405180910390f35b61021c6105ca565b005b61022661071d565b60405161023391906112f6565b60405180910390f35b61024461072c565b60405161025191906112f6565b60405180910390f35b610262610755565b60405161026f91906110d5565b60405180910390f35b610292600480360381019061028d9190611190565b6107e7565b60405161029f91906111eb565b60405180910390f35b6102c260048036038101906102bd9190611190565b6108b4565b6040516102cf91906111eb565b60405180910390f35b6102f260048036038101906102ed9190611311565b6108d2565b6040516102ff9190611215565b60405180910390f35b610322600480360381019061031d91906112ba565b610959565b005b60606006805461033390611380565b80601f016020809104026020016040519081016040528092919081815260200182805461035f90611380565b80156103ac5780601f10610381576101008083540402835291602001916103ac565b820191906000526020600020905b81548152906001019060200180831161038f57829003601f168201915b5050505050905090565b60006103ca6103c36109fa565b8484610a02565b6001905092915050565b6000600354905090565b60006103eb848484610bcb565b6104ac846103f76109fa565b6104a78560405180606001604052806028815260200161182160289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061045d6109fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e579092919063ffffffff16565b610a02565b600190509392505050565b6000600460009054906101000a900460ff16905090565b60006105776104db6109fa565b8461057285600260006104ec6109fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebb90919063ffffffff16565b610a02565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105d26109fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461065f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610656906113fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061072761072c565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461076490611380565b80601f016020809104026020016040519081016040528092919081815260200182805461079090611380565b80156107dd5780601f106107b2576101008083540402835291602001916107dd565b820191906000526020600020905b8154815290600101906020018083116107c057829003601f168201915b5050505050905090565b60006108aa6107f46109fa565b846108a585604051806060016040528060258152602001611849602591396002600061081e6109fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e579092919063ffffffff16565b610a02565b6001905092915050565b60006108c86108c16109fa565b8484610bcb565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109616109fa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e5906113fd565b60405180910390fd5b6109f781610f19565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a689061148f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790611521565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bbe9190611215565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c31906115b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090611645565b60405180910390fd5b610d15816040518060600160405280602681526020016117fb60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e579092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610daa81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebb90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e4a9190611215565b60405180910390a3505050565b6000838311158290610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9691906110d5565b60405180910390fd5b5060008385610eae9190611694565b9050809150509392505050565b6000808284610eca91906116c8565b905083811015610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0690611748565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f906117da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561107f578082015181840152602081019050611064565b60008484015250505050565b6000601f19601f8301169050919050565b60006110a782611045565b6110b18185611050565b93506110c1818560208601611061565b6110ca8161108b565b840191505092915050565b600060208201905081810360008301526110ef818461109c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611127826110fc565b9050919050565b6111378161111c565b811461114257600080fd5b50565b6000813590506111548161112e565b92915050565b6000819050919050565b61116d8161115a565b811461117857600080fd5b50565b60008135905061118a81611164565b92915050565b600080604083850312156111a7576111a66110f7565b5b60006111b585828601611145565b92505060206111c68582860161117b565b9150509250929050565b60008115159050919050565b6111e5816111d0565b82525050565b600060208201905061120060008301846111dc565b92915050565b61120f8161115a565b82525050565b600060208201905061122a6000830184611206565b92915050565b600080600060608486031215611249576112486110f7565b5b600061125786828701611145565b935050602061126886828701611145565b92505060406112798682870161117b565b9150509250925092565b600060ff82169050919050565b61129981611283565b82525050565b60006020820190506112b46000830184611290565b92915050565b6000602082840312156112d0576112cf6110f7565b5b60006112de84828501611145565b91505092915050565b6112f08161111c565b82525050565b600060208201905061130b60008301846112e7565b92915050565b60008060408385031215611328576113276110f7565b5b600061133685828601611145565b925050602061134785828601611145565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061139857607f821691505b6020821081036113ab576113aa611351565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006113e7602083611050565b91506113f2826113b1565b602082019050919050565b60006020820190508181036000830152611416816113da565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611479602483611050565b91506114848261141d565b604082019050919050565b600060208201905081810360008301526114a88161146c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061150b602283611050565b9150611516826114af565b604082019050919050565b6000602082019050818103600083015261153a816114fe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061159d602583611050565b91506115a882611541565b604082019050919050565b600060208201905081810360008301526115cc81611590565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061162f602383611050565b915061163a826115d3565b604082019050919050565b6000602082019050818103600083015261165e81611622565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061169f8261115a565b91506116aa8361115a565b92508282039050818111156116c2576116c1611665565b5b92915050565b60006116d38261115a565b91506116de8361115a565b92508282019050808211156116f6576116f5611665565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611732601b83611050565b915061173d826116fc565b602082019050919050565b6000602082019050818103600083015261176181611725565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006117c4602683611050565b91506117cf82611768565b604082019050919050565b600060208201905081810360008301526117f3816117b7565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bcf4ca62f851a9a07668dc8693373b0d455ab2898077d19101039257ff33b47164736f6c63430008120033