0x60808060405234601557610c7c908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146107385750806330d39a221461066557806352ef6b2c146105bd57806362bbd81e146104d05780637a070c2d1461046e5780637a0ed6271461038d578063941d4ea91461021a578063adfca15e146101975763dbdc386a1461007f575f80fd5b346101935760203660031901126101935760043567ffffffffffffffff8111610193576100b0903690600401610794565b906100ba826108f1565b916100c860405193846108bb565b8083526100d4816108f1565b602084019290601f19013684375f5b828110610130578385604051918291602083019060208452518091526040830191905f5b818110610115575050500390f35b82511515845285945060209384019390920191600101610107565b6001906001600160e01b031961014f61014a838787610909565b61092d565b165f527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f60205260ff60405f2054166101888288610942565b9015159052016100e3565b5f80fd5b34610193576020366003190112610193576004356001600160a01b0381168103610193576101c76101cc916109d8565b610a10565b6040518091602082016020835281518091526020604084019201905f5b8181106101f7575050500390f35b82516001600160e01b0319168452859450602093840193909201916001016101e9565b346101935760203660031901126101935760043567ffffffffffffffff81116101935761024b903690600401610794565b90610255826108f1565b9161026360405193846108bb565b808352601f19610272826108f1565b015f5b81811061037c575050905f5b8281106102ef57836040518091602082016020835281518091526040830190602060408260051b8601019301915f905b8282106102c057505050500390f35b919360019193955060206102df8192603f198a82030186528851610807565b96019201920185949391926102b1565b6103106101c761030b610306848787989997610909565b6109c4565b6109d8565b9261031b8451610c14565b6103258385610942565b526103308284610942565b505f5b845181101561036f576001906001600160e01b03196103528288610942565b5116610368826103628789610942565b51610942565b5201610333565b5091939250600101610281565b806060602080938801015201610275565b34610193575f366003190112610193577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e546103c881610956565b905f5b8181101561045c577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e5f527fb5c239a29faf02594141bbc5e6982a9b85ba2b4d59c3ed3baaf4cb8e5e11cbef8101546001919061043d906001600160a01b0316806104368488610942565b51526109d8565b610454602061044c8488610942565b510191610a10565b9052016103cb565b6040518061046a8582610844565b0390f35b346101935760203660031901126101935760043563ffffffff60e01b8116809103610193575f527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d602052602060018060a01b0360405f205416604051908152f35b346101935760203660031901126101935760043567ffffffffffffffff811161019357610501903690600401610794565b9061050b82610956565b905f5b838110610523576040518061046a8582610844565b6105556101c76105396103068488879897610909565b6105438486610942565b516001600160a01b03821690526109d8565b926105608451610c14565b602061056c8486610942565b5101525f5b84518110156105b1576001906001600160e01b03196105908288610942565b51166105aa8260206105a2888a610942565b510151610942565b5201610571565b5091925060010161050e565b34610193575f366003190112610193576040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e80548083525f91825260208301917fb5c239a29faf02594141bbc5e6982a9b85ba2b4d59c3ed3baaf4cb8e5e11cbef91905b8181106106465761046a8561063a818703826108bb565b604051918291826107c5565b82546001600160a01b0316845260209093019260019283019201610623565b346101935760203660031901126101935760043567ffffffffffffffff811161019357610696903690600401610794565b61069f816108f1565b916106ad60405193846108bb565b818352601f196106bc836108f1565b013660208501375f5b8281106106da576040518061046a86826107c5565b6001906001600160e01b03196106f461014a838787610909565b165f527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d602052818060a01b0360405f2054166107318287610942565b52016106c5565b34610193576020366003190112610193576004359063ffffffff60e01b8216809203610193576020915f527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f825260ff60405f20541615158152f35b9181601f840112156101935782359167ffffffffffffffff8311610193576020808501948460051b01011161019357565b60206040818301928281528451809452019201905f5b8181106107e85750505090565b82516001600160a01b03168452602093840193909201916001016107db565b90602080835192838152019201905f5b8181106108245750505090565b82516001600160e01b031916845260209384019390920191600101610817565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061087657505050505090565b90919293946020806108ac600193603f198682030187526040838b51878060a01b03815116845201519181858201520190610807565b97019301930191939290610867565b90601f8019910116810190811067ffffffffffffffff8211176108dd57604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116108dd5760051b60200190565b91908110156109195760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160e01b0319811681036101935790565b80518210156109195760209160051b010190565b90610960826108f1565b61096d60405191826108bb565b828152809261097e601f19916108f1565b015f5b81811061098d57505050565b60405190604082019180831067ffffffffffffffff8411176108dd576020926040525f815260608382015282828601015201610981565b356001600160a01b03811681036101935790565b6001600160a01b03165f9081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13206020526040902090565b90604051918281549182825260208201905f5260205f20925f905b806007830110610b6f57610a81945491818110610b50575b818110610b31575b818110610b12575b818110610af3575b818110610ad4575b818110610ab5575b818110610a98575b10610a83575b5003836108bb565b565b6001600160e01b03191681526020015f610a79565b602083811b6001600160e01b031916855290930192600101610a73565b604083901b6001600160e01b0319168452602090930192600101610a6b565b606083901b6001600160e01b0319168452602090930192600101610a63565b608083901b6001600160e01b0319168452602090930192600101610a5b565b60a083901b6001600160e01b0319168452602090930192600101610a53565b60c083901b6001600160e01b0319168452602090930192600101610a4b565b60e083901b6001600160e01b0319168452602090930192600101610a43565b916008919350610100600191865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920185929391610a2b565b90610c1e826108f1565b610c2b60405191826108bb565b8281528092610c3c601f19916108f1565b019060203691013756fea2646970667358221220bc3820d15e6c368709b9f034897371dad31b3acbde51e97740204939523a58b864736f6c634300081c0033