solc-0.8.36-doubleshift20 0x43506849d7c04f9138d1a2050bbf3a0c054402dd default

30496 bytes

608060405234801561000f575f5ffd5b506004361061027b575f3560e01c806306fdde031461027f578063095ea7b31461029d57806318160ddd146102cd5780631a895266146102eb57806323b872dd146103075780632ab60045146103375780632fc81e09146103535780633092afd51461036f57806330adf81f1461039f578063313ce567146103bd5780633357162b146103db57806335d99f35146103f75780633644e5151461041557806338a631831461043357806339509351146104515780633f4ba83a1461048157806340c10f191461048b57806342966c68146104bb578063430239b4146104d75780634e44d956146104f357806354fd4d5014610523578063554bab3c146105415780635a049a701461055d5780635c975abb1461057957806370a08231146105975780637ecebe00146105c75780637f2eecc3146105f75780638456cb591461061557806388b7ab631461061f5780638a6db9c31461063b5780638da5cb5b1461066b57806395d89b41146106895780639fd0506d146106a75780639fd5a6cf146106c5578063a0cc6a68146106e1578063a457c2d7146106ff578063a9059cbb1461072f578063aa20e1e41461075f578063aa271e1a1461077b578063ad38bf22146107ab578063b2118a8d146107c7578063b7b72899146107e3578063bd102430146107ff578063cf0929951461081d578063d505accf14610839578063d608ea6414610855578063d916948714610871578063dd62ed3e1461088f578063e3ee160e146108bf578063e5a6b10f146108db578063e94a0102146108f9578063ef55bec614610929578063f2fde38b14610945578063f9f92be414610961578063fe575a871461097d575b5f5ffd5b6102876109ad565b6040516102949190614c1c565b60405180910390f35b6102b760048036038101906102b29190614cda565b610a39565b6040516102c49190614d32565b60405180910390f35b6102d5610a9f565b6040516102e29190614d5a565b60405180910390f35b61030560048036038101906103009190614d73565b610aa8565b005b610321600480360381019061031c9190614d9e565b610b86565b60405161032e9190614d32565b60405180910390f35b610351600480360381019061034c9190614d73565b610e90565b005b61036d60048036038101906103689190614d73565b611012565b005b61038960048036038101906103849190614d73565b611077565b6040516103969190614d32565b60405180910390f35b6103a76111e9565b6040516103b49190614e06565b60405180910390f35b6103c561120f565b6040516103d29190614e3a565b60405180910390f35b6103f560048036038101906103f09190614fa9565b611221565b005b6103ff611561565b60405161040c91906150bd565b60405180910390f35b61041d611586565b60405161042a9190614e06565b60405180910390f35b61043b611594565b60405161044891906150bd565b60405180910390f35b61046b60048036038101906104669190614cda565b6115bc565b6040516104789190614d32565b60405180910390f35b610489611622565b005b6104a560048036038101906104a09190614cda565b6116f9565b6040516104b29190614d32565b60405180910390f35b6104d560048036038101906104d091906150d6565b611b05565b005b6104f160048036038101906104ec91906151b3565b611da8565b005b61050d60048036038101906105089190614cda565b611fbe565b60405161051a9190614d32565b60405180910390f35b61052b61218d565b6040516105389190614c1c565b60405180910390f35b61055b60048036038101906105569190614d73565b6121ca565b005b6105776004803603810190610572919061525b565b61236d565b005b6105816123d1565b60405161058e9190614d32565b60405180910390f35b6105b160048036038101906105ac9190614d73565b6123e4565b6040516105be9190614d5a565b60405180910390f35b6105e160048036038101906105dc9190614d73565b6123f5565b6040516105ee9190614d5a565b60405180910390f35b6105ff61243b565b60405161060c9190614e06565b60405180910390f35b61061d612461565b005b61063960048036038101906106349190615370565b612538565b005b61065560048036038101906106509190614d73565b612636565b6040516106629190614d5a565b60405180910390f35b61067361267c565b60405161068091906150bd565b60405180910390f35b6106916126a3565b60405161069e9190614c1c565b60405180910390f35b6106af61272f565b6040516106bc91906150bd565b60405180910390f35b6106df60048036038101906106da9190615429565b612754565b005b6106e96127b8565b6040516106f69190614e06565b60405180910390f35b61071960048036038101906107149190614cda565b6127de565b6040516107269190614d32565b60405180910390f35b61074960048036038101906107449190614cda565b612844565b6040516107569190614d32565b60405180910390f35b61077960048036038101906107749190614d73565b612940565b005b61079560048036038101906107909190614d73565b612ae3565b6040516107a29190614d32565b60405180910390f35b6107c560048036038101906107c09190614d73565b612b35565b005b6107e160048036038101906107dc91906154f7565b612cd8565b005b6107fd60048036038101906107f89190615547565b612d97565b005b610807612df7565b60405161081491906150bd565b60405180910390f35b61083760048036038101906108329190615370565b612e1c565b005b610853600480360381019061084e91906155b3565b612f1a565b005b61086f600480360381019061086a9190615650565b612f82565b005b61087961306f565b6040516108869190614e06565b60405180910390f35b6108a960048036038101906108a4919061569b565b613095565b6040516108b69190614d5a565b60405180910390f35b6108d960048036038101906108d491906156d9565b613117565b005b6108e3613219565b6040516108f09190614c1c565b60405180910390f35b610913600480360381019061090e919061579d565b6132a5565b6040516109209190614d32565b60405180910390f35b610943600480360381019061093e91906156d9565b613307565b005b61095f600480360381019061095a9190614d73565b613409565b005b61097b60048036038101906109769190614d73565b61356a565b005b61099760048036038101906109929190614d73565b613648565b6040516109a49190614d32565b60405180910390f35b600480546109ba90615808565b80601f01602080910402602001604051908101604052809291908181526020018280546109e690615808565b8015610a315780601f10610a0857610100808354040283529160200191610a31565b820191905f5260205f20905b815481529060010190602001808311610a1457829003601f168201915b505050505081565b5f600160149054906101000a900460ff1615610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8190615882565b60405180910390fd5b610a95338484613659565b6001905092915050565b5f600b54905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e90615910565b60405180910390fd5b610b408161381c565b8073ffffffffffffffffffffffffffffffffffffffff167f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e60405160405180910390a250565b5f600160149054906101000a900460ff1615610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90615882565b60405180910390fd5b33610be181613829565b15610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c189061599e565b60405180910390fd5b84610c2b81613829565b15610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c629061599e565b60405180910390fd5b84610c7581613829565b15610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac9061599e565b60405180910390fd5b600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054851115610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790615a2c565b60405180910390fd5b610d7b878787613876565b610e0685600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a4f90919063ffffffff16565b600a5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600193505050509392505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1590615a94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390615b22565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a60405160405180910390a250565b600160125f9054906101000a900460ff1660ff161461102f575f5ffd5b5f61103930613aa7565b90505f81111561104f5761104e308383613876565b5b61105830613b0f565b600260125f6101000a81548160ff021916908360ff1602179055505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fe90615bb0565b60405180910390fd5b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a260019050919050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c95f1b81565b60065f9054906101000a900460ff1681565b600860149054906101000a900460ff1615611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890615c3e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690615ccc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134490615d5a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290615de8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090615e76565b60405180910390fd5b87600490816114389190616045565b5086600590816114489190616045565b5085600790816114589190616045565b508460065f6101000a81548160ff021916908360ff1602179055508360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061153c81613b1d565b6001600860146101000a81548160ff0219169083151502179055505050505050505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61158f613b5f565b905090565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f600160149054906101000a900460ff161561160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490615882565b60405180910390fd5b611618338484613c34565b6001905092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890616184565b60405180910390fd5b5f600160146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b5f600160149054906101000a900460ff161561174a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174190615882565b60405180910390fd5b600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90616212565b60405180910390fd5b336117dd81613829565b1561181d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118149061599e565b60405180910390fd5b8361182781613829565b15611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e9061599e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc906162a0565b60405180910390fd5b5f8411611917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190e9061632e565b60405180910390fd5b5f600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508085111561199b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611992906163bc565b60405180910390fd5b6119b085600b54613cce90919063ffffffff16565b600b819055506119da866119d5876119c78a613aa7565b613cce90919063ffffffff16565b613d2b565b6119ed8582613a4f90919063ffffffff16565b600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f887604051611a8b9190614d5a565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051611af09190614d5a565b60405180910390a36001935050505092915050565b600160149054906101000a900460ff1615611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c90615882565b60405180910390fd5b600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd590616212565b60405180910390fd5b33611be881613829565b15611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f9061599e565b60405180910390fd5b5f611c3233613aa7565b90505f8311611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d9061644a565b60405180910390fd5b82811015611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb0906164d8565b60405180910390fd5b611cce83600b54613a4f90919063ffffffff16565b600b81905550611cf033611ceb8584613a4f90919063ffffffff16565b613d2b565b3373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca584604051611d369190614d5a565b60405180910390a25f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611d9b9190614d5a565b60405180910390a3505050565b600260125f9054906101000a900460ff1660ff1614611dc5575f5ffd5b818160059182611dd6929190616500565b505f5f90505b84849050811015611f475760035f868684818110611dfd57611dfc6165cd565b5b9050602002016020810190611e129190614d73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8e9061666a565b60405180910390fd5b611ec7858583818110611ead57611eac6165cd565b5b9050602002016020810190611ec29190614d73565b613b0f565b60035f868684818110611edd57611edc6165cd565b5b9050602002016020810190611ef29190614d73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690558080600101915050611ddc565b50611f5130613b0f565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff0219169055600360125f6101000a81548160ff021916908360ff16021790555050505050565b5f600160149054906101000a900460ff161561200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200690615882565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461209e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209590615bb0565b60405180910390fd5b6001600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555081600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff167f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d208360405161217b9190614d5a565b60405180910390a26001905092915050565b60606040518060400160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250905090565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90615a94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd906166f8565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60460405160405180910390a250565b600160149054906101000a900460ff16156123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b490615882565b60405180910390fd5b6123ca8585858585613e1d565b5050505050565b600160149054906101000a900460ff1681565b5f6123ee82613aa7565b9050919050565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de85f1b81565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e790616184565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600160149054906101000a900460ff1615612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f90615882565b60405180910390fd5b8661259281613829565b156125d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c99061599e565b60405180910390fd5b866125dc81613829565b1561261c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126139061599e565b60405180910390fd5b61262b89898989898989613e52565b505050505050505050565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600580546126b090615808565b80601f01602080910402602001604051908101604052809291908181526020018280546126dc90615808565b80156127275780601f106126fe57610100808354040283529160200191612727565b820191905f5260205f20905b81548152906001019060200180831161270a57829003601f168201915b505050505081565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160149054906101000a900460ff16156127a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279b90615882565b60405180910390fd5b6127b18585858585613f49565b5050505050565b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a22675f1b81565b5f600160149054906101000a900460ff161561282f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282690615882565b60405180910390fd5b61283a338484614138565b6001905092915050565b5f600160149054906101000a900460ff1615612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c90615882565b60405180910390fd5b3361289f81613829565b156128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d69061599e565b60405180910390fd5b836128e981613829565b15612929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129209061599e565b60405180910390fd5b612934338686613876565b60019250505092915050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c590615a94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3390615ccc565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e660405160405180910390a250565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90615a94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2890616786565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e60405160405180910390a250565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5e90616814565b60405180910390fd5b612d9282828573ffffffffffffffffffffffffffffffffffffffff166141ec9092919063ffffffff16565b505050565b600160149054906101000a900460ff1615612de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dde90615882565b60405180910390fd5b612df2838383614272565b505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160149054906101000a900460ff1615612e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6390615882565b60405180910390fd5b86612e7681613829565b15612eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ead9061599e565b60405180910390fd5b86612ec081613829565b15612f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef79061599e565b60405180910390fd5b612f0f89898989898989614380565b505050505050505050565b600160149054906101000a900460ff1615612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190615882565b60405180910390fd5b612f7987878787878787614409565b50505050505050565b600860149054906101000a900460ff168015612fae57505f60125f9054906101000a900460ff1660ff16145b612fb6575f5ffd5b818160049182612fc7929190616500565b5061304a82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506040518060400160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250614442565b600f81905550600160125f6101000a81548160ff021916908360ff1602179055505050565b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a15974295f1b81565b5f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600160149054906101000a900460ff1615613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615882565b60405180910390fd5b8861317181613829565b156131b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a89061599e565b60405180910390fd5b886131bb81613829565b156131fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f29061599e565b60405180910390fd5b61320c8b8b8b8b8b8b8b8b8b61445b565b5050505050505050505050565b6007805461322690615808565b80601f016020809104026020016040519081016040528092919081815260200182805461325290615808565b801561329d5780601f106132745761010080835404028352916020019161329d565b820191905f5260205f20905b81548152906001019060200180831161328057829003601f168201915b505050505081565b5f60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f9054906101000a900460ff16905092915050565b600160149054906101000a900460ff1615613357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334e90615882565b60405180910390fd5b8861336181613829565b156133a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133989061599e565b60405180910390fd5b886133ab81613829565b156133eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e29061599e565b60405180910390fd5b6133fc8b8b8b8b8b8b8b8b8b614498565b5050505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161348e90615a94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134fc906168a2565b60405180910390fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516135569291906168c0565b60405180910390a161356781613b1d565b50565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f090615910565b60405180910390fd5b61360281613b0f565b8073ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a250565b5f61365282613829565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136be90616957565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372c906169e5565b60405180910390fd5b80600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161380f9190614d5a565b60405180910390a3505050565b613826815f6144d5565b50565b5f600160ff60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c149050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138db90616a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394990616b01565b60405180910390fd5b61395b83613aa7565b81111561399d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399490616b8f565b60405180910390fd5b6139c1836139bc836139ae87613aa7565b613a4f90919063ffffffff16565b613d2b565b6139e5826139e0836139d286613aa7565b613cce90919063ffffffff16565b613d2b565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a429190614d5a565b60405180910390a3505050565b5f82821115613a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8a90616bf7565b60405180910390fd5b8183613a9f9190616c42565b905092915050565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b613b1a8160016144d5565b50565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f613c2f60048054613b7090615808565b80601f0160208091040260200160405190810160405280929190818152602001828054613b9c90615808565b8015613be75780601f10613bbe57610100808354040283529160200191613be7565b820191905f5260205f20905b815481529060010190602001808311613bca57829003601f168201915b50505050506040518060400160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250613c2a61458e565b61459a565b905090565b613cc98383613cc484600a5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613cce90919063ffffffff16565b613659565b505050565b5f5f8284613cdc9190616c75565b905083811015613d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d1890616cf2565b60405180910390fd5b8091505092915050565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8590616d80565b60405180910390fd5b613d9782613829565b15613dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dce90616e0e565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b613e4b8585848487604051602001613e3793929190616e80565b604051602081830303815290604052614272565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614613ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eb790616f2c565b60405180910390fd5b613ecc87838686614601565b613f2b877fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de85f1b898989898989604051602001613f0f9796959493929190616f4a565b6040516020818303038152906040528051906020012083614695565b613f358783614763565b613f40878787613876565b50505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821480613f775750428210155b613fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fad90617001565b60405180910390fd5b5f61406a613fc2613b5f565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c95f1b88888860115f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154809291906140359061701f565b919050558960405160200161404f96959493929190617066565b6040516020818303038152906040528051906020012061480f565b905073800c32eaa2a6c93cf4cb51794450ed77fbfbb172636ccea6528783856040518463ffffffff1660e01b81526004016140a793929190617135565b602060405180830381865af41580156140c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140e6919061719b565b614125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411c90617210565b60405180910390fd5b614130868686613659565b505050505050565b6141e783836141e2846040518060600160405280602581526020016176fb60259139600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461484f9092919063ffffffff16565b613659565b505050565b61426d8363a9059cbb60e01b848460405160240161420b92919061722e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506148ac565b505050565b61427c8383614971565b6142d3837f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a15974295f1b85856040516020016142b793929190617255565b6040516020818303038152906040528051906020012083614695565b600160105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f6101000a81548160ff021916908315150217905550818373ffffffffffffffffffffffffffffffffffffffff167f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8160405160405180910390a3505050565b61438c87838686614601565b6143eb877f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a22675f1b8989898989896040516020016143cf9796959493929190616f4a565b6040516020818303038152906040528051906020012083614695565b6143f58783614763565b614400878787613876565b50505050505050565b6144398787878786868960405160200161442593929190616e80565b604051602081830303815290604052613f49565b50505050505050565b5f5f46905061445284848361459a565b91505092915050565b61448d89898989898988888b60405160200161447993929190616e80565b604051602081830303815290604052614380565b505050505050505050565b6144ca89898989898988888b6040516020016144b693929190616e80565b604051602081830303815290604052613e52565b505050505050505050565b806144e8576144e382613aa7565b614549565b7f800000000000000000000000000000000000000000000000000000000000000060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054175b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f5f4690508091505090565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8480519060200120848051906020012084306040516020016145e29594939291906172c3565b6040516020818303038152906040528051906020012090509392505050565b814211614643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161463a90617384565b60405180910390fd5b804210614685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161467c90617412565b60405180910390fd5b61468f8484614971565b50505050565b73800c32eaa2a6c93cf4cb51794450ed77fbfbb172636ccea652846146c16146bb613b5f565b8661480f565b846040518463ffffffff1660e01b81526004016146e093929190617135565b602060405180830381865af41580156146fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061471f919061719b565b61475e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016147559061747a565b60405180910390fd5b505050565b600160105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff167f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a560405160405180910390a35050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f838311158290614896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161488d9190614c1c565b60405180910390fd5b5082846148a39190616c42565b90509392505050565b5f61490d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614a0e9092919063ffffffff16565b90505f8151111561496c578080602001905181019061492c919061719b565b61496b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161496290617508565b60405180910390fd5b5b505050565b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205f9054906101000a900460ff1615614a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614a0190617596565b60405180910390fd5b5050565b6060614a1c84845f85614a25565b90509392505050565b606082471015614a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614a6190617624565b60405180910390fd5b614a7385614b35565b614ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614aa99061768c565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff168587604051614ada91906176e4565b5f6040518083038185875af1925050503d805f8114614b14576040519150601f19603f3d011682016040523d82523d5f602084013e614b19565b606091505b5091509150614b29828286614b46565b92505050949350505050565b5f5f823b90505f8111915050919050565b60608315614b5657829050614ba5565b5f83511115614b685782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b9c9190614c1c565b60405180910390fd5b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f614bee82614bac565b614bf88185614bb6565b9350614c08818560208601614bc6565b614c1181614bd4565b840191505092915050565b5f6020820190508181035f830152614c348184614be4565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614c7682614c4d565b9050919050565b614c8681614c6c565b8114614c90575f5ffd5b50565b5f81359050614ca181614c7d565b92915050565b5f819050919050565b614cb981614ca7565b8114614cc3575f5ffd5b50565b5f81359050614cd481614cb0565b92915050565b5f5f60408385031215614cf057614cef614c45565b5b5f614cfd85828601614c93565b9250506020614d0e85828601614cc6565b9150509250929050565b5f8115159050919050565b614d2c81614d18565b82525050565b5f602082019050614d455f830184614d23565b92915050565b614d5481614ca7565b82525050565b5f602082019050614d6d5f830184614d4b565b92915050565b5f60208284031215614d8857614d87614c45565b5b5f614d9584828501614c93565b91505092915050565b5f5f5f60608486031215614db557614db4614c45565b5b5f614dc286828701614c93565b9350506020614dd386828701614c93565b9250506040614de486828701614cc6565b9150509250925092565b5f819050919050565b614e0081614dee565b82525050565b5f602082019050614e195f830184614df7565b92915050565b5f60ff82169050919050565b614e3481614e1f565b82525050565b5f602082019050614e4d5f830184614e2b565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614e9182614bd4565b810181811067ffffffffffffffff82111715614eb057614eaf614e5b565b5b80604052505050565b5f614ec2614c3c565b9050614ece8282614e88565b919050565b5f67ffffffffffffffff821115614eed57614eec614e5b565b5b614ef682614bd4565b9050602081019050919050565b828183375f83830152505050565b5f614f23614f1e84614ed3565b614eb9565b905082815260208101848484011115614f3f57614f3e614e57565b5b614f4a848285614f03565b509392505050565b5f82601f830112614f6657614f65614e53565b5b8135614f76848260208601614f11565b91505092915050565b614f8881614e1f565b8114614f92575f5ffd5b50565b5f81359050614fa381614f7f565b92915050565b5f5f5f5f5f5f5f5f610100898b031215614fc657614fc5614c45565b5b5f89013567ffffffffffffffff811115614fe357614fe2614c49565b5b614fef8b828c01614f52565b985050602089013567ffffffffffffffff8111156150105761500f614c49565b5b61501c8b828c01614f52565b975050604089013567ffffffffffffffff81111561503d5761503c614c49565b5b6150498b828c01614f52565b965050606061505a8b828c01614f95565b955050608061506b8b828c01614c93565b94505060a061507c8b828c01614c93565b93505060c061508d8b828c01614c93565b92505060e061509e8b828c01614c93565b9150509295985092959890939650565b6150b781614c6c565b82525050565b5f6020820190506150d05f8301846150ae565b92915050565b5f602082840312156150eb576150ea614c45565b5b5f6150f884828501614cc6565b91505092915050565b5f5ffd5b5f5ffd5b5f5f83601f84011261511e5761511d614e53565b5b8235905067ffffffffffffffff81111561513b5761513a615101565b5b60208301915083602082028301111561515757615156615105565b5b9250929050565b5f5f83601f84011261517357615172614e53565b5b8235905067ffffffffffffffff8111156151905761518f615101565b5b6020830191508360018202830111156151ac576151ab615105565b5b9250929050565b5f5f5f5f604085870312156151cb576151ca614c45565b5b5f85013567ffffffffffffffff8111156151e8576151e7614c49565b5b6151f487828801615109565b9450945050602085013567ffffffffffffffff81111561521757615216614c49565b5b6152238782880161515e565b925092505092959194509250565b61523a81614dee565b8114615244575f5ffd5b50565b5f8135905061525581615231565b92915050565b5f5f5f5f5f60a0868803121561527457615273614c45565b5b5f61528188828901614c93565b955050602061529288828901615247565b94505060406152a388828901614f95565b93505060606152b488828901615247565b92505060806152c588828901615247565b9150509295509295909350565b5f67ffffffffffffffff8211156152ec576152eb614e5b565b5b6152f582614bd4565b9050602081019050919050565b5f61531461530f846152d2565b614eb9565b9050828152602081018484840111156153305761532f614e57565b5b61533b848285614f03565b509392505050565b5f82601f83011261535757615356614e53565b5b8135615367848260208601615302565b91505092915050565b5f5f5f5f5f5f5f60e0888a03121561538b5761538a614c45565b5b5f6153988a828b01614c93565b97505060206153a98a828b01614c93565b96505060406153ba8a828b01614cc6565b95505060606153cb8a828b01614cc6565b94505060806153dc8a828b01614cc6565b93505060a06153ed8a828b01615247565b92505060c088013567ffffffffffffffff81111561540e5761540d614c49565b5b61541a8a828b01615343565b91505092959891949750929550565b5f5f5f5f5f60a0868803121561544257615441614c45565b5b5f61544f88828901614c93565b955050602061546088828901614c93565b945050604061547188828901614cc6565b935050606061548288828901614cc6565b925050608086013567ffffffffffffffff8111156154a3576154a2614c49565b5b6154af88828901615343565b9150509295509295909350565b5f6154c682614c6c565b9050919050565b6154d6816154bc565b81146154e0575f5ffd5b50565b5f813590506154f1816154cd565b92915050565b5f5f5f6060848603121561550e5761550d614c45565b5b5f61551b868287016154e3565b935050602061552c86828701614c93565b925050604061553d86828701614cc6565b9150509250925092565b5f5f5f6060848603121561555e5761555d614c45565b5b5f61556b86828701614c93565b935050602061557c86828701615247565b925050604084013567ffffffffffffffff81111561559d5761559c614c49565b5b6155a986828701615343565b9150509250925092565b5f5f5f5f5f5f5f60e0888a0312156155ce576155cd614c45565b5b5f6155db8a828b01614c93565b97505060206155ec8a828b01614c93565b96505060406155fd8a828b01614cc6565b955050606061560e8a828b01614cc6565b945050608061561f8a828b01614f95565b93505060a06156308a828b01615247565b92505060c06156418a828b01615247565b91505092959891949750929550565b5f5f6020838503121561566657615665614c45565b5b5f83013567ffffffffffffffff81111561568357615682614c49565b5b61568f8582860161515e565b92509250509250929050565b5f5f604083850312156156b1576156b0614c45565b5b5f6156be85828601614c93565b92505060206156cf85828601614c93565b9150509250929050565b5f5f5f5f5f5f5f5f5f6101208a8c0312156156f7576156f6614c45565b5b5f6157048c828d01614c93565b99505060206157158c828d01614c93565b98505060406157268c828d01614cc6565b97505060606157378c828d01614cc6565b96505060806157488c828d01614cc6565b95505060a06157598c828d01615247565b94505060c061576a8c828d01614f95565b93505060e061577b8c828d01615247565b92505061010061578d8c828d01615247565b9150509295985092959850929598565b5f5f604083850312156157b3576157b2614c45565b5b5f6157c085828601614c93565b92505060206157d185828601615247565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061581f57607f821691505b602082108103615832576158316157db565b5b50919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f61586c601083614bb6565b915061587782615838565b602082019050919050565b5f6020820190508181035f83015261589981615860565b9050919050565b7f426c61636b6c69737461626c653a2063616c6c6572206973206e6f74207468655f8201527f20626c61636b6c69737465720000000000000000000000000000000000000000602082015250565b5f6158fa602c83614bb6565b9150615905826158a0565b604082019050919050565b5f6020820190508181035f830152615927816158ee565b9050919050565b7f426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c5f8201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b5f615988602583614bb6565b91506159938261592e565b604082019050919050565b5f6020820190508181035f8301526159b58161597c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f615a16602883614bb6565b9150615a21826159bc565b604082019050919050565b5f6020820190508181035f830152615a4381615a0a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f615a7e602083614bb6565b9150615a8982615a4a565b602082019050919050565b5f6020820190508181035f830152615aab81615a72565b9050919050565b7f526573637561626c653a206e6577207265736375657220697320746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f615b0c602a83614bb6565b9150615b1782615ab2565b604082019050919050565b5f6020820190508181035f830152615b3981615b00565b9050919050565b7f46696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61735f8201527f7465724d696e7465720000000000000000000000000000000000000000000000602082015250565b5f615b9a602983614bb6565b9150615ba582615b40565b604082019050919050565b5f6020820190508181035f830152615bc781615b8e565b9050919050565b7f46696174546f6b656e3a20636f6e747261637420697320616c726561647920695f8201527f6e697469616c697a656400000000000000000000000000000000000000000000602082015250565b5f615c28602a83614bb6565b9150615c3382615bce565b604082019050919050565b5f6020820190508181035f830152615c5581615c1c565b9050919050565b7f46696174546f6b656e3a206e6577206d61737465724d696e74657220697320745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f615cb6602f83614bb6565b9150615cc182615c5c565b604082019050919050565b5f6020820190508181035f830152615ce381615caa565b9050919050565b7f46696174546f6b656e3a206e65772070617573657220697320746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f615d44602983614bb6565b9150615d4f82615cea565b604082019050919050565b5f6020820190508181035f830152615d7181615d38565b9050919050565b7f46696174546f6b656e3a206e657720626c61636b6c69737465722069732074685f8201527f65207a65726f2061646472657373000000000000000000000000000000000000602082015250565b5f615dd2602e83614bb6565b9150615ddd82615d78565b604082019050919050565b5f6020820190508181035f830152615dff81615dc6565b9050919050565b7f46696174546f6b656e3a206e6577206f776e657220697320746865207a65726f5f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f615e60602883614bb6565b9150615e6b82615e06565b604082019050919050565b5f6020820190508181035f830152615e8d81615e54565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302615ef07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615eb5565b615efa8683615eb5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f615f35615f30615f2b84614ca7565b615f12565b614ca7565b9050919050565b5f819050919050565b615f4e83615f1b565b615f62615f5a82615f3c565b848454615ec1565b825550505050565b5f5f905090565b615f79615f6a565b615f84818484615f45565b505050565b5f5b82811015615faa57615f9f5f828401615f71565b600181019050615f8b565b505050565b601f821115615ffd5782821115615ffc57615fc981615e94565b615fd283615ea6565b615fdb85615ea6565b6020861015615fe8575f90505b808301615ff782840382615f89565b505050505b5b505050565b5f82821c905092915050565b5f61601d5f1984600802616002565b1980831691505092915050565b5f616035838361600e565b9150826002028217905092915050565b61604e82614bac565b67ffffffffffffffff81111561606757616066614e5b565b5b6160718254615808565b61607c828285615faf565b5f60209050601f8311600181146160ad575f841561609b578287015190505b6160a5858261602a565b86555061610c565b601f1984166160bb86615e94565b5f5b828110156160e2578489015182556001820191506020850194506020810190506160bd565b868310156160ff57848901516160fb601f89168261600e565b8355505b6001600288020188555050505b505050505050565b7f5061757361626c653a2063616c6c6572206973206e6f742074686520706175735f8201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b5f61616e602283614bb6565b915061617982616114565b604082019050919050565b5f6020820190508181035f83015261619b81616162565b9050919050565b7f46696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f6161fc602183614bb6565b9150616207826161a2565b604082019050919050565b5f6020820190508181035f830152616229816161f0565b9050919050565b7f46696174546f6b656e3a206d696e7420746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61628a602383614bb6565b915061629582616230565b604082019050919050565b5f6020820190508181035f8301526162b78161627e565b9050919050565b7f46696174546f6b656e3a206d696e7420616d6f756e74206e6f742067726561745f8201527f6572207468616e20300000000000000000000000000000000000000000000000602082015250565b5f616318602983614bb6565b9150616323826162be565b604082019050919050565b5f6020820190508181035f8301526163458161630c565b9050919050565b7f46696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d5f8201527f696e746572416c6c6f77616e6365000000000000000000000000000000000000602082015250565b5f6163a6602e83614bb6565b91506163b18261634c565b604082019050919050565b5f6020820190508181035f8301526163d38161639a565b9050919050565b7f46696174546f6b656e3a206275726e20616d6f756e74206e6f742067726561745f8201527f6572207468616e20300000000000000000000000000000000000000000000000602082015250565b5f616434602983614bb6565b915061643f826163da565b604082019050919050565b5f6020820190508181035f83015261646181616428565b9050919050565b7f46696174546f6b656e3a206275726e20616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6164c2602683614bb6565b91506164cd82616468565b604082019050919050565b5f6020820190508181035f8301526164ef816164b6565b9050919050565b5f82905092915050565b61650a83836164f6565b67ffffffffffffffff81111561652357616522614e5b565b5b61652d8254615808565b616538828285615faf565b5f601f831160018114616565575f8415616553578287013590505b61655d858261602a565b8655506165c4565b601f19841661657386615e94565b5f5b8281101561659a57848901358255600182019150602085019450602081019050616575565b868310156165b757848901356165b3601f89168261600e565b8355505b6001600288020188555050505b50505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f46696174546f6b656e56325f323a20426c61636b6c697374696e6720707265765f8201527f696f75736c7920756e626c61636b6c6973746564206163636f756e7421000000602082015250565b5f616654603d83614bb6565b915061665f826165fa565b604082019050919050565b5f6020820190508181035f83015261668181616648565b9050919050565b7f5061757361626c653a206e65772070617573657220697320746865207a65726f5f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f6166e2602883614bb6565b91506166ed82616688565b604082019050919050565b5f6020820190508181035f83015261670f816166d6565b9050919050565b7f426c61636b6c69737461626c653a206e657720626c61636b6c697374657220695f8201527f7320746865207a65726f20616464726573730000000000000000000000000000602082015250565b5f616770603283614bb6565b915061677b82616716565b604082019050919050565b5f6020820190508181035f83015261679d81616764565b9050919050565b7f526573637561626c653a2063616c6c6572206973206e6f7420746865207265735f8201527f6375657200000000000000000000000000000000000000000000000000000000602082015250565b5f6167fe602483614bb6565b9150616809826167a4565b604082019050919050565b5f6020820190508181035f83015261682b816167f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61688c602683614bb6565b915061689782616832565b604082019050919050565b5f6020820190508181035f8301526168b981616880565b9050919050565b5f6040820190506168d35f8301856150ae565b6168e060208301846150ae565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f616941602483614bb6565b915061694c826168e7565b604082019050919050565b5f6020820190508181035f83015261696e81616935565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6169cf602283614bb6565b91506169da82616975565b604082019050919050565b5f6020820190508181035f8301526169fc816169c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f616a5d602583614bb6565b9150616a6882616a03565b604082019050919050565b5f6020820190508181035f830152616a8a81616a51565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f616aeb602383614bb6565b9150616af682616a91565b604082019050919050565b5f6020820190508181035f830152616b1881616adf565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f616b79602683614bb6565b9150616b8482616b1f565b604082019050919050565b5f6020820190508181035f830152616ba681616b6d565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f616be1601e83614bb6565b9150616bec82616bad565b602082019050919050565b5f6020820190508181035f830152616c0e81616bd5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f616c4c82614ca7565b9150616c5783614ca7565b9250828203905081811115616c6f57616c6e616c15565b5b92915050565b5f616c7f82614ca7565b9150616c8a83614ca7565b9250828201905080821115616ca257616ca1616c15565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f616cdc601b83614bb6565b9150616ce782616ca8565b602082019050919050565b5f6020820190508181035f830152616d0981616cd0565b9050919050565b7f46696174546f6b656e56325f323a2042616c616e6365206578636565647320285f8201527f325e323535202d20312900000000000000000000000000000000000000000000602082015250565b5f616d6a602a83614bb6565b9150616d7582616d10565b604082019050919050565b5f6020820190508181035f830152616d9781616d5e565b9050919050565b7f46696174546f6b656e56325f323a204163636f756e7420697320626c61636b6c5f8201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b5f616df8602583614bb6565b9150616e0382616d9e565b604082019050919050565b5f6020820190508181035f830152616e2581616dec565b9050919050565b5f819050919050565b616e46616e4182614dee565b616e2c565b82525050565b5f8160f81b9050919050565b5f616e6282616e4c565b9050919050565b616e7a616e7582614e1f565b616e58565b82525050565b5f616e8b8286616e35565b602082019150616e9b8285616e35565b602082019150616eab8284616e69565b600182019150819050949350505050565b7f46696174546f6b656e56323a2063616c6c6572206d75737420626520746865205f8201527f7061796565000000000000000000000000000000000000000000000000000000602082015250565b5f616f16602583614bb6565b9150616f2182616ebc565b604082019050919050565b5f6020820190508181035f830152616f4381616f0a565b9050919050565b5f60e082019050616f5d5f83018a614df7565b616f6a60208301896150ae565b616f7760408301886150ae565b616f846060830187614d4b565b616f916080830186614d4b565b616f9e60a0830185614d4b565b616fab60c0830184614df7565b98975050505050505050565b7f46696174546f6b656e56323a207065726d6974206973206578706972656400005f82015250565b5f616feb601e83614bb6565b9150616ff682616fb7565b602082019050919050565b5f6020820190508181035f83015261701881616fdf565b9050919050565b5f61702982614ca7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361705b5761705a616c15565b5b600182019050919050565b5f60c0820190506170795f830189614df7565b61708660208301886150ae565b61709360408301876150ae565b6170a06060830186614d4b565b6170ad6080830185614d4b565b6170ba60a0830184614d4b565b979650505050505050565b6170ce81614c6c565b82525050565b6170dd81614dee565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f617107826170e3565b61711181856170ed565b9350617121818560208601614bc6565b61712a81614bd4565b840191505092915050565b5f6060820190506171485f8301866170c5565b61715560208301856170d4565b818103604083015261716781846170fd565b9050949350505050565b61717a81614d18565b8114617184575f5ffd5b50565b5f8151905061719581617171565b92915050565b5f602082840312156171b0576171af614c45565b5b5f6171bd84828501617187565b91505092915050565b7f454950323631323a20696e76616c6964207369676e61747572650000000000005f82015250565b5f6171fa601a83614bb6565b9150617205826171c6565b602082019050919050565b5f6020820190508181035f830152617227816171ee565b9050919050565b5f6040820190506172415f8301856150ae565b61724e6020830184614d4b565b9392505050565b5f6060820190506172685f830186614df7565b61727560208301856150ae565b6172826040830184614df7565b949350505050565b5f819050919050565b5f6172ad6172a86172a38461728a565b615f12565b614ca7565b9050919050565b6172bd81617293565b82525050565b5f60a0820190506172d65f8301886172b4565b6172e36020830187614df7565b6172f06040830186614df7565b6172fd6060830185614d4b565b61730a60808301846150ae565b9695505050505050565b7f46696174546f6b656e56323a20617574686f72697a6174696f6e206973206e6f5f8201527f74207965742076616c6964000000000000000000000000000000000000000000602082015250565b5f61736e602b83614bb6565b915061737982617314565b604082019050919050565b5f6020820190508181035f83015261739b81617362565b9050919050565b7f46696174546f6b656e56323a20617574686f72697a6174696f6e2069732065785f8201527f7069726564000000000000000000000000000000000000000000000000000000602082015250565b5f6173fc602583614bb6565b9150617407826173a2565b604082019050919050565b5f6020820190508181035f830152617429816173f0565b9050919050565b7f46696174546f6b656e56323a20696e76616c6964207369676e617475726500005f82015250565b5f617464601e83614bb6565b915061746f82617430565b602082019050919050565b5f6020820190508181035f83015261749181617458565b9050919050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f6174f2602a83614bb6565b91506174fd82617498565b604082019050919050565b5f6020820190508181035f83015261751f816174e6565b9050919050565b7f46696174546f6b656e56323a20617574686f72697a6174696f6e2069732075735f8201527f6564206f722063616e63656c6564000000000000000000000000000000000000602082015250565b5f617580602e83614bb6565b915061758b82617526565b604082019050919050565b5f6020820190508181035f8301526175ad81617574565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f61760e602683614bb6565b9150617619826175b4565b604082019050919050565b5f6020820190508181035f83015261763b81617602565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f617676601d83614bb6565b915061768182617642565b602082019050919050565b5f6020820190508181035f8301526176a38161766a565b9050919050565b5f81905092915050565b5f6176be826170e3565b6176c881856176aa565b93506176d8818560208601614bc6565b80840191505092915050565b5f6176ef82846176b4565b91508190509291505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f