608060405234801561001057600080fd5b50613df3806100206000396000f3fe608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063032cac341461018557806306fdde03146101ea578063095ea7b31461027a5780630a457520146102ed578063111b93ee1461034457806318160ddd146103ad57806321f4856f146103d857806323b872dd146104aa578063313ce5671461053d578063395093511461056e57806342966c68146105e1578063475d6e70146106345780634c99f4cf146106af578063590b3c181461072c578063600866a41461083957806363a67c1c146108a457806365645cc61461095857806370a0823114610a2257806376d7d40014610a8757806379cc679014610b0457806387475fa714610b7757806395d89b4114610be0578063a15babd414610c70578063a457c2d714610d03578063a9059cbb14610d76578063dd62ed3e14610de9578063e25defb814610e6e578063e55a258714610e99578063ea8f4a7514610efe578063ff4e59c414610f8e575b600080fd5b34801561019157600080fd5b506101d4600480360360208110156101a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611001565b6040518082815260200191505060405180910390f35b3480156101f657600080fd5b506101ff61104d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023f578082015181840152602081019050610224565b50505050905090810190601f16801561026c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028657600080fd5b506102d36004803603604081101561029d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ef565b604051808215151515815260200191505060405180910390f35b3480156102f957600080fd5b50610302611106565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035057600080fd5b506103936004803603602081101561036757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611130565b604051808215151515815260200191505060405180910390f35b3480156103b957600080fd5b506103c26114b1565b6040518082815260200191505060405180910390f35b3480156103e457600080fd5b506104a8600480360360408110156103fb57600080fd5b81019080803590602001909291908035906020019064010000000081111561042257600080fd5b82018360208201111561043457600080fd5b8035906020019184600183028401116401000000008311171561045657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114bb565b005b3480156104b657600080fd5b50610523600480360360608110156104cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611524565b604051808215151515815260200191505060405180910390f35b34801561054957600080fd5b50610552611633565b604051808260ff1660ff16815260200191505060405180910390f35b34801561057a57600080fd5b506105c76004803603604081101561059157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061164a565b604051808215151515815260200191505060405180910390f35b3480156105ed57600080fd5b5061061a6004803603602081101561060457600080fd5b81019080803590602001909291905050506116ef565b604051808215151515815260200191505060405180910390f35b34801561064057600080fd5b5061066d6004803603602081101561065757600080fd5b8101908080359060200190929190505050611700565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106bb57600080fd5b50610712600480360360608110156106d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506117cb565b604051808215151515815260200191505060405180910390f35b34801561073857600080fd5b5061081f6004803603606081101561074f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561078c57600080fd5b82018360208201111561079e57600080fd5b803590602001918460018302840111640100000000831117156107c057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff1690602001909291905050506118ad565b604051808215151515815260200191505060405180910390f35b34801561084557600080fd5b506108886004803603602081101561085c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dab565b604051808260ff1660ff16815260200191505060405180910390f35b3480156108b057600080fd5b506108dd600480360360208110156108c757600080fd5b8101908080359060200190929190505050611ff3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561091d578082015181840152602081019050610902565b50505050905090810190601f16801561094a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561096457600080fd5b506109a76004803603602081101561097b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120e5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109e75780820151818401526020810190506109cc565b50505050905090810190601f168015610a145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a2e57600080fd5b50610a7160048036036020811015610a4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612207565b6040518082815260200191505060405180910390f35b348015610a9357600080fd5b50610aea60048036036060811015610aaa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061224f565b604051808215151515815260200191505060405180910390f35b348015610b1057600080fd5b50610b5d60048036036040811015610b2757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612407565b604051808215151515815260200191505060405180910390f35b348015610b8357600080fd5b50610bc660048036036020811015610b9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612419565b604051808215151515815260200191505060405180910390f35b348015610bec57600080fd5b50610bf56124f2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c35578082015181840152602081019050610c1a565b50505050905090810190601f168015610c625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c7c57600080fd5b50610ce960048036036060811015610c9357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612594565b604051808215151515815260200191505060405180910390f35b348015610d0f57600080fd5b50610d5c60048036036040811015610d2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612671565b604051808215151515815260200191505060405180910390f35b348015610d8257600080fd5b50610dcf60048036036040811015610d9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612774565b604051808215151515815260200191505060405180910390f35b348015610df557600080fd5b50610e5860048036036040811015610e0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061278b565b6040518082815260200191505060405180910390f35b348015610e7a57600080fd5b50610e83612812565b6040518082815260200191505060405180910390f35b348015610ea557600080fd5b50610ee860048036036020811015610ebc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061281f565b6040518082815260200191505060405180910390f35b348015610f0a57600080fd5b50610f1361286b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f53578082015181840152602081019050610f38565b50505050905090810190601f168015610f805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f9a57600080fd5b50610fe760048036036040811015610fb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061290d565b604051808215151515815260200191505060405180910390f35b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e55780601f106110ba576101008083540402835291602001916110e5565b820191906000526020600020905b8154815290600101906020018083116110c857829003601f168201915b5050505050905090565b60006110fc338484612b96565b6001905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561121e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f636f6e747261637420637265617465722063616e6e6f742062652064656c657481526020017f656400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611226613c6b565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604080519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113095780601f106112de57610100808354040283529160200191611309565b820191906000526020600020905b8154815290600101906020018083116112ec57829003601f168201915b505050505081526020016001820160009054906101000a900460ff1660ff1660ff16815250509050600e816020015160ff161115156113d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f54686973206973206d616e61676572206c6576656c206f766572203135206f6e81526020017f6c792065636f64652d303300000000000000000000000000000000000000000081525060400191505060405180910390fd5b60408051908101604052806040805190810160405280600381526020017f64656c00000000000000000000000000000000000000000000000000000000008152508152602001600060ff16815250905080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000019080519060200190611482929190613c88565b5060208201518160010160006101000a81548160ff021916908360ff1602179055509050506001915050919050565b6000600654905090565b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020908051906020019061151f929190613d08565b505050565b600061161d843361161885606060405190810160405280602881526020017f45524332303a207472616e7366657220616d6f756e742065786365656473206181526020017f6c6c6f77616e6365000000000000000000000000000000000000000000000000815250600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e179092919063ffffffff16565b612b96565b611628848484612ed9565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006116e533846116e085600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340090919063ffffffff16565b612b96565b6001905092915050565b60006116fb338361348a565b919050565b6000808211801561171657506009805490508211155b151561178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f75746f6672616e67650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60098281548110151561179957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006009600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1660ff16111515611897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c6174616d204d616e61676572206f6e6c79000000000000000000000000000081525060200191505060405180910390fd5b6118a2848484613790565b600190509392505050565b60006118b7613c6b565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604080519081016040529081600082018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561199a5780601f1061196f5761010080835404028352916020019161199a565b820191906000526020600020905b81548152906001019060200180831161197d57829003601f168201915b505050505081526020016001820160009054906101000a900460ff1660ff1660ff16815250509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ae557600e816020015160ff16111515611abe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f54686973206973206d616e61676572206c6576656c206f766572203135206f6e81526020017f6c792065636f64652d303100000000000000000000000000000000000000000081525060400191505060405180910390fd5b600f816020015160ff161015611ad357600a92505b600f8360ff161115611ae457600f92505b5b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604080519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bc85780601f10611b9d57610100808354040283529160200191611bc8565b820191906000526020600020905b815481529060010190602001808311611bab57829003601f168201915b505050505081526020016001820160009054906101000a900460ff1660ff1660ff1681525050905060608160000151905060606040805190810160405280600381526020017f64656c00000000000000000000000000000000000000000000000000000000008152509050808051906020012082805190602001201415611c695785836000018190525084836020019060ff16908160ff1681525050611d1c565b6000836020015160ff16141515611c9a5785836000018190525084836020019060ff16908160ff1681525050611d1b565b60408051908101604052808781526020018660ff16815250925060098790806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b5b82600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000019080519060200190611d78929190613c88565b5060208201518160010160006101000a81548160ff021916908360ff160217905550905050600193505050509392505050565b6000611db5613c6b565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604080519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e985780601f10611e6d57610100808354040283529160200191611e98565b820191906000526020600020905b815481529060010190602001808311611e7b57829003601f168201915b505050505081526020016001820160009054906101000a900460ff1660ff1660ff16815250509050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604080519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fa35780601f10611f7857610100808354040283529160200191611fa3565b820191906000526020600020905b815481529060010190602001808311611f8657829003601f168201915b505050505081526020016001820160009054906101000a900460ff1660ff1660ff168152505090506000816020015160ff161115611fe8578060200151915050611fee565b60009150505b919050565b6060600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120d95780601f106120ae576101008083540402835291602001916120d9565b820191906000526020600020905b8154815290600101906020018083116120bc57829003601f168201915b50505050509050919050565b60606120ef613c6b565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604080519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121d25780601f106121a7576101008083540402835291602001916121d2565b820191906000526020600020905b8154815290600101906020018083116121b557829003601f168201915b505050505081526020016001820160009054906101000a900460ff1660ff1660ff168152505090508060000151915050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006009600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1660ff1611151561231b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4c6174616d204d616e61676572206f6e6c79000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6123f1848484613790565b6123fc338585612ed9565b600190509392505050565b60006124138383613893565b92915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546869732069732061646d696e206f7074696f6e206f6e6c790000000000000081525060200191505060405180910390fd5b6124e9826138a1565b60019050919050565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561258a5780601f1061255f5761010080835404028352916020019161258a565b820191906000526020600020905b81548152906001019060200180831161256d57829003601f168201915b5050505050905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561265b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546869732069732061646d696e206f7074696f6e206f6e6c790000000000000081525060200191505060405180910390fd5b612666848484613a33565b600190509392505050565b600061276a338461276585606060405190810160405280602581526020017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781526020017f207a65726f000000000000000000000000000000000000000000000000000000815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e179092919063ffffffff16565b612b96565b6001905092915050565b6000612781338484612ed9565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600980549050905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129035780601f106128d857610100808354040283529160200191612903565b820191906000526020600020905b8154815290600101906020018083116128e657829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156129b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54686973206973206d616e61676572206f6e6c7900000000000000000000000081525060200191505060405180910390fd5b612ac9826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b208260065461340090919063ffffffff16565b6006819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612c61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612d2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008383111582901515612ec6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e8b578082015181840152602081019050612e70565b50505050905090810190601f168015612eb85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6040805190810160405280600581526020017f566572203100000000000000000000000000000000000000000000000000000081525060079080519060200190612f24929190613d08565b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612ff0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156130bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905081421015613210576000816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403905083811015151561320e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f596f75722057616c6c6574206861732074696d65206c6f636b0000000000000081525060200191505060405180910390fd5b505b6132bf83606060405190810160405280602681526020017f45524332303a207472616e7366657220616d6f756e742065786365656473206281526020017f616c616e636500000000000000000000000000000000000000000000000000008152506000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e179092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613352836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340090919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b6000808284019050838110151515613480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613555576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f45524332303a206275726e2066726f6d20746865207a65726f2061646472657381526020017f730000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561361a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f41646d696e206f6e6c792063616e206275726e2020383534370000000000000081525060200191505060405180910390fd5b6136c981606060405190810160405280602281526020017f45524332303a206275726e20616d6f756e7420657863656564732062616c616e81526020017f63650000000000000000000000000000000000000000000000000000000000008152506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e179092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372081600654613c2190919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b613798613d88565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060408051908101604052908160008201548152602001600182015481525050905060008160200151111561381e578281600001818152505081816020018181525050613836565b60408051908101604052808481526020018381525090505b80600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015590505050505050565b61389d828261348a565b5050565b6138a9613d88565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604080519081016040529081600082015481526020016001820154815250509050600081602001511115613984576000816000018181525050600081602001818152505080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050505b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60006040518082815260200191505060405180910390a35050565b613ae281606060405190810160405280602681526020017f45524332303a207472616e7366657220616d6f756e742065786365656473206281526020017f616c616e636500000000000000000000000000000000000000000000000000008152506000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e179092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b75816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000613c6383836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e17565b905092915050565b604080519081016040528060608152602001600060ff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613cc957805160ff1916838001178555613cf7565b82800160010185558215613cf7579182015b82811115613cf6578251825591602001919060010190613cdb565b5b509050613d049190613da2565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613d4957805160ff1916838001178555613d77565b82800160010185558215613d77579182015b82811115613d76578251825591602001919060010190613d5b565b5b509050613d849190613da2565b5090565b604080519081016040528060008152602001600081525090565b613dc491905b80821115613dc0576000816000905550600101613da8565b5090565b9056fea165627a7a72305820ee6b3a26db8079735634423e084b1b23fd658c78c633078a5ef66d9f20d3b3410029