config.pb.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. package router
  2. import proto "github.com/golang/protobuf/proto"
  3. import fmt "fmt"
  4. import math "math"
  5. import net "v2ray.com/core/common/net"
  6. // Reference imports to suppress errors if they are not otherwise used.
  7. var _ = proto.Marshal
  8. var _ = fmt.Errorf
  9. var _ = math.Inf
  10. // This is a compile-time assertion to ensure that this generated file
  11. // is compatible with the proto package it is being compiled against.
  12. // A compilation error at this line likely means your copy of the
  13. // proto package needs to be updated.
  14. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
  15. // Type of domain value.
  16. type Domain_Type int32
  17. const (
  18. // The value is used as is.
  19. Domain_Plain Domain_Type = 0
  20. // The value is used as a regular expression.
  21. Domain_Regex Domain_Type = 1
  22. // The value is a domain.
  23. Domain_Domain Domain_Type = 2
  24. )
  25. var Domain_Type_name = map[int32]string{
  26. 0: "Plain",
  27. 1: "Regex",
  28. 2: "Domain",
  29. }
  30. var Domain_Type_value = map[string]int32{
  31. "Plain": 0,
  32. "Regex": 1,
  33. "Domain": 2,
  34. }
  35. func (x Domain_Type) String() string {
  36. return proto.EnumName(Domain_Type_name, int32(x))
  37. }
  38. func (Domain_Type) EnumDescriptor() ([]byte, []int) {
  39. return fileDescriptor_config_38b171a67be39168, []int{0, 0}
  40. }
  41. type Config_DomainStrategy int32
  42. const (
  43. // Use domain as is.
  44. Config_AsIs Config_DomainStrategy = 0
  45. // Always resolve IP for domains.
  46. Config_UseIp Config_DomainStrategy = 1
  47. // Resolve to IP if the domain doesn't match any rules.
  48. Config_IpIfNonMatch Config_DomainStrategy = 2
  49. // Resolve to IP if any rule requires IP matching.
  50. Config_IpOnDemand Config_DomainStrategy = 3
  51. )
  52. var Config_DomainStrategy_name = map[int32]string{
  53. 0: "AsIs",
  54. 1: "UseIp",
  55. 2: "IpIfNonMatch",
  56. 3: "IpOnDemand",
  57. }
  58. var Config_DomainStrategy_value = map[string]int32{
  59. "AsIs": 0,
  60. "UseIp": 1,
  61. "IpIfNonMatch": 2,
  62. "IpOnDemand": 3,
  63. }
  64. func (x Config_DomainStrategy) String() string {
  65. return proto.EnumName(Config_DomainStrategy_name, int32(x))
  66. }
  67. func (Config_DomainStrategy) EnumDescriptor() ([]byte, []int) {
  68. return fileDescriptor_config_38b171a67be39168, []int{7, 0}
  69. }
  70. // Domain for routing decision.
  71. type Domain struct {
  72. // Domain matching type.
  73. Type Domain_Type `protobuf:"varint,1,opt,name=type,proto3,enum=v2ray.core.app.router.Domain_Type" json:"type,omitempty"`
  74. // Domain value.
  75. Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
  76. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  77. XXX_unrecognized []byte `json:"-"`
  78. XXX_sizecache int32 `json:"-"`
  79. }
  80. func (m *Domain) Reset() { *m = Domain{} }
  81. func (m *Domain) String() string { return proto.CompactTextString(m) }
  82. func (*Domain) ProtoMessage() {}
  83. func (*Domain) Descriptor() ([]byte, []int) {
  84. return fileDescriptor_config_38b171a67be39168, []int{0}
  85. }
  86. func (m *Domain) XXX_Unmarshal(b []byte) error {
  87. return xxx_messageInfo_Domain.Unmarshal(m, b)
  88. }
  89. func (m *Domain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  90. return xxx_messageInfo_Domain.Marshal(b, m, deterministic)
  91. }
  92. func (dst *Domain) XXX_Merge(src proto.Message) {
  93. xxx_messageInfo_Domain.Merge(dst, src)
  94. }
  95. func (m *Domain) XXX_Size() int {
  96. return xxx_messageInfo_Domain.Size(m)
  97. }
  98. func (m *Domain) XXX_DiscardUnknown() {
  99. xxx_messageInfo_Domain.DiscardUnknown(m)
  100. }
  101. var xxx_messageInfo_Domain proto.InternalMessageInfo
  102. func (m *Domain) GetType() Domain_Type {
  103. if m != nil {
  104. return m.Type
  105. }
  106. return Domain_Plain
  107. }
  108. func (m *Domain) GetValue() string {
  109. if m != nil {
  110. return m.Value
  111. }
  112. return ""
  113. }
  114. // IP for routing decision, in CIDR form.
  115. type CIDR struct {
  116. // IP address, should be either 4 or 16 bytes.
  117. Ip []byte `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"`
  118. // Number of leading ones in the network mask.
  119. Prefix uint32 `protobuf:"varint,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
  120. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  121. XXX_unrecognized []byte `json:"-"`
  122. XXX_sizecache int32 `json:"-"`
  123. }
  124. func (m *CIDR) Reset() { *m = CIDR{} }
  125. func (m *CIDR) String() string { return proto.CompactTextString(m) }
  126. func (*CIDR) ProtoMessage() {}
  127. func (*CIDR) Descriptor() ([]byte, []int) {
  128. return fileDescriptor_config_38b171a67be39168, []int{1}
  129. }
  130. func (m *CIDR) XXX_Unmarshal(b []byte) error {
  131. return xxx_messageInfo_CIDR.Unmarshal(m, b)
  132. }
  133. func (m *CIDR) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  134. return xxx_messageInfo_CIDR.Marshal(b, m, deterministic)
  135. }
  136. func (dst *CIDR) XXX_Merge(src proto.Message) {
  137. xxx_messageInfo_CIDR.Merge(dst, src)
  138. }
  139. func (m *CIDR) XXX_Size() int {
  140. return xxx_messageInfo_CIDR.Size(m)
  141. }
  142. func (m *CIDR) XXX_DiscardUnknown() {
  143. xxx_messageInfo_CIDR.DiscardUnknown(m)
  144. }
  145. var xxx_messageInfo_CIDR proto.InternalMessageInfo
  146. func (m *CIDR) GetIp() []byte {
  147. if m != nil {
  148. return m.Ip
  149. }
  150. return nil
  151. }
  152. func (m *CIDR) GetPrefix() uint32 {
  153. if m != nil {
  154. return m.Prefix
  155. }
  156. return 0
  157. }
  158. type GeoIP struct {
  159. CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
  160. Cidr []*CIDR `protobuf:"bytes,2,rep,name=cidr,proto3" json:"cidr,omitempty"`
  161. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  162. XXX_unrecognized []byte `json:"-"`
  163. XXX_sizecache int32 `json:"-"`
  164. }
  165. func (m *GeoIP) Reset() { *m = GeoIP{} }
  166. func (m *GeoIP) String() string { return proto.CompactTextString(m) }
  167. func (*GeoIP) ProtoMessage() {}
  168. func (*GeoIP) Descriptor() ([]byte, []int) {
  169. return fileDescriptor_config_38b171a67be39168, []int{2}
  170. }
  171. func (m *GeoIP) XXX_Unmarshal(b []byte) error {
  172. return xxx_messageInfo_GeoIP.Unmarshal(m, b)
  173. }
  174. func (m *GeoIP) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  175. return xxx_messageInfo_GeoIP.Marshal(b, m, deterministic)
  176. }
  177. func (dst *GeoIP) XXX_Merge(src proto.Message) {
  178. xxx_messageInfo_GeoIP.Merge(dst, src)
  179. }
  180. func (m *GeoIP) XXX_Size() int {
  181. return xxx_messageInfo_GeoIP.Size(m)
  182. }
  183. func (m *GeoIP) XXX_DiscardUnknown() {
  184. xxx_messageInfo_GeoIP.DiscardUnknown(m)
  185. }
  186. var xxx_messageInfo_GeoIP proto.InternalMessageInfo
  187. func (m *GeoIP) GetCountryCode() string {
  188. if m != nil {
  189. return m.CountryCode
  190. }
  191. return ""
  192. }
  193. func (m *GeoIP) GetCidr() []*CIDR {
  194. if m != nil {
  195. return m.Cidr
  196. }
  197. return nil
  198. }
  199. type GeoIPList struct {
  200. Entry []*GeoIP `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
  201. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  202. XXX_unrecognized []byte `json:"-"`
  203. XXX_sizecache int32 `json:"-"`
  204. }
  205. func (m *GeoIPList) Reset() { *m = GeoIPList{} }
  206. func (m *GeoIPList) String() string { return proto.CompactTextString(m) }
  207. func (*GeoIPList) ProtoMessage() {}
  208. func (*GeoIPList) Descriptor() ([]byte, []int) {
  209. return fileDescriptor_config_38b171a67be39168, []int{3}
  210. }
  211. func (m *GeoIPList) XXX_Unmarshal(b []byte) error {
  212. return xxx_messageInfo_GeoIPList.Unmarshal(m, b)
  213. }
  214. func (m *GeoIPList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  215. return xxx_messageInfo_GeoIPList.Marshal(b, m, deterministic)
  216. }
  217. func (dst *GeoIPList) XXX_Merge(src proto.Message) {
  218. xxx_messageInfo_GeoIPList.Merge(dst, src)
  219. }
  220. func (m *GeoIPList) XXX_Size() int {
  221. return xxx_messageInfo_GeoIPList.Size(m)
  222. }
  223. func (m *GeoIPList) XXX_DiscardUnknown() {
  224. xxx_messageInfo_GeoIPList.DiscardUnknown(m)
  225. }
  226. var xxx_messageInfo_GeoIPList proto.InternalMessageInfo
  227. func (m *GeoIPList) GetEntry() []*GeoIP {
  228. if m != nil {
  229. return m.Entry
  230. }
  231. return nil
  232. }
  233. type GeoSite struct {
  234. CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
  235. Domain []*Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"`
  236. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  237. XXX_unrecognized []byte `json:"-"`
  238. XXX_sizecache int32 `json:"-"`
  239. }
  240. func (m *GeoSite) Reset() { *m = GeoSite{} }
  241. func (m *GeoSite) String() string { return proto.CompactTextString(m) }
  242. func (*GeoSite) ProtoMessage() {}
  243. func (*GeoSite) Descriptor() ([]byte, []int) {
  244. return fileDescriptor_config_38b171a67be39168, []int{4}
  245. }
  246. func (m *GeoSite) XXX_Unmarshal(b []byte) error {
  247. return xxx_messageInfo_GeoSite.Unmarshal(m, b)
  248. }
  249. func (m *GeoSite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  250. return xxx_messageInfo_GeoSite.Marshal(b, m, deterministic)
  251. }
  252. func (dst *GeoSite) XXX_Merge(src proto.Message) {
  253. xxx_messageInfo_GeoSite.Merge(dst, src)
  254. }
  255. func (m *GeoSite) XXX_Size() int {
  256. return xxx_messageInfo_GeoSite.Size(m)
  257. }
  258. func (m *GeoSite) XXX_DiscardUnknown() {
  259. xxx_messageInfo_GeoSite.DiscardUnknown(m)
  260. }
  261. var xxx_messageInfo_GeoSite proto.InternalMessageInfo
  262. func (m *GeoSite) GetCountryCode() string {
  263. if m != nil {
  264. return m.CountryCode
  265. }
  266. return ""
  267. }
  268. func (m *GeoSite) GetDomain() []*Domain {
  269. if m != nil {
  270. return m.Domain
  271. }
  272. return nil
  273. }
  274. type GeoSiteList struct {
  275. Entry []*GeoSite `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
  276. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  277. XXX_unrecognized []byte `json:"-"`
  278. XXX_sizecache int32 `json:"-"`
  279. }
  280. func (m *GeoSiteList) Reset() { *m = GeoSiteList{} }
  281. func (m *GeoSiteList) String() string { return proto.CompactTextString(m) }
  282. func (*GeoSiteList) ProtoMessage() {}
  283. func (*GeoSiteList) Descriptor() ([]byte, []int) {
  284. return fileDescriptor_config_38b171a67be39168, []int{5}
  285. }
  286. func (m *GeoSiteList) XXX_Unmarshal(b []byte) error {
  287. return xxx_messageInfo_GeoSiteList.Unmarshal(m, b)
  288. }
  289. func (m *GeoSiteList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  290. return xxx_messageInfo_GeoSiteList.Marshal(b, m, deterministic)
  291. }
  292. func (dst *GeoSiteList) XXX_Merge(src proto.Message) {
  293. xxx_messageInfo_GeoSiteList.Merge(dst, src)
  294. }
  295. func (m *GeoSiteList) XXX_Size() int {
  296. return xxx_messageInfo_GeoSiteList.Size(m)
  297. }
  298. func (m *GeoSiteList) XXX_DiscardUnknown() {
  299. xxx_messageInfo_GeoSiteList.DiscardUnknown(m)
  300. }
  301. var xxx_messageInfo_GeoSiteList proto.InternalMessageInfo
  302. func (m *GeoSiteList) GetEntry() []*GeoSite {
  303. if m != nil {
  304. return m.Entry
  305. }
  306. return nil
  307. }
  308. type RoutingRule struct {
  309. Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
  310. Domain []*Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"`
  311. Cidr []*CIDR `protobuf:"bytes,3,rep,name=cidr,proto3" json:"cidr,omitempty"`
  312. PortRange *net.PortRange `protobuf:"bytes,4,opt,name=port_range,json=portRange,proto3" json:"port_range,omitempty"`
  313. NetworkList *net.NetworkList `protobuf:"bytes,5,opt,name=network_list,json=networkList,proto3" json:"network_list,omitempty"`
  314. SourceCidr []*CIDR `protobuf:"bytes,6,rep,name=source_cidr,json=sourceCidr,proto3" json:"source_cidr,omitempty"`
  315. UserEmail []string `protobuf:"bytes,7,rep,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"`
  316. InboundTag []string `protobuf:"bytes,8,rep,name=inbound_tag,json=inboundTag,proto3" json:"inbound_tag,omitempty"`
  317. Protocol []string `protobuf:"bytes,9,rep,name=protocol,proto3" json:"protocol,omitempty"`
  318. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  319. XXX_unrecognized []byte `json:"-"`
  320. XXX_sizecache int32 `json:"-"`
  321. }
  322. func (m *RoutingRule) Reset() { *m = RoutingRule{} }
  323. func (m *RoutingRule) String() string { return proto.CompactTextString(m) }
  324. func (*RoutingRule) ProtoMessage() {}
  325. func (*RoutingRule) Descriptor() ([]byte, []int) {
  326. return fileDescriptor_config_38b171a67be39168, []int{6}
  327. }
  328. func (m *RoutingRule) XXX_Unmarshal(b []byte) error {
  329. return xxx_messageInfo_RoutingRule.Unmarshal(m, b)
  330. }
  331. func (m *RoutingRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  332. return xxx_messageInfo_RoutingRule.Marshal(b, m, deterministic)
  333. }
  334. func (dst *RoutingRule) XXX_Merge(src proto.Message) {
  335. xxx_messageInfo_RoutingRule.Merge(dst, src)
  336. }
  337. func (m *RoutingRule) XXX_Size() int {
  338. return xxx_messageInfo_RoutingRule.Size(m)
  339. }
  340. func (m *RoutingRule) XXX_DiscardUnknown() {
  341. xxx_messageInfo_RoutingRule.DiscardUnknown(m)
  342. }
  343. var xxx_messageInfo_RoutingRule proto.InternalMessageInfo
  344. func (m *RoutingRule) GetTag() string {
  345. if m != nil {
  346. return m.Tag
  347. }
  348. return ""
  349. }
  350. func (m *RoutingRule) GetDomain() []*Domain {
  351. if m != nil {
  352. return m.Domain
  353. }
  354. return nil
  355. }
  356. func (m *RoutingRule) GetCidr() []*CIDR {
  357. if m != nil {
  358. return m.Cidr
  359. }
  360. return nil
  361. }
  362. func (m *RoutingRule) GetPortRange() *net.PortRange {
  363. if m != nil {
  364. return m.PortRange
  365. }
  366. return nil
  367. }
  368. func (m *RoutingRule) GetNetworkList() *net.NetworkList {
  369. if m != nil {
  370. return m.NetworkList
  371. }
  372. return nil
  373. }
  374. func (m *RoutingRule) GetSourceCidr() []*CIDR {
  375. if m != nil {
  376. return m.SourceCidr
  377. }
  378. return nil
  379. }
  380. func (m *RoutingRule) GetUserEmail() []string {
  381. if m != nil {
  382. return m.UserEmail
  383. }
  384. return nil
  385. }
  386. func (m *RoutingRule) GetInboundTag() []string {
  387. if m != nil {
  388. return m.InboundTag
  389. }
  390. return nil
  391. }
  392. func (m *RoutingRule) GetProtocol() []string {
  393. if m != nil {
  394. return m.Protocol
  395. }
  396. return nil
  397. }
  398. type Config struct {
  399. DomainStrategy Config_DomainStrategy `protobuf:"varint,1,opt,name=domain_strategy,json=domainStrategy,proto3,enum=v2ray.core.app.router.Config_DomainStrategy" json:"domain_strategy,omitempty"`
  400. Rule []*RoutingRule `protobuf:"bytes,2,rep,name=rule,proto3" json:"rule,omitempty"`
  401. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  402. XXX_unrecognized []byte `json:"-"`
  403. XXX_sizecache int32 `json:"-"`
  404. }
  405. func (m *Config) Reset() { *m = Config{} }
  406. func (m *Config) String() string { return proto.CompactTextString(m) }
  407. func (*Config) ProtoMessage() {}
  408. func (*Config) Descriptor() ([]byte, []int) {
  409. return fileDescriptor_config_38b171a67be39168, []int{7}
  410. }
  411. func (m *Config) XXX_Unmarshal(b []byte) error {
  412. return xxx_messageInfo_Config.Unmarshal(m, b)
  413. }
  414. func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  415. return xxx_messageInfo_Config.Marshal(b, m, deterministic)
  416. }
  417. func (dst *Config) XXX_Merge(src proto.Message) {
  418. xxx_messageInfo_Config.Merge(dst, src)
  419. }
  420. func (m *Config) XXX_Size() int {
  421. return xxx_messageInfo_Config.Size(m)
  422. }
  423. func (m *Config) XXX_DiscardUnknown() {
  424. xxx_messageInfo_Config.DiscardUnknown(m)
  425. }
  426. var xxx_messageInfo_Config proto.InternalMessageInfo
  427. func (m *Config) GetDomainStrategy() Config_DomainStrategy {
  428. if m != nil {
  429. return m.DomainStrategy
  430. }
  431. return Config_AsIs
  432. }
  433. func (m *Config) GetRule() []*RoutingRule {
  434. if m != nil {
  435. return m.Rule
  436. }
  437. return nil
  438. }
  439. func init() {
  440. proto.RegisterType((*Domain)(nil), "v2ray.core.app.router.Domain")
  441. proto.RegisterType((*CIDR)(nil), "v2ray.core.app.router.CIDR")
  442. proto.RegisterType((*GeoIP)(nil), "v2ray.core.app.router.GeoIP")
  443. proto.RegisterType((*GeoIPList)(nil), "v2ray.core.app.router.GeoIPList")
  444. proto.RegisterType((*GeoSite)(nil), "v2ray.core.app.router.GeoSite")
  445. proto.RegisterType((*GeoSiteList)(nil), "v2ray.core.app.router.GeoSiteList")
  446. proto.RegisterType((*RoutingRule)(nil), "v2ray.core.app.router.RoutingRule")
  447. proto.RegisterType((*Config)(nil), "v2ray.core.app.router.Config")
  448. proto.RegisterEnum("v2ray.core.app.router.Domain_Type", Domain_Type_name, Domain_Type_value)
  449. proto.RegisterEnum("v2ray.core.app.router.Config_DomainStrategy", Config_DomainStrategy_name, Config_DomainStrategy_value)
  450. }
  451. func init() {
  452. proto.RegisterFile("v2ray.com/core/app/router/config.proto", fileDescriptor_config_38b171a67be39168)
  453. }
  454. var fileDescriptor_config_38b171a67be39168 = []byte{
  455. // 651 bytes of a gzipped FileDescriptorProto
  456. 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x5d, 0x6f, 0xd3, 0x4a,
  457. 0x10, 0xbd, 0xce, 0x57, 0xeb, 0x71, 0x6e, 0xae, 0xb5, 0xba, 0xbd, 0xf2, 0x2d, 0x14, 0x82, 0x85,
  458. 0x20, 0x0f, 0xc8, 0x91, 0xc2, 0xc7, 0x13, 0xa8, 0x2a, 0x69, 0x55, 0x45, 0x82, 0x12, 0x6d, 0x5b,
  459. 0x1e, 0xe0, 0x21, 0xda, 0xda, 0x5b, 0x63, 0x61, 0xef, 0xae, 0xd6, 0xeb, 0xd2, 0xbc, 0xf1, 0x77,
  460. 0xe0, 0x57, 0xf1, 0x53, 0xd0, 0xee, 0x3a, 0xa5, 0x45, 0x35, 0x54, 0xbc, 0xcd, 0x8c, 0xcf, 0x99,
  461. 0x39, 0x3e, 0x9e, 0x31, 0x3c, 0x38, 0x9b, 0x48, 0xb2, 0x8c, 0x62, 0x5e, 0x8c, 0x63, 0x2e, 0xe9,
  462. 0x98, 0x08, 0x31, 0x96, 0xbc, 0x52, 0x54, 0x8e, 0x63, 0xce, 0x4e, 0xb3, 0x34, 0x12, 0x92, 0x2b,
  463. 0x8e, 0x36, 0x56, 0x38, 0x49, 0x23, 0x22, 0x44, 0x64, 0x31, 0x9b, 0xf7, 0x7f, 0xa2, 0xc7, 0xbc,
  464. 0x28, 0x38, 0x1b, 0x33, 0xaa, 0xc6, 0x82, 0x4b, 0x65, 0xc9, 0x9b, 0x0f, 0x9b, 0x51, 0x8c, 0xaa,
  465. 0x4f, 0x5c, 0x7e, 0xb4, 0xc0, 0xf0, 0xb3, 0x03, 0xbd, 0x5d, 0x5e, 0x90, 0x8c, 0xa1, 0x67, 0xd0,
  466. 0x51, 0x4b, 0x41, 0x03, 0x67, 0xe8, 0x8c, 0x06, 0x93, 0x30, 0xba, 0x76, 0x7e, 0x64, 0xc1, 0xd1,
  467. 0xd1, 0x52, 0x50, 0x6c, 0xf0, 0xe8, 0x5f, 0xe8, 0x9e, 0x91, 0xbc, 0xa2, 0x41, 0x6b, 0xe8, 0x8c,
  468. 0x5c, 0x6c, 0x93, 0x70, 0x04, 0x1d, 0x8d, 0x41, 0x2e, 0x74, 0xe7, 0x39, 0xc9, 0x98, 0xff, 0x97,
  469. 0x0e, 0x31, 0x4d, 0xe9, 0xb9, 0xef, 0x20, 0x58, 0x4d, 0xf5, 0x5b, 0x61, 0x04, 0x9d, 0xe9, 0x6c,
  470. 0x17, 0xa3, 0x01, 0xb4, 0x32, 0x61, 0xa6, 0xf7, 0x71, 0x2b, 0x13, 0xe8, 0x3f, 0xe8, 0x09, 0x49,
  471. 0x4f, 0xb3, 0x73, 0xd3, 0xf8, 0x6f, 0x5c, 0x67, 0xe1, 0x7b, 0xe8, 0xee, 0x53, 0x3e, 0x9b, 0xa3,
  472. 0x7b, 0xd0, 0x8f, 0x79, 0xc5, 0x94, 0x5c, 0x2e, 0x62, 0x9e, 0x58, 0xe1, 0x2e, 0xf6, 0xea, 0xda,
  473. 0x94, 0x27, 0x14, 0x8d, 0xa1, 0x13, 0x67, 0x89, 0x0c, 0x5a, 0xc3, 0xf6, 0xc8, 0x9b, 0xdc, 0x6a,
  474. 0x78, 0x27, 0x3d, 0x1e, 0x1b, 0x60, 0xb8, 0x0d, 0xae, 0x69, 0xfe, 0x2a, 0x2b, 0x15, 0x9a, 0x40,
  475. 0x97, 0xea, 0x56, 0x81, 0x63, 0xe8, 0xb7, 0x1b, 0xe8, 0x86, 0x80, 0x2d, 0x34, 0x8c, 0x61, 0x6d,
  476. 0x9f, 0xf2, 0xc3, 0x4c, 0xd1, 0x9b, 0xe8, 0x7b, 0x0a, 0xbd, 0xc4, 0xf8, 0x50, 0x2b, 0xdc, 0xfa,
  477. 0xa5, 0xeb, 0xb8, 0x06, 0x87, 0x53, 0xf0, 0xea, 0x21, 0x46, 0xe7, 0x93, 0xab, 0x3a, 0xef, 0x34,
  478. 0xeb, 0xd4, 0x94, 0x95, 0xd2, 0x2f, 0x6d, 0xf0, 0x30, 0xaf, 0x54, 0xc6, 0x52, 0x5c, 0xe5, 0x14,
  479. 0xf9, 0xd0, 0x56, 0x24, 0xad, 0x55, 0xea, 0xf0, 0x0f, 0xd5, 0x5d, 0x98, 0xde, 0xbe, 0xa1, 0xe9,
  480. 0x68, 0x1b, 0x40, 0xef, 0xee, 0x42, 0x12, 0x96, 0xd2, 0xa0, 0x33, 0x74, 0x46, 0xde, 0x64, 0x78,
  481. 0x99, 0x66, 0xd7, 0x37, 0x62, 0x54, 0x45, 0x73, 0x2e, 0x15, 0xd6, 0x38, 0xec, 0x8a, 0x55, 0x88,
  482. 0xf6, 0xa0, 0x5f, 0xaf, 0xf5, 0x22, 0xcf, 0x4a, 0x15, 0x74, 0x4d, 0x8b, 0xb0, 0xa1, 0xc5, 0x81,
  483. 0x85, 0x6a, 0xeb, 0xb0, 0xc7, 0x7e, 0x24, 0xe8, 0x39, 0x78, 0x25, 0xaf, 0x64, 0x4c, 0x17, 0x46,
  484. 0x7f, 0xef, 0xf7, 0xfa, 0xc1, 0xe2, 0xa7, 0xfa, 0x2d, 0xb6, 0x00, 0xaa, 0x92, 0xca, 0x05, 0x2d,
  485. 0x48, 0x96, 0x07, 0x6b, 0xc3, 0xf6, 0xc8, 0xc5, 0xae, 0xae, 0xec, 0xe9, 0x02, 0xba, 0x0b, 0x5e,
  486. 0xc6, 0x4e, 0x78, 0xc5, 0x92, 0x85, 0xb6, 0x79, 0xdd, 0x3c, 0x87, 0xba, 0x74, 0x44, 0x52, 0xb4,
  487. 0x09, 0xeb, 0xe6, 0x26, 0x63, 0x9e, 0x07, 0xae, 0x79, 0x7a, 0x91, 0x87, 0xdf, 0x1c, 0xe8, 0x4d,
  488. 0xcd, 0xdf, 0x01, 0x1d, 0xc3, 0x3f, 0xd6, 0xe7, 0x45, 0xa9, 0x24, 0x51, 0x34, 0x5d, 0xd6, 0x17,
  489. 0xfb, 0xa8, 0x49, 0xa8, 0xfd, 0xab, 0xd8, 0x8f, 0x74, 0x58, 0x73, 0xf0, 0x20, 0xb9, 0x92, 0xeb,
  490. 0xeb, 0x97, 0x55, 0x4e, 0xeb, 0x2f, 0xdd, 0x74, 0xfd, 0x97, 0xf6, 0x05, 0x1b, 0x7c, 0xb8, 0x0f,
  491. 0x83, 0xab, 0x9d, 0xd1, 0x3a, 0x74, 0x76, 0xca, 0x59, 0x69, 0x0f, 0xfe, 0xb8, 0xa4, 0x33, 0xe1,
  492. 0x3b, 0xc8, 0x87, 0xfe, 0x4c, 0xcc, 0x4e, 0x0f, 0x38, 0x7b, 0x4d, 0x54, 0xfc, 0xc1, 0x6f, 0xa1,
  493. 0x01, 0xc0, 0x4c, 0xbc, 0x61, 0xbb, 0xb4, 0x20, 0x2c, 0xf1, 0xdb, 0x2f, 0x5f, 0xc0, 0xff, 0x31,
  494. 0x2f, 0xae, 0x9f, 0x3b, 0x77, 0xde, 0xf5, 0x6c, 0xf4, 0xb5, 0xb5, 0xf1, 0x76, 0x82, 0xc9, 0x32,
  495. 0x9a, 0x6a, 0xc4, 0x8e, 0x10, 0x46, 0x12, 0x95, 0x27, 0x3d, 0xe3, 0xd5, 0xe3, 0xef, 0x01, 0x00,
  496. 0x00, 0xff, 0xff, 0xa5, 0x5f, 0xde, 0x29, 0x5f, 0x05, 0x00, 0x00,
  497. }