diff --git a/api/accessrequest/access_request.go b/api/accessrequest/access_request.go
index 1af10ac4400d3..7b82cfc8f25a6 100644
--- a/api/accessrequest/access_request.go
+++ b/api/accessrequest/access_request.go
@@ -58,7 +58,7 @@ func GetResourceDetails(ctx context.Context, clusterName string, lister client.L
var resourceIDs []types.ResourceID
for _, resourceID := range ids {
// We're interested in hostname or friendly name details. These apply to
- // nodes, app servers, and user groups.
+ // nodes, app servers, user groups and Identity Center resources.
switch resourceID.Kind {
case types.KindNode, types.KindApp, types.KindUserGroup, types.KindIdentityCenterAccount:
resourceIDs = append(resourceIDs, resourceID)
diff --git a/api/go.mod b/api/go.mod
index 31e931385e11a..30d89476538e4 100644
--- a/api/go.mod
+++ b/api/go.mod
@@ -22,10 +22,10 @@ require (
go.opentelemetry.io/otel/sdk v1.32.0
go.opentelemetry.io/otel/trace v1.32.0
go.opentelemetry.io/proto/otlp v1.4.0
- golang.org/x/crypto v0.29.0
+ golang.org/x/crypto v0.31.0
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f
golang.org/x/net v0.31.0
- golang.org/x/term v0.26.0
+ golang.org/x/term v0.27.0
google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697
google.golang.org/grpc v1.68.0
google.golang.org/protobuf v1.35.2
@@ -45,8 +45,8 @@ require (
github.com/mattermost/xml-roundtrip-validator v0.1.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/russellhaering/goxmldsig v1.4.0 // indirect
- golang.org/x/sys v0.27.0 // indirect
- golang.org/x/text v0.20.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
diff --git a/api/go.sum b/api/go.sum
index 8d2982e63ce17..3c0cf17e4e1d6 100644
--- a/api/go.sum
+++ b/api/go.sum
@@ -938,8 +938,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
-golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
-golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1185,8 +1185,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
-golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
@@ -1197,8 +1197,8 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
-golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU=
-golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1217,8 +1217,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
-golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
diff --git a/api/proto/teleport/legacy/types/types.proto b/api/proto/teleport/legacy/types/types.proto
index 393dbe78ff348..42b6852923223 100644
--- a/api/proto/teleport/legacy/types/types.proto
+++ b/api/proto/teleport/legacy/types/types.proto
@@ -3439,6 +3439,18 @@ message RoleConditions {
(gogoproto.nullable) = false,
(gogoproto.jsontag) = "github_permissions,omitempty"
];
+
+ // WorkloadIdentityLabels controls whether or not specific WorkloadIdentity
+ // resources can be invoked. Further authorization controls exist on the
+ // WorkloadIdentity resource itself.
+ wrappers.LabelValues WorkloadIdentityLabels = 44 [
+ (gogoproto.nullable) = false,
+ (gogoproto.jsontag) = "workload_identity_labels,omitempty",
+ (gogoproto.customtype) = "Labels"
+ ];
+ // WorkloadIdentityLabelsExpression is a predicate expression used to
+ // allow/deny access to issuing a WorkloadIdentity.
+ string WorkloadIdentityLabelsExpression = 45 [(gogoproto.jsontag) = "workload_identity_labels_expression,omitempty"];
}
// IdentityCenterAccountAssignment captures an AWS Identity Center account
diff --git a/api/types/app.go b/api/types/app.go
index f24ea7d8cf200..b3f62147e8cac 100644
--- a/api/types/app.go
+++ b/api/types/app.go
@@ -474,7 +474,7 @@ func (a *AppV3) GetDisplayName() string {
if a.Spec.IdentityCenter == nil {
return ""
}
- return a.GetName()
+ return a.Metadata.Description
}
// IsEqual determines if two application resources are equivalent to one another.
diff --git a/api/types/constants.go b/api/types/constants.go
index 0035a69dddbde..b274b1871de4f 100644
--- a/api/types/constants.go
+++ b/api/types/constants.go
@@ -1304,6 +1304,8 @@ var RequestableResourceKinds = []string{
KindKubeCertificateSigningRequest,
KindKubeIngress,
KindSAMLIdPServiceProvider,
+ KindIdentityCenterAccount,
+ KindIdentityCenterAccountAssignment,
}
// The list below needs to be kept in sync with `kubernetesResourceKindOptions`
diff --git a/api/types/role.go b/api/types/role.go
index c24b72b84ac8b..28d7e1dda45c3 100644
--- a/api/types/role.go
+++ b/api/types/role.go
@@ -107,6 +107,13 @@ type Role interface {
// SetNodeLabels sets the map of node labels this role is allowed or denied access to.
SetNodeLabels(RoleConditionType, Labels)
+ // GetWorkloadIdentityLabels gets the map of node labels this role is
+ // allowed or denied access to.
+ GetWorkloadIdentityLabels(RoleConditionType) Labels
+ // SetWorkloadIdentityLabels sets the map of WorkloadIdentity labels this
+ // role is allowed or denied access to.
+ SetWorkloadIdentityLabels(RoleConditionType, Labels)
+
// GetAppLabels gets the map of app labels this role is allowed or denied access to.
GetAppLabels(RoleConditionType) Labels
// SetAppLabels sets the map of app labels this role is allowed or denied access to.
@@ -619,6 +626,25 @@ func (r *RoleV6) SetNodeLabels(rct RoleConditionType, labels Labels) {
}
}
+// GetWorkloadIdentityLabels gets the map of WorkloadIdentity labels for
+// allow or deny.
+func (r *RoleV6) GetWorkloadIdentityLabels(rct RoleConditionType) Labels {
+ if rct == Allow {
+ return r.Spec.Allow.WorkloadIdentityLabels
+ }
+ return r.Spec.Deny.WorkloadIdentityLabels
+}
+
+// SetWorkloadIdentityLabels sets the map of WorkloadIdentity labels this role
+// is allowed or denied access to.
+func (r *RoleV6) SetWorkloadIdentityLabels(rct RoleConditionType, labels Labels) {
+ if rct == Allow {
+ r.Spec.Allow.WorkloadIdentityLabels = labels.Clone()
+ } else {
+ r.Spec.Deny.WorkloadIdentityLabels = labels.Clone()
+ }
+}
+
// GetAppLabels gets the map of app labels this role is allowed or denied access to.
func (r *RoleV6) GetAppLabels(rct RoleConditionType) Labels {
if rct == Allow {
@@ -1258,6 +1284,7 @@ func (r *RoleV6) CheckAndSetDefaults() error {
r.Spec.Allow.DatabaseLabels,
r.Spec.Allow.WindowsDesktopLabels,
r.Spec.Allow.GroupLabels,
+ r.Spec.Allow.WorkloadIdentityLabels,
} {
if err := checkWildcardSelector(labels); err != nil {
return trace.Wrap(err)
@@ -1973,6 +2000,8 @@ func (r *RoleV6) GetLabelMatchers(rct RoleConditionType, kind string) (LabelMatc
return LabelMatchers{cond.GroupLabels, cond.GroupLabelsExpression}, nil
case KindGitServer:
return r.makeGitServerLabelMatchers(cond), nil
+ case KindWorkloadIdentity:
+ return LabelMatchers{cond.WorkloadIdentityLabels, cond.WorkloadIdentityLabelsExpression}, nil
}
return LabelMatchers{}, trace.BadParameter("can't get label matchers for resource kind %q", kind)
}
@@ -2026,6 +2055,10 @@ func (r *RoleV6) SetLabelMatchers(rct RoleConditionType, kind string, labelMatch
cond.GroupLabels = labelMatchers.Labels
cond.GroupLabelsExpression = labelMatchers.Expression
return nil
+ case KindWorkloadIdentity:
+ cond.WorkloadIdentityLabels = labelMatchers.Labels
+ cond.WorkloadIdentityLabelsExpression = labelMatchers.Expression
+ return nil
}
return trace.BadParameter("can't set label matchers for resource kind %q", kind)
}
diff --git a/api/types/types.pb.go b/api/types/types.pb.go
index 7520c1e9216ae..5a5743a778c11 100644
--- a/api/types/types.pb.go
+++ b/api/types/types.pb.go
@@ -8710,10 +8710,17 @@ type RoleConditions struct {
// condition.
AccountAssignments []IdentityCenterAccountAssignment `protobuf:"bytes,42,rep,name=AccountAssignments,proto3" json:"account_assignments,omitempty"`
// GitHubPermissions defines GitHub integration related permissions.
- GitHubPermissions []GitHubPermission `protobuf:"bytes,43,rep,name=git_hub_permissions,json=gitHubPermissions,proto3" json:"github_permissions,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ GitHubPermissions []GitHubPermission `protobuf:"bytes,43,rep,name=git_hub_permissions,json=gitHubPermissions,proto3" json:"github_permissions,omitempty"`
+ // WorkloadIdentityLabels controls whether or not specific WorkloadIdentity
+ // resources can be invoked. Further authorization controls exist on the
+ // WorkloadIdentity resource itself.
+ WorkloadIdentityLabels Labels `protobuf:"bytes,44,opt,name=WorkloadIdentityLabels,proto3,customtype=Labels" json:"workload_identity_labels,omitempty"`
+ // WorkloadIdentityLabelsExpression is a predicate expression used to
+ // allow/deny access to issuing a WorkloadIdentity.
+ WorkloadIdentityLabelsExpression string `protobuf:"bytes,45,opt,name=WorkloadIdentityLabelsExpression,proto3" json:"workload_identity_labels_expression,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *RoleConditions) Reset() { *m = RoleConditions{} }
@@ -21898,1902 +21905,1906 @@ func init() {
func init() { proto.RegisterFile("teleport/legacy/types/types.proto", fileDescriptor_9198ee693835762e) }
var fileDescriptor_9198ee693835762e = []byte{
- // 30312 bytes of a gzipped FileDescriptorProto
+ // 30381 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6d, 0x70, 0x1c, 0x49,
- 0x76, 0x20, 0x36, 0xdd, 0x8d, 0x8f, 0xc6, 0xc3, 0x57, 0x23, 0x01, 0x92, 0x20, 0x66, 0xc8, 0xe6,
- 0xd4, 0xcc, 0x70, 0xc8, 0xd9, 0x19, 0x72, 0x09, 0xee, 0x70, 0x77, 0x76, 0xbe, 0xb6, 0xd1, 0x0d,
- 0x12, 0x4d, 0x82, 0x20, 0xb6, 0x1a, 0x20, 0x76, 0xb4, 0x1f, 0xb5, 0x85, 0xee, 0x04, 0x50, 0x83,
- 0xee, 0xae, 0xde, 0xaa, 0x6a, 0x82, 0xd0, 0x9e, 0xac, 0xef, 0x93, 0x15, 0xb2, 0x3e, 0x4f, 0x3a,
- 0xed, 0x39, 0x74, 0xb2, 0x42, 0xbe, 0xb3, 0x15, 0xe7, 0x90, 0xe2, 0x2c, 0x59, 0xf6, 0xd9, 0x0a,
- 0xcb, 0xd2, 0xc5, 0x59, 0x96, 0x15, 0x17, 0x27, 0x85, 0x7d, 0xb6, 0xc3, 0xeb, 0x0b, 0xc8, 0xb2,
- 0xfc, 0xc3, 0x81, 0x08, 0x47, 0x48, 0xbe, 0x08, 0x47, 0x78, 0x1d, 0xba, 0xbb, 0xc8, 0x97, 0x99,
- 0x55, 0x99, 0x55, 0xd5, 0x8d, 0xc6, 0x90, 0xa3, 0x13, 0x27, 0xf4, 0x87, 0x44, 0xbf, 0x7c, 0xef,
- 0x65, 0xe5, 0xf7, 0xcb, 0x97, 0xef, 0x03, 0x5e, 0x0c, 0x68, 0x93, 0x76, 0x5c, 0x2f, 0xb8, 0xde,
- 0xa4, 0xbb, 0x76, 0xfd, 0xf0, 0x7a, 0x70, 0xd8, 0xa1, 0x3e, 0xff, 0xf7, 0x5a, 0xc7, 0x73, 0x03,
- 0x97, 0x0c, 0xe3, 0x8f, 0x85, 0xb9, 0x5d, 0x77, 0xd7, 0x45, 0xc8, 0x75, 0xf6, 0x17, 0x2f, 0x5c,
- 0xb8, 0xb8, 0xeb, 0xba, 0xbb, 0x4d, 0x7a, 0x1d, 0x7f, 0x6d, 0x77, 0x77, 0xae, 0x37, 0xba, 0x9e,
- 0x1d, 0x38, 0x6e, 0x5b, 0x94, 0x17, 0xe3, 0xe5, 0x81, 0xd3, 0xa2, 0x7e, 0x60, 0xb7, 0x3a, 0xbd,
- 0x18, 0x1c, 0x78, 0x76, 0xa7, 0x43, 0x3d, 0x51, 0xfb, 0xc2, 0xd5, 0xf0, 0x03, 0xed, 0x20, 0x60,
- 0x94, 0x8c, 0xf9, 0xf5, 0x47, 0x37, 0xd4, 0x9f, 0x02, 0xf5, 0x56, 0x8f, 0xb6, 0x78, 0x5d, 0x3f,
- 0xa0, 0x0d, 0xab, 0x41, 0x1f, 0x39, 0x75, 0x6a, 0x79, 0xf4, 0x1b, 0x5d, 0xc7, 0xa3, 0x2d, 0xda,
- 0x0e, 0x04, 0xdd, 0x1b, 0xe9, 0x74, 0xf2, 0x43, 0x62, 0x5f, 0x64, 0xfc, 0x62, 0x0e, 0xc6, 0xee,
- 0x51, 0xda, 0x29, 0x35, 0x9d, 0x47, 0x94, 0xbc, 0x04, 0x43, 0x6b, 0x76, 0x8b, 0xce, 0x67, 0x2e,
- 0x65, 0xae, 0x8c, 0x2d, 0x4d, 0x1f, 0x1f, 0x15, 0xc7, 0x7d, 0xea, 0x3d, 0xa2, 0x9e, 0xd5, 0xb6,
- 0x5b, 0xd4, 0xc4, 0x42, 0xf2, 0x29, 0x18, 0x63, 0xff, 0xfb, 0x1d, 0xbb, 0x4e, 0xe7, 0xb3, 0x88,
- 0x39, 0x79, 0x7c, 0x54, 0x1c, 0x6b, 0x4b, 0xa0, 0x19, 0x95, 0x93, 0x2a, 0x8c, 0x2e, 0x3f, 0xee,
- 0x38, 0x1e, 0xf5, 0xe7, 0x87, 0x2e, 0x65, 0xae, 0x8c, 0x2f, 0x2e, 0x5c, 0xe3, 0x7d, 0x74, 0x4d,
- 0xf6, 0xd1, 0xb5, 0x0d, 0xd9, 0x89, 0x4b, 0xb3, 0xbf, 0x7f, 0x54, 0x7c, 0xee, 0xf8, 0xa8, 0x38,
- 0x4a, 0x39, 0xc9, 0x4f, 0xfd, 0x71, 0x31, 0x63, 0x4a, 0x7a, 0xf2, 0x0e, 0x0c, 0x6d, 0x1c, 0x76,
- 0xe8, 0xfc, 0xd8, 0xa5, 0xcc, 0x95, 0xa9, 0xc5, 0x8b, 0xd7, 0xf8, 0xb0, 0x86, 0x1f, 0x1f, 0xfd,
- 0xc5, 0xb0, 0x96, 0xf2, 0xc7, 0x47, 0xc5, 0x21, 0x86, 0x62, 0x22, 0x15, 0x79, 0x03, 0x46, 0x56,
- 0x5c, 0x3f, 0xa8, 0x56, 0xe6, 0x01, 0x3f, 0xf9, 0xcc, 0xf1, 0x51, 0x71, 0x66, 0xcf, 0xf5, 0x03,
- 0xcb, 0x69, 0xbc, 0xee, 0xb6, 0x9c, 0x80, 0xb6, 0x3a, 0xc1, 0xa1, 0x29, 0x90, 0x8c, 0xc7, 0x30,
- 0xa9, 0xf1, 0x23, 0xe3, 0x30, 0xba, 0xb9, 0x76, 0x6f, 0xed, 0xc1, 0xd6, 0x5a, 0xe1, 0x39, 0x92,
- 0x87, 0xa1, 0xb5, 0x07, 0x95, 0xe5, 0x42, 0x86, 0x8c, 0x42, 0xae, 0xb4, 0xbe, 0x5e, 0xc8, 0x92,
- 0x09, 0xc8, 0x57, 0x4a, 0x1b, 0xa5, 0xa5, 0x52, 0x6d, 0xb9, 0x90, 0x23, 0xb3, 0x30, 0xbd, 0x55,
- 0x5d, 0xab, 0x3c, 0xd8, 0xaa, 0x59, 0x95, 0xe5, 0xda, 0xbd, 0x8d, 0x07, 0xeb, 0x85, 0x21, 0x32,
- 0x05, 0x70, 0x6f, 0x73, 0x69, 0xd9, 0x5c, 0x5b, 0xde, 0x58, 0xae, 0x15, 0x86, 0xc9, 0x1c, 0x14,
- 0x24, 0x89, 0x55, 0x5b, 0x36, 0x1f, 0x56, 0xcb, 0xcb, 0x85, 0x91, 0xbb, 0x43, 0xf9, 0x5c, 0x61,
- 0xc8, 0x1c, 0x5d, 0xa5, 0xb6, 0x4f, 0xab, 0x15, 0xe3, 0x3f, 0xcc, 0x41, 0xfe, 0x3e, 0x0d, 0xec,
- 0x86, 0x1d, 0xd8, 0xe4, 0x05, 0x6d, 0x7c, 0xb0, 0x89, 0xca, 0xc0, 0xbc, 0x94, 0x1c, 0x98, 0xe1,
- 0xe3, 0xa3, 0x62, 0xe6, 0x0d, 0x75, 0x40, 0xde, 0x86, 0xf1, 0x0a, 0xf5, 0xeb, 0x9e, 0xd3, 0x61,
- 0x93, 0x6d, 0x3e, 0x87, 0x68, 0xe7, 0x8f, 0x8f, 0x8a, 0x67, 0x1a, 0x11, 0x58, 0xe9, 0x10, 0x15,
- 0x9b, 0x54, 0x61, 0x64, 0xd5, 0xde, 0xa6, 0x4d, 0x7f, 0x7e, 0xf8, 0x52, 0xee, 0xca, 0xf8, 0xe2,
- 0xf3, 0x62, 0x10, 0xe4, 0x07, 0x5e, 0xe3, 0xa5, 0xcb, 0xed, 0xc0, 0x3b, 0x5c, 0x9a, 0x3b, 0x3e,
- 0x2a, 0x16, 0x9a, 0x08, 0x50, 0x3b, 0x98, 0xa3, 0x90, 0x5a, 0x34, 0x31, 0x46, 0x4e, 0x9c, 0x18,
- 0x17, 0x7e, 0xff, 0xa8, 0x98, 0x61, 0x03, 0x26, 0x26, 0x46, 0xc4, 0x4f, 0x9f, 0x22, 0x8b, 0x90,
- 0x37, 0xe9, 0x23, 0xc7, 0x67, 0x2d, 0xcb, 0x63, 0xcb, 0xce, 0x1e, 0x1f, 0x15, 0x89, 0x27, 0x60,
- 0xca, 0x67, 0x84, 0x78, 0x0b, 0x6f, 0xc1, 0xb8, 0xf2, 0xd5, 0xa4, 0x00, 0xb9, 0x7d, 0x7a, 0xc8,
- 0x7b, 0xd8, 0x64, 0x7f, 0x92, 0x39, 0x18, 0x7e, 0x64, 0x37, 0xbb, 0xa2, 0x4b, 0x4d, 0xfe, 0xe3,
- 0xf3, 0xd9, 0xcf, 0x65, 0xee, 0x0e, 0xe5, 0x47, 0x0b, 0x79, 0x33, 0x5b, 0xad, 0x18, 0x3f, 0x33,
- 0x04, 0x79, 0xd3, 0xe5, 0x0b, 0x98, 0x5c, 0x85, 0xe1, 0x5a, 0x60, 0x07, 0x72, 0x98, 0x66, 0x8f,
- 0x8f, 0x8a, 0xd3, 0x6c, 0x71, 0x53, 0xa5, 0x7e, 0x8e, 0xc1, 0x50, 0xd7, 0xf7, 0x6c, 0x5f, 0x0e,
- 0x17, 0xa2, 0x76, 0x18, 0x40, 0x45, 0x45, 0x0c, 0x72, 0x19, 0x86, 0xee, 0xbb, 0x0d, 0x2a, 0x46,
- 0x8c, 0x1c, 0x1f, 0x15, 0xa7, 0x5a, 0x6e, 0x43, 0x45, 0xc4, 0x72, 0xf2, 0x3a, 0x8c, 0x95, 0xbb,
- 0x9e, 0x47, 0xdb, 0x6c, 0xae, 0x0f, 0x21, 0xf2, 0xd4, 0xf1, 0x51, 0x11, 0xea, 0x1c, 0x68, 0x39,
- 0x0d, 0x33, 0x42, 0x60, 0xc3, 0x50, 0x0b, 0x6c, 0x2f, 0xa0, 0x8d, 0xf9, 0xe1, 0x81, 0x86, 0x81,
- 0xad, 0xcf, 0x19, 0x9f, 0x93, 0xc4, 0x87, 0x41, 0x70, 0x22, 0x2b, 0x30, 0x7e, 0xc7, 0xb3, 0xeb,
- 0x74, 0x9d, 0x7a, 0x8e, 0xdb, 0xc0, 0xf1, 0xcd, 0x2d, 0x5d, 0x3e, 0x3e, 0x2a, 0x9e, 0xdd, 0x65,
- 0x60, 0xab, 0x83, 0xf0, 0x88, 0xfa, 0x3b, 0x47, 0xc5, 0x7c, 0x45, 0x6c, 0xb5, 0xa6, 0x4a, 0x4a,
- 0xbe, 0xce, 0x06, 0xc7, 0x0f, 0xb0, 0x6b, 0x69, 0x63, 0x7e, 0xf4, 0xc4, 0x4f, 0x34, 0xc4, 0x27,
- 0x9e, 0x6d, 0xda, 0x7e, 0x60, 0x79, 0x9c, 0x2e, 0xf6, 0x9d, 0x2a, 0x4b, 0xf2, 0x00, 0xf2, 0xb5,
- 0xfa, 0x1e, 0x6d, 0x74, 0x9b, 0x14, 0xa7, 0xcc, 0xf8, 0xe2, 0x39, 0x31, 0xa9, 0xe5, 0x78, 0xca,
- 0xe2, 0xa5, 0x05, 0xc1, 0x9b, 0xf8, 0x02, 0xa2, 0xce, 0x27, 0x89, 0xf5, 0xf9, 0xfc, 0xb7, 0x7e,
- 0xa9, 0xf8, 0xdc, 0xf7, 0xfd, 0x8b, 0x4b, 0xcf, 0x19, 0xff, 0x45, 0x16, 0x0a, 0x71, 0x26, 0x64,
- 0x07, 0x26, 0x37, 0x3b, 0x0d, 0x3b, 0xa0, 0xe5, 0xa6, 0x43, 0xdb, 0x81, 0x8f, 0x93, 0xa4, 0x7f,
- 0x9b, 0x5e, 0x16, 0xf5, 0xce, 0x77, 0x91, 0xd0, 0xaa, 0x73, 0xca, 0x58, 0xab, 0x74, 0xb6, 0x51,
- 0x3d, 0x35, 0xdc, 0xc0, 0x7d, 0x9c, 0x61, 0xa7, 0xab, 0x87, 0x6f, 0xfd, 0x3d, 0xea, 0x11, 0x6c,
- 0xc5, 0x04, 0x6a, 0x37, 0xb6, 0x0f, 0x71, 0x66, 0x0e, 0x3e, 0x81, 0x18, 0x49, 0xca, 0x04, 0x62,
- 0x60, 0xe3, 0xff, 0xcc, 0xc0, 0x94, 0x49, 0x7d, 0xb7, 0xeb, 0xd5, 0xe9, 0x0a, 0xb5, 0x1b, 0xd4,
- 0x63, 0xd3, 0xff, 0x9e, 0xd3, 0x6e, 0x88, 0x35, 0x85, 0xd3, 0x7f, 0xdf, 0x69, 0xab, 0x5b, 0x37,
- 0x96, 0x93, 0x4f, 0xc3, 0x68, 0xad, 0xbb, 0x8d, 0xa8, 0xd9, 0x68, 0x07, 0xf0, 0xbb, 0xdb, 0x56,
- 0x0c, 0x5d, 0xa2, 0x91, 0xeb, 0x30, 0xfa, 0x90, 0x7a, 0x7e, 0xb4, 0x1b, 0xe2, 0xd1, 0xf0, 0x88,
- 0x83, 0x54, 0x02, 0x81, 0x45, 0xee, 0x44, 0x3b, 0xb2, 0x38, 0xd4, 0xa6, 0x63, 0xfb, 0x60, 0x34,
- 0x55, 0x5a, 0x02, 0xa2, 0x4e, 0x15, 0x89, 0x65, 0xfc, 0x74, 0x16, 0x0a, 0x15, 0x3b, 0xb0, 0xb7,
- 0x6d, 0x5f, 0xf4, 0xe7, 0xc3, 0x9b, 0x6c, 0x8f, 0x57, 0x1a, 0x8a, 0x7b, 0x3c, 0xfb, 0xf2, 0x8f,
- 0xdc, 0xbc, 0x57, 0xe2, 0xcd, 0x1b, 0x67, 0x27, 0xac, 0x68, 0x5e, 0xd4, 0xa8, 0x77, 0x4f, 0x6e,
- 0x54, 0x41, 0x34, 0x2a, 0x2f, 0x1b, 0x15, 0x35, 0x85, 0xbc, 0x0b, 0x43, 0xb5, 0x0e, 0xad, 0x8b,
- 0x4d, 0x44, 0x9e, 0x0b, 0x7a, 0xe3, 0x18, 0xc2, 0xc3, 0x9b, 0x4b, 0x13, 0x82, 0xcd, 0x90, 0xdf,
- 0xa1, 0x75, 0x13, 0xc9, 0x94, 0x45, 0xf3, 0x8f, 0x72, 0x30, 0x97, 0x46, 0xa6, 0xb6, 0x63, 0xa4,
- 0x4f, 0x3b, 0xae, 0x40, 0x9e, 0x1d, 0xe1, 0xec, 0x58, 0xc4, 0xed, 0x62, 0x6c, 0x69, 0x82, 0x7d,
- 0xf2, 0x9e, 0x80, 0x99, 0x61, 0x29, 0x79, 0x29, 0x94, 0x08, 0xf2, 0x11, 0x3f, 0x21, 0x11, 0x48,
- 0x39, 0x80, 0x8d, 0xb5, 0x5c, 0xc2, 0x28, 0x38, 0x44, 0xdd, 0x22, 0xc1, 0xd1, 0x58, 0x7b, 0x02,
- 0xa2, 0x1d, 0x33, 0xf2, 0x50, 0x58, 0x86, 0xbc, 0x6c, 0xd6, 0xfc, 0x04, 0x32, 0x9a, 0x89, 0x75,
- 0xd2, 0xc3, 0x9b, 0x7c, 0x30, 0x1b, 0xe2, 0xb7, 0xca, 0x46, 0xe2, 0x90, 0x9b, 0x90, 0x5f, 0xf7,
- 0xdc, 0xc7, 0x87, 0xd5, 0x8a, 0x3f, 0x3f, 0x79, 0x29, 0x77, 0x65, 0x6c, 0xe9, 0xdc, 0xf1, 0x51,
- 0x71, 0xb6, 0xc3, 0x60, 0x96, 0xd3, 0x50, 0x4f, 0xda, 0x10, 0xf1, 0xee, 0x50, 0x3e, 0x53, 0xc8,
- 0xde, 0x1d, 0xca, 0x67, 0x0b, 0x39, 0x2e, 0x5e, 0xdc, 0x1d, 0xca, 0x0f, 0x15, 0x86, 0xef, 0x0e,
- 0xe5, 0x87, 0x51, 0xe0, 0x18, 0x2b, 0xc0, 0xdd, 0xa1, 0xfc, 0x78, 0x61, 0x42, 0x3b, 0xed, 0x91,
- 0x41, 0xe0, 0xd6, 0xdd, 0xa6, 0x99, 0xdb, 0x34, 0xab, 0xe6, 0x48, 0xb9, 0x54, 0xa6, 0x5e, 0x60,
- 0xe6, 0x4a, 0x5b, 0x35, 0x73, 0xb2, 0x72, 0xd8, 0xb6, 0x5b, 0x4e, 0x9d, 0x1f, 0x9d, 0x66, 0xee,
- 0x4e, 0x79, 0xdd, 0x28, 0xc1, 0x54, 0xd4, 0x96, 0x55, 0xc7, 0x0f, 0xc8, 0x75, 0x18, 0x93, 0x10,
- 0xb6, 0xd1, 0xe5, 0x52, 0x5b, 0x6d, 0x46, 0x38, 0xc6, 0xef, 0x65, 0x01, 0xa2, 0x92, 0x67, 0x74,
- 0x2d, 0x7c, 0x56, 0x5b, 0x0b, 0x67, 0xe2, 0x6b, 0xa1, 0xe7, 0x2a, 0x20, 0xef, 0xc3, 0x08, 0x13,
- 0x0b, 0xba, 0x52, 0x24, 0x3a, 0x17, 0x27, 0xc5, 0xc2, 0x87, 0x37, 0x97, 0xa6, 0x04, 0xf1, 0x88,
- 0x8f, 0x10, 0x53, 0x90, 0x29, 0xcb, 0xe8, 0x17, 0x47, 0xa3, 0xc1, 0x10, 0x0b, 0xe8, 0x0a, 0x84,
- 0x03, 0x2a, 0x3a, 0x14, 0x57, 0x46, 0x47, 0x0e, 0x72, 0x58, 0x4a, 0xce, 0x03, 0x1b, 0x70, 0xd1,
- 0xa9, 0xa3, 0xc7, 0x47, 0xc5, 0x5c, 0xd7, 0x73, 0x70, 0x12, 0x90, 0xeb, 0x20, 0xa6, 0x81, 0xe8,
- 0x40, 0x36, 0xfb, 0x66, 0xea, 0xb6, 0x55, 0xa7, 0x5e, 0x10, 0xf5, 0xf8, 0x7c, 0x46, 0xce, 0x16,
- 0xd2, 0x01, 0x7d, 0xaa, 0xcc, 0x0f, 0xe1, 0x34, 0xb8, 0x92, 0xda, 0x2b, 0xd7, 0x34, 0x54, 0x2e,
- 0x46, 0x5e, 0x92, 0xa7, 0x52, 0x83, 0x97, 0x59, 0x09, 0x91, 0x52, 0xaf, 0x80, 0xdc, 0x04, 0x36,
- 0x43, 0x45, 0xef, 0x83, 0xa8, 0xa7, 0xb4, 0x55, 0x5b, 0x3a, 0x23, 0x38, 0x4d, 0xda, 0x07, 0x2a,
- 0x39, 0xc3, 0x26, 0x6f, 0x03, 0x9b, 0xc2, 0xa2, 0xdf, 0x89, 0x20, 0xba, 0x53, 0x5e, 0x2f, 0x37,
- 0xdd, 0x6e, 0xa3, 0xf6, 0xc5, 0xd5, 0x88, 0x78, 0xb7, 0xde, 0x51, 0x89, 0xef, 0x94, 0xd7, 0xc9,
- 0xdb, 0x30, 0x5c, 0xfa, 0xee, 0xae, 0x47, 0x85, 0x7c, 0x32, 0x21, 0xeb, 0x64, 0xb0, 0xa5, 0x73,
- 0x82, 0x70, 0xda, 0x66, 0x3f, 0x55, 0xb9, 0x0e, 0xcb, 0x59, 0xcd, 0x1b, 0xab, 0x35, 0x21, 0x7b,
- 0x90, 0x58, 0xb7, 0x6c, 0xac, 0x2a, 0x9f, 0x1d, 0x68, 0xad, 0x66, 0x54, 0xe4, 0x3a, 0x64, 0x4b,
- 0x15, 0xbc, 0x11, 0x8d, 0x2f, 0x8e, 0xc9, 0x6a, 0x2b, 0x4b, 0x73, 0x82, 0x64, 0xc2, 0x56, 0x97,
- 0x41, 0xb6, 0x54, 0x21, 0x4b, 0x30, 0x7c, 0xff, 0xb0, 0xf6, 0xc5, 0x55, 0xb1, 0x99, 0xcd, 0xca,
- 0x79, 0xcd, 0x60, 0x0f, 0x70, 0xd9, 0xfb, 0xd1, 0x17, 0xb7, 0x0e, 0xfd, 0x6f, 0x34, 0xd5, 0x2f,
- 0x46, 0x34, 0xb2, 0x0e, 0x63, 0xa5, 0x46, 0xcb, 0x69, 0x6f, 0xfa, 0xd4, 0x9b, 0x1f, 0x47, 0x3e,
- 0xf3, 0xb1, 0xef, 0x0e, 0xcb, 0x97, 0xe6, 0x8f, 0x8f, 0x8a, 0x73, 0x36, 0xfb, 0x69, 0x75, 0x7d,
- 0xea, 0x29, 0xdc, 0x22, 0x26, 0x64, 0x1d, 0xe0, 0xbe, 0xdb, 0xde, 0x75, 0x4b, 0x41, 0xd3, 0xf6,
- 0x63, 0xdb, 0x63, 0x54, 0x10, 0x8a, 0x0f, 0x67, 0x5a, 0x0c, 0x66, 0xd9, 0x0c, 0xa8, 0x30, 0x54,
- 0x78, 0x90, 0xdb, 0x30, 0xf2, 0xc0, 0xb3, 0xeb, 0x4d, 0x3a, 0x3f, 0x89, 0xdc, 0xe6, 0x04, 0x37,
- 0x0e, 0x94, 0x2d, 0x9d, 0x17, 0x0c, 0x0b, 0x2e, 0x82, 0xd5, 0x6b, 0x0a, 0x47, 0x5c, 0xd8, 0x02,
- 0x92, 0x9c, 0x93, 0x29, 0x97, 0x84, 0x4f, 0xa9, 0x97, 0x84, 0x68, 0xd1, 0x97, 0xdd, 0x56, 0xcb,
- 0x6e, 0x37, 0x90, 0xf6, 0xe1, 0xa2, 0x72, 0x77, 0x30, 0xbe, 0x01, 0x33, 0x89, 0xce, 0x3a, 0xe1,
- 0x7e, 0xf7, 0x1e, 0x4c, 0x57, 0xe8, 0x8e, 0xdd, 0x6d, 0x06, 0xe1, 0x49, 0xc2, 0x97, 0x28, 0xde,
- 0xb4, 0x1a, 0xbc, 0xc8, 0x92, 0xc7, 0x87, 0x19, 0x47, 0x36, 0xde, 0x85, 0x49, 0xad, 0xf9, 0xec,
- 0xaa, 0x50, 0xea, 0x36, 0x9c, 0x00, 0x07, 0x32, 0x13, 0x5d, 0x15, 0x6c, 0x06, 0xc4, 0xe1, 0x32,
- 0x23, 0x04, 0xe3, 0xef, 0xa9, 0xd2, 0x8a, 0xd8, 0x89, 0xd8, 0xb5, 0x5a, 0xec, 0x07, 0x99, 0x48,
- 0x76, 0x4a, 0xec, 0x07, 0xe1, 0x6e, 0x70, 0x95, 0xaf, 0xcd, 0x6c, 0x62, 0x6d, 0x8e, 0x8b, 0x91,
- 0xc8, 0xd9, 0x07, 0x3e, 0x5f, 0x91, 0xe1, 0x4c, 0xcd, 0x7d, 0xf4, 0x99, 0xfa, 0x3e, 0x4c, 0xdc,
- 0xb7, 0xdb, 0xf6, 0x2e, 0x6d, 0xb0, 0x16, 0xf0, 0xbd, 0x67, 0x6c, 0xe9, 0xf9, 0xe3, 0xa3, 0xe2,
- 0xb9, 0x16, 0x87, 0x63, 0x2b, 0xd5, 0x49, 0xa4, 0x11, 0x90, 0x1b, 0x72, 0x65, 0x0f, 0xa7, 0xac,
- 0xec, 0x49, 0x51, 0xfb, 0x30, 0xae, 0x6c, 0xb1, 0x9e, 0x8d, 0xdf, 0x19, 0xc3, 0x36, 0x92, 0xd7,
- 0x61, 0xc4, 0xa4, 0xbb, 0xec, 0xa8, 0xc9, 0x44, 0x83, 0xe4, 0x21, 0x44, 0xed, 0x18, 0x8e, 0x83,
- 0x72, 0x06, 0x6d, 0xf8, 0x7b, 0xce, 0x4e, 0x20, 0x7a, 0x27, 0x94, 0x33, 0x04, 0x58, 0x91, 0x33,
- 0x04, 0x44, 0xbf, 0xce, 0x72, 0x18, 0xdb, 0xfd, 0xcc, 0x4a, 0x4d, 0x74, 0x9a, 0xec, 0x61, 0xb3,
- 0xa2, 0x6c, 0x23, 0x9e, 0x26, 0x25, 0x30, 0x6c, 0x72, 0x0b, 0xc6, 0x4a, 0xf5, 0xba, 0xdb, 0x55,
- 0xee, 0x8c, 0x7c, 0xdd, 0x72, 0xa0, 0xae, 0x22, 0x89, 0x50, 0x49, 0x0d, 0xc6, 0x97, 0xd9, 0x45,
- 0xcb, 0x29, 0xdb, 0xf5, 0x3d, 0xd9, 0x49, 0x72, 0x0f, 0x53, 0x4a, 0xa2, 0x95, 0x4b, 0x11, 0x58,
- 0x67, 0x40, 0x55, 0xc9, 0xa0, 0xe0, 0x92, 0x0d, 0x18, 0xaf, 0xd1, 0xba, 0x47, 0x83, 0x5a, 0xe0,
- 0x7a, 0x34, 0xb6, 0x25, 0x2b, 0x25, 0x4b, 0x17, 0xe5, 0x5d, 0xcf, 0x47, 0xa0, 0xe5, 0x33, 0xa8,
- 0xca, 0x55, 0x41, 0xe6, 0x42, 0x7b, 0xcb, 0xf5, 0x0e, 0x2b, 0x4b, 0x62, 0x9b, 0x8e, 0xce, 0x74,
- 0x0e, 0x56, 0x85, 0x76, 0x06, 0x69, 0x6c, 0xeb, 0x42, 0x3b, 0xc7, 0xc2, 0x91, 0xaa, 0xd4, 0x50,
- 0xb6, 0x12, 0x9b, 0xf6, 0x74, 0xd4, 0xcb, 0x08, 0x56, 0x46, 0xaa, 0xe1, 0xa3, 0x64, 0xa6, 0x8d,
- 0x94, 0xc0, 0x22, 0x1d, 0x20, 0x72, 0xd4, 0xb8, 0xa0, 0xdb, 0xa4, 0xbe, 0x2f, 0xf6, 0xf2, 0xf3,
- 0xb1, 0xc1, 0x8f, 0x10, 0x96, 0x5e, 0x11, 0xcc, 0x2f, 0xc8, 0x69, 0x20, 0xee, 0x69, 0xac, 0x50,
- 0xa9, 0x27, 0x85, 0x37, 0x79, 0x0b, 0x60, 0xf9, 0x71, 0x40, 0xbd, 0xb6, 0xdd, 0x0c, 0xf5, 0x60,
- 0xa8, 0xfa, 0xa1, 0x02, 0xaa, 0x0f, 0xb4, 0x82, 0x4c, 0xca, 0x30, 0x59, 0xf2, 0xfd, 0x6e, 0x8b,
- 0x9a, 0x6e, 0x93, 0x96, 0xcc, 0x35, 0xdc, 0xf7, 0xc7, 0x96, 0x2e, 0x1c, 0x1f, 0x15, 0xcf, 0xdb,
- 0x58, 0x60, 0x79, 0x6e, 0x93, 0x5a, 0xb6, 0xa7, 0xce, 0x6e, 0x9d, 0x86, 0x3c, 0x00, 0x78, 0xd0,
- 0xa1, 0xed, 0x1a, 0xb5, 0xbd, 0xfa, 0x5e, 0x6c, 0x9b, 0x8f, 0x0a, 0x96, 0x5e, 0x10, 0x2d, 0x9c,
- 0x73, 0x3b, 0xb4, 0xed, 0x23, 0x4c, 0xfd, 0xaa, 0x08, 0x93, 0x6c, 0xc1, 0x74, 0xb5, 0x74, 0x7f,
- 0xdd, 0x6d, 0x3a, 0xf5, 0x43, 0x21, 0x39, 0x4d, 0xa1, 0x76, 0xf0, 0xac, 0xe0, 0x1a, 0x2b, 0xe5,
- 0xdb, 0x93, 0x63, 0xb7, 0xac, 0x0e, 0x42, 0x2d, 0x21, 0x3f, 0xc5, 0xb9, 0x90, 0x0f, 0xd8, 0x1c,
- 0xf4, 0x99, 0x30, 0xb8, 0x61, 0xef, 0xfa, 0xf3, 0xd3, 0x9a, 0xb6, 0xab, 0xb4, 0x55, 0xbb, 0xa6,
- 0x94, 0x72, 0x31, 0x65, 0x81, 0x4f, 0x44, 0x84, 0x5a, 0x81, 0xbd, 0xeb, 0xeb, 0x13, 0x31, 0xc4,
- 0x26, 0x77, 0x01, 0x2a, 0x6e, 0xbd, 0xdb, 0xa2, 0xed, 0xa0, 0xb2, 0x34, 0x5f, 0xd0, 0xaf, 0x02,
- 0x61, 0x41, 0xb4, 0xb5, 0x35, 0xdc, 0xba, 0x36, 0x13, 0x15, 0xea, 0x85, 0xf7, 0xa0, 0x10, 0xff,
- 0x90, 0x53, 0x2a, 0xb0, 0x26, 0x0b, 0x53, 0x4a, 0xeb, 0x97, 0x1f, 0x3b, 0x7e, 0xe0, 0x1b, 0xdf,
- 0xd4, 0x56, 0x20, 0xdb, 0x1d, 0xee, 0xd1, 0xc3, 0x75, 0x8f, 0xee, 0x38, 0x8f, 0xc5, 0x66, 0x86,
- 0xbb, 0xc3, 0x3e, 0x3d, 0xb4, 0x3a, 0x08, 0x55, 0x77, 0x87, 0x10, 0x95, 0x7c, 0x06, 0xf2, 0xf7,
- 0xee, 0xd7, 0xee, 0xd1, 0xc3, 0x6a, 0x45, 0x1c, 0x54, 0x9c, 0xac, 0xe5, 0x5b, 0x8c, 0x54, 0x9b,
- 0x6b, 0x21, 0xa6, 0xb1, 0x14, 0xed, 0x84, 0xac, 0xe6, 0x72, 0xb3, 0xeb, 0x07, 0xd4, 0xab, 0x56,
- 0xd4, 0x9a, 0xeb, 0x1c, 0x18, 0xdb, 0x97, 0x42, 0x54, 0xe3, 0x5f, 0x67, 0x71, 0x17, 0x64, 0x13,
- 0xbe, 0xda, 0xf6, 0x03, 0xbb, 0x5d, 0xa7, 0x21, 0x03, 0x9c, 0xf0, 0x8e, 0x80, 0xc6, 0x26, 0x7c,
- 0x84, 0xac, 0x57, 0x9d, 0x1d, 0xb8, 0x6a, 0x56, 0xa5, 0xd4, 0x5c, 0x54, 0x2b, 0xaa, 0x7a, 0xd5,
- 0x13, 0xd0, 0x58, 0x95, 0x11, 0x32, 0xb9, 0x0c, 0xa3, 0xd5, 0xd2, 0xfd, 0x52, 0x37, 0xd8, 0xc3,
- 0x3d, 0x38, 0xcf, 0xe5, 0x73, 0x36, 0x5b, 0xed, 0x6e, 0xb0, 0x67, 0xca, 0x42, 0x72, 0x1d, 0xef,
- 0x3d, 0x6d, 0x1a, 0x70, 0x35, 0xac, 0x38, 0x74, 0x7d, 0x0e, 0x8a, 0x5d, 0x7b, 0x18, 0x88, 0xbc,
- 0x06, 0xc3, 0x0f, 0xd7, 0xcb, 0xd5, 0x8a, 0xb8, 0x38, 0xe3, 0x49, 0xf4, 0xa8, 0x53, 0xd7, 0xbf,
- 0x84, 0xa3, 0x90, 0x65, 0x98, 0xaa, 0xd1, 0x7a, 0xd7, 0x73, 0x82, 0xc3, 0x3b, 0x9e, 0xdb, 0xed,
- 0xf8, 0xf3, 0xa3, 0x58, 0x07, 0xae, 0x74, 0x5f, 0x94, 0x58, 0xbb, 0x58, 0xa4, 0x50, 0xc7, 0x88,
- 0x8c, 0xdf, 0xcd, 0x44, 0xdb, 0x24, 0xb9, 0xac, 0x89, 0x35, 0xa8, 0xbb, 0x61, 0x62, 0x8d, 0xaa,
- 0xbb, 0x41, 0x01, 0xc7, 0x04, 0x52, 0xee, 0xfa, 0x81, 0xdb, 0x5a, 0x6e, 0x37, 0x3a, 0xae, 0xd3,
- 0x0e, 0x90, 0x8a, 0x77, 0xbe, 0x71, 0x7c, 0x54, 0xbc, 0x58, 0xc7, 0x52, 0x8b, 0x8a, 0x62, 0x2b,
- 0xc6, 0x25, 0x85, 0xfa, 0x09, 0xc6, 0xc3, 0xf8, 0x83, 0xac, 0x76, 0xbc, 0xb1, 0xcf, 0x33, 0x69,
- 0xa7, 0xe9, 0xd4, 0xf1, 0x46, 0x8f, 0x0d, 0x0d, 0x67, 0x15, 0x7e, 0x9e, 0x17, 0x95, 0xf2, 0x1e,
- 0xd2, 0x79, 0xa7, 0x50, 0x93, 0x2f, 0xc0, 0x04, 0x93, 0x34, 0xc4, 0x4f, 0x7f, 0x3e, 0x8b, 0x9d,
- 0xfd, 0x02, 0x6a, 0xe1, 0x7c, 0xea, 0x85, 0x6c, 0x34, 0x11, 0x45, 0xa5, 0x20, 0x0d, 0x98, 0xdf,
- 0xf0, 0xec, 0xb6, 0xef, 0x04, 0xcb, 0xed, 0xba, 0x77, 0x88, 0x92, 0xd1, 0x72, 0xdb, 0xde, 0x6e,
- 0xd2, 0x06, 0x36, 0x37, 0xbf, 0x74, 0xe5, 0xf8, 0xa8, 0xf8, 0x72, 0xc0, 0x71, 0x2c, 0x1a, 0x22,
- 0x59, 0x94, 0x63, 0x29, 0x9c, 0x7b, 0x72, 0x62, 0x92, 0x94, 0xec, 0x56, 0x7c, 0x84, 0xe1, 0x42,
- 0x02, 0x4a, 0x52, 0xe1, 0x68, 0xb0, 0x3d, 0x4c, 0xfd, 0x4c, 0x95, 0xc0, 0xf8, 0x7f, 0x33, 0xd1,
- 0x01, 0x4c, 0xde, 0x81, 0x71, 0xb1, 0x62, 0x94, 0x79, 0x81, 0x3b, 0xa8, 0x5c, 0x5e, 0xb1, 0x91,
- 0x55, 0xd1, 0xd9, 0xbd, 0xbf, 0x54, 0x5e, 0x55, 0xe6, 0x06, 0xde, 0xfb, 0xed, 0x7a, 0x33, 0x4e,
- 0x25, 0xd1, 0xd8, 0x24, 0xd8, 0x58, 0xad, 0xe9, 0xbd, 0x82, 0x93, 0x20, 0x68, 0xfa, 0x29, 0xdd,
- 0xa0, 0x20, 0x3f, 0x79, 0xc3, 0xff, 0x97, 0x4c, 0xda, 0x39, 0x4f, 0x96, 0x60, 0x72, 0xcb, 0xf5,
- 0xf6, 0x71, 0x7c, 0x95, 0x4e, 0xc0, 0x91, 0x3f, 0x90, 0x05, 0xf1, 0x06, 0xe9, 0x24, 0xea, 0xb7,
- 0x29, 0xbd, 0xa1, 0x7f, 0x5b, 0x8c, 0x83, 0x46, 0xc0, 0xc6, 0x21, 0xe4, 0x18, 0xae, 0x0e, 0x1c,
- 0x87, 0xe8, 0x13, 0xb4, 0x29, 0xac, 0xa2, 0x1b, 0xff, 0x75, 0x46, 0x3d, 0xcf, 0x59, 0x27, 0x57,
- 0xdc, 0x96, 0xed, 0xb4, 0x95, 0xe6, 0xf0, 0x87, 0x25, 0x84, 0xc6, 0xbf, 0x44, 0x41, 0x26, 0x37,
- 0x21, 0xcf, 0x7f, 0x85, 0x7b, 0x2d, 0x6a, 0xb5, 0x04, 0xa1, 0x7e, 0x50, 0x48, 0xc4, 0xc4, 0xc8,
- 0xe4, 0x4e, 0x3b, 0x32, 0xbf, 0x93, 0x51, 0x8f, 0xe2, 0x8f, 0x7a, 0xd8, 0xc4, 0x0e, 0x99, 0xec,
- 0x69, 0x0e, 0x99, 0x27, 0x6e, 0xc2, 0xf7, 0x65, 0x60, 0x5c, 0xd1, 0x52, 0xb0, 0x36, 0xac, 0x7b,
- 0xee, 0x87, 0xb4, 0x1e, 0xe8, 0x6d, 0xe8, 0x70, 0x60, 0xac, 0x0d, 0x21, 0xea, 0x13, 0xb4, 0xc1,
- 0xf8, 0xf3, 0x8c, 0xb8, 0x23, 0x0d, 0xbc, 0xcd, 0xeb, 0x5b, 0x72, 0xf6, 0x34, 0x47, 0xe4, 0x17,
- 0x60, 0xd8, 0xa4, 0x0d, 0xc7, 0x17, 0xf7, 0x9b, 0x19, 0xf5, 0x3e, 0x86, 0x05, 0x91, 0xdc, 0xe4,
- 0xb1, 0x9f, 0xea, 0xf9, 0x86, 0xe5, 0x4c, 0x90, 0xad, 0xfa, 0xb7, 0x9b, 0xf4, 0xb1, 0xc3, 0x17,
- 0xa3, 0x38, 0x6a, 0xf1, 0x78, 0x73, 0x7c, 0x6b, 0x87, 0x95, 0x08, 0x89, 0x5a, 0x5d, 0x78, 0x1a,
- 0x8d, 0xf1, 0x01, 0x40, 0x54, 0x25, 0xb9, 0x07, 0x05, 0x31, 0x1b, 0x9c, 0xf6, 0x2e, 0x17, 0xa4,
- 0x44, 0x1f, 0x14, 0x8f, 0x8f, 0x8a, 0xcf, 0xd7, 0xc3, 0x32, 0x21, 0x75, 0x2a, 0x7c, 0x13, 0x84,
- 0xc6, 0x7f, 0x9c, 0x85, 0x6c, 0x09, 0x07, 0xe4, 0x1e, 0x3d, 0x0c, 0xec, 0xed, 0xdb, 0x4e, 0x53,
- 0x5b, 0x4c, 0xfb, 0x08, 0xb5, 0x76, 0x1c, 0x4d, 0x5d, 0xa1, 0x20, 0xb3, 0xc5, 0x74, 0xcf, 0xdb,
- 0x7e, 0x13, 0x09, 0x95, 0xc5, 0xb4, 0xef, 0x6d, 0xbf, 0x19, 0x27, 0x0b, 0x11, 0x89, 0x01, 0x23,
- 0x7c, 0x61, 0x89, 0x39, 0x08, 0xc7, 0x47, 0xc5, 0x11, 0xbe, 0xfe, 0x4c, 0x51, 0x42, 0xce, 0x43,
- 0xae, 0xb6, 0xbe, 0x26, 0x76, 0x40, 0x54, 0x0b, 0xfa, 0x9d, 0xb6, 0xc9, 0x60, 0xac, 0xce, 0xd5,
- 0x4a, 0x69, 0x1d, 0x15, 0x01, 0xc3, 0x51, 0x9d, 0xcd, 0x86, 0xdd, 0x89, 0xab, 0x02, 0x42, 0x44,
- 0xf2, 0x2e, 0x8c, 0xdf, 0xab, 0x94, 0x57, 0x5c, 0x9f, 0xef, 0x5e, 0x23, 0xd1, 0xe4, 0xdf, 0x6f,
- 0xd4, 0x2d, 0xd4, 0xc4, 0xc7, 0x8f, 0x01, 0x05, 0xdf, 0xf8, 0xe1, 0x2c, 0x8c, 0x2b, 0x7a, 0x32,
- 0xf2, 0x19, 0xf1, 0x40, 0x9a, 0xd1, 0x6e, 0x00, 0x0a, 0x06, 0x2b, 0xe5, 0x4a, 0x95, 0x96, 0xdb,
- 0xa0, 0xe2, 0xb9, 0x34, 0x52, 0x60, 0x64, 0x07, 0x51, 0x60, 0xbc, 0x05, 0xc0, 0xe7, 0x00, 0x7e,
- 0xb2, 0x22, 0x4e, 0x28, 0x76, 0x12, 0xea, 0xb8, 0x44, 0xc8, 0xe4, 0x21, 0xcc, 0x6e, 0x78, 0x5d,
- 0x3f, 0xa8, 0x1d, 0xfa, 0x01, 0x6d, 0x31, 0x6e, 0xeb, 0xae, 0xdb, 0x14, 0xf3, 0xef, 0xe5, 0xe3,
- 0xa3, 0xe2, 0x25, 0x34, 0xee, 0xb0, 0x7c, 0x2c, 0xc7, 0x0f, 0xb0, 0x3a, 0xae, 0xab, 0xaa, 0x35,
- 0xd2, 0x18, 0x18, 0x26, 0x4c, 0xa8, 0x4a, 0x11, 0x76, 0xb2, 0x88, 0xc7, 0x24, 0xa1, 0xea, 0x56,
- 0x4e, 0x16, 0xf1, 0x95, 0xc9, 0xc7, 0x2d, 0x9d, 0xc4, 0xf8, 0x8c, 0xaa, 0x90, 0x1b, 0x74, 0x61,
- 0x1b, 0x3f, 0x90, 0x89, 0xb6, 0x91, 0x87, 0x37, 0xc8, 0xdb, 0x30, 0xc2, 0x1f, 0xef, 0xc4, 0x1b,
- 0xe7, 0x99, 0xf0, 0x52, 0xab, 0xbe, 0xec, 0x71, 0x4d, 0xf8, 0x1f, 0xf1, 0x07, 0xfe, 0xe7, 0x4c,
- 0x41, 0x12, 0x2a, 0xd1, 0x75, 0x7d, 0x9a, 0xe4, 0x8e, 0xea, 0xe2, 0x1b, 0x69, 0x4a, 0x74, 0xe3,
- 0xc7, 0x87, 0x61, 0x4a, 0x47, 0x53, 0x5f, 0xf8, 0x32, 0x03, 0xbd, 0xf0, 0x7d, 0x01, 0xf2, 0xac,
- 0x3f, 0x9c, 0x3a, 0x95, 0x12, 0xd9, 0xcb, 0xf8, 0xb4, 0x20, 0x60, 0xda, 0xcb, 0x35, 0xf0, 0xe1,
- 0x60, 0x77, 0x5c, 0x33, 0xa4, 0x22, 0x8b, 0xca, 0x33, 0x54, 0x2e, 0x12, 0x52, 0xe4, 0x33, 0x94,
- 0xba, 0x1e, 0xc2, 0x07, 0xa9, 0x37, 0x60, 0x84, 0xc9, 0xf7, 0xa1, 0x0a, 0x06, 0xbf, 0x92, 0x89,
- 0xfe, 0x31, 0x13, 0x15, 0x8e, 0x44, 0xb6, 0x20, 0xbf, 0x6a, 0xfb, 0x41, 0x8d, 0xd2, 0xf6, 0x00,
- 0x6f, 0xf7, 0x45, 0xd1, 0x55, 0xb3, 0xf8, 0x30, 0xee, 0x53, 0xda, 0x8e, 0x3d, 0xbe, 0x86, 0xcc,
- 0xc8, 0x57, 0x01, 0xca, 0x6e, 0x3b, 0xf0, 0xdc, 0xe6, 0xaa, 0xbb, 0x3b, 0x3f, 0x82, 0x77, 0xdf,
- 0x8b, 0xb1, 0x01, 0x88, 0x10, 0xf8, 0xf5, 0x37, 0x54, 0xf0, 0xd4, 0x79, 0x81, 0xd5, 0x74, 0x77,
- 0xd5, 0x75, 0x10, 0xe1, 0x93, 0xdb, 0x50, 0x90, 0x8a, 0x85, 0xcd, 0xce, 0xae, 0x87, 0x13, 0x64,
- 0x34, 0x92, 0x3c, 0xe8, 0xe3, 0xc0, 0xea, 0x0a, 0xb8, 0xba, 0x53, 0xc6, 0x69, 0xc8, 0x57, 0xe0,
- 0x5c, 0x1c, 0x26, 0x47, 0x39, 0x1f, 0xc9, 0xe4, 0x2a, 0xbb, 0x94, 0x79, 0xdf, 0x8b, 0x05, 0xb9,
- 0x03, 0xd3, 0xac, 0x43, 0xee, 0x53, 0xdb, 0xef, 0x72, 0x03, 0x2b, 0xa1, 0x9a, 0xb9, 0x20, 0x35,
- 0x51, 0x7c, 0x15, 0x36, 0xdd, 0xfa, 0xbe, 0x82, 0x64, 0xc6, 0xa9, 0x8c, 0xa3, 0x2c, 0x9c, 0x4d,
- 0xc7, 0x25, 0xdf, 0x0b, 0x67, 0x44, 0xbf, 0x34, 0xa9, 0xa7, 0xe0, 0x0c, 0x60, 0x13, 0xf0, 0x86,
- 0xe8, 0xef, 0x17, 0xeb, 0x21, 0x83, 0x70, 0xe3, 0x60, 0x2c, 0x62, 0x83, 0x9b, 0x5e, 0x0f, 0xf9,
- 0x3a, 0x8c, 0xab, 0xd5, 0x66, 0x07, 0x37, 0xaf, 0xe8, 0x53, 0x97, 0xca, 0x92, 0xd8, 0x30, 0x6d,
- 0xd2, 0x6f, 0x74, 0xa9, 0x1f, 0x48, 0x03, 0x0f, 0x71, 0x74, 0x9f, 0x4f, 0xd4, 0x22, 0x11, 0x42,
- 0xfd, 0x4f, 0xc1, 0xe3, 0x94, 0x96, 0x34, 0xc3, 0xfb, 0x16, 0x63, 0x1f, 0xe7, 0x67, 0x7c, 0x27,
- 0x0b, 0xe7, 0x7a, 0x4c, 0x4b, 0xb6, 0x73, 0xa1, 0x60, 0xa5, 0xec, 0x5c, 0x31, 0x79, 0x8a, 0x5b,
- 0x87, 0x5d, 0x82, 0xac, 0x10, 0x45, 0x86, 0x96, 0x0a, 0xc7, 0x47, 0xc5, 0x09, 0x6d, 0xc5, 0x65,
- 0xab, 0x15, 0x72, 0x17, 0x86, 0x58, 0x37, 0x0c, 0x60, 0xe4, 0x20, 0xb5, 0x7f, 0x53, 0x81, 0xa3,
- 0x2e, 0x74, 0xec, 0x1b, 0xe4, 0x41, 0x3e, 0x03, 0xb9, 0x8d, 0x8d, 0x55, 0x5c, 0xe5, 0x39, 0x9c,
- 0xa5, 0x93, 0x41, 0xd0, 0xd4, 0x36, 0x95, 0x49, 0x46, 0x1b, 0xf6, 0x88, 0xc9, 0xd0, 0xc9, 0x97,
- 0x62, 0xc6, 0x57, 0xaf, 0xf5, 0x5f, 0x92, 0x83, 0xdb, 0x62, 0x3d, 0x81, 0x09, 0x94, 0xf1, 0x0b,
- 0xd9, 0x68, 0xb7, 0xbd, 0xed, 0x34, 0x03, 0xea, 0x91, 0x05, 0xbe, 0x79, 0x46, 0x62, 0xb4, 0x19,
- 0xfe, 0x26, 0xf3, 0xd1, 0x4e, 0xcc, 0x59, 0x85, 0x5b, 0xee, 0x6b, 0xca, 0x96, 0x9b, 0xc3, 0x2d,
- 0x77, 0xaa, 0xe7, 0xe6, 0xfa, 0x5a, 0xca, 0x0e, 0x82, 0x5b, 0x66, 0xca, 0x2e, 0xf1, 0x32, 0x4c,
- 0xae, 0xb9, 0xcb, 0x8f, 0x83, 0x10, 0x91, 0x6d, 0x95, 0x79, 0x53, 0x07, 0x32, 0x8e, 0x0f, 0x9a,
- 0x0d, 0xea, 0x6d, 0xec, 0xd9, 0x6d, 0xcd, 0xca, 0xc0, 0x4c, 0xc0, 0x19, 0xee, 0x1a, 0x3d, 0xd0,
- 0x71, 0x47, 0x39, 0x6e, 0x1c, 0x6e, 0x7c, 0x7f, 0x56, 0x76, 0xc6, 0xc3, 0xc5, 0x67, 0xf4, 0x35,
- 0xfb, 0x4d, 0xed, 0x35, 0x7b, 0x36, 0xd4, 0xc3, 0x87, 0xa6, 0x19, 0x8b, 0x27, 0x58, 0x74, 0xfc,
- 0xbd, 0x11, 0x98, 0x50, 0xd1, 0x59, 0x3f, 0x94, 0x1a, 0x0d, 0x4f, 0xed, 0x07, 0xbb, 0xd1, 0xf0,
- 0x4c, 0x84, 0x6a, 0x06, 0x1c, 0xb9, 0xbe, 0x06, 0x1c, 0x5f, 0x83, 0xb1, 0x72, 0xab, 0xa1, 0x3d,
- 0x2b, 0x1b, 0x29, 0x9f, 0x77, 0x2d, 0x44, 0xe2, 0x6b, 0x21, 0x54, 0x2f, 0xd7, 0x5b, 0x8d, 0xe4,
- 0x63, 0x72, 0xc4, 0x52, 0xb3, 0xfd, 0x18, 0x7e, 0x12, 0xdb, 0x8f, 0x5b, 0x30, 0xb6, 0xe9, 0xd3,
- 0x8d, 0x6e, 0xbb, 0x4d, 0x9b, 0x38, 0xad, 0xf2, 0xfc, 0x56, 0xd6, 0xf5, 0xa9, 0x15, 0x20, 0x54,
- 0xfd, 0x80, 0x10, 0x55, 0x1d, 0xe0, 0xd1, 0x3e, 0x03, 0x7c, 0x13, 0xf2, 0xeb, 0x94, 0x7a, 0xd8,
- 0xa7, 0xe3, 0x91, 0xf0, 0xdd, 0xa1, 0xd4, 0xb3, 0x58, 0xc7, 0x6a, 0x36, 0x21, 0x02, 0x51, 0x33,
- 0x24, 0x99, 0x18, 0xd0, 0x90, 0x84, 0xbc, 0x08, 0x13, 0x9d, 0xee, 0x76, 0xd3, 0xa9, 0x23, 0x5f,
- 0x61, 0x81, 0x62, 0x8e, 0x73, 0x18, 0x63, 0xeb, 0x93, 0x2f, 0xc1, 0x24, 0xde, 0x46, 0xc3, 0x29,
- 0x37, 0xa5, 0xbd, 0xbf, 0x6a, 0x65, 0x5c, 0x26, 0xad, 0x33, 0x90, 0x95, 0x62, 0x28, 0xa5, 0x33,
- 0x22, 0x77, 0x61, 0x74, 0xd7, 0x09, 0xac, 0xbd, 0xee, 0xf6, 0xfc, 0xb4, 0x66, 0x65, 0x74, 0xc7,
- 0x09, 0x56, 0xba, 0xdb, 0x7c, 0xc8, 0x43, 0xd6, 0xb8, 0xe3, 0xed, 0x3a, 0xc1, 0x5e, 0x57, 0x55,
- 0x9e, 0x8f, 0xec, 0x22, 0xee, 0x42, 0x0d, 0xa6, 0xf4, 0x59, 0xf1, 0x14, 0x9e, 0x74, 0x43, 0x03,
- 0x9b, 0x7c, 0x61, 0xec, 0xee, 0x50, 0x1e, 0x0a, 0xe3, 0xdc, 0xb4, 0xc6, 0x84, 0xf5, 0xb0, 0x7f,
- 0x4c, 0x72, 0xaf, 0xbb, 0x4d, 0xbd, 0x36, 0x0d, 0xa8, 0x2f, 0xae, 0x7e, 0xbe, 0x39, 0x54, 0xea,
- 0x74, 0x7c, 0xe3, 0x3f, 0xcb, 0xc2, 0x68, 0x69, 0xab, 0x56, 0x6d, 0xef, 0xb8, 0xf8, 0x30, 0x1b,
- 0xbe, 0xc7, 0xa9, 0x0f, 0xb3, 0xe1, 0x7b, 0x9c, 0xfa, 0x0a, 0x77, 0x3d, 0xe5, 0xf2, 0x8e, 0xb6,
- 0xdb, 0xca, 0xe5, 0x5d, 0x53, 0x3b, 0x44, 0x4f, 0x93, 0xb9, 0x01, 0x9e, 0x26, 0x43, 0xed, 0xf1,
- 0xd0, 0xc9, 0xda, 0xe3, 0xb7, 0x61, 0xbc, 0xda, 0x0e, 0xe8, 0xae, 0x17, 0xad, 0x9a, 0x50, 0x91,
- 0x10, 0x82, 0xd5, 0x0b, 0x9d, 0x82, 0xcd, 0xa6, 0x24, 0xd7, 0x58, 0x87, 0x9a, 0x6a, 0x9c, 0x92,
- 0x5c, 0xb1, 0x1d, 0xd3, 0x02, 0x49, 0x44, 0xa3, 0x12, 0x9b, 0x6f, 0xd2, 0xfc, 0x83, 0x8b, 0x50,
- 0x53, 0xd1, 0x93, 0x0d, 0xeb, 0xd8, 0xa5, 0x99, 0x74, 0xf3, 0x0f, 0xe3, 0x6f, 0x65, 0x60, 0x2e,
- 0x6d, 0x1a, 0x91, 0xf7, 0x60, 0xc2, 0xf5, 0x76, 0xed, 0xb6, 0xf3, 0xdd, 0xbc, 0x45, 0x8a, 0xaa,
- 0x52, 0x85, 0xab, 0x0a, 0x1a, 0x15, 0xce, 0x3a, 0x44, 0x69, 0xb9, 0xae, 0x59, 0x49, 0xed, 0x10,
- 0x05, 0x6c, 0xfc, 0x48, 0x16, 0xc6, 0x4b, 0x9d, 0xce, 0x33, 0x6e, 0x1a, 0xf8, 0x39, 0xed, 0x00,
- 0x91, 0xf7, 0xf2, 0xb0, 0x5d, 0x03, 0x59, 0x05, 0xfe, 0x5a, 0x16, 0xa6, 0x63, 0x14, 0xea, 0xd7,
- 0x67, 0x06, 0x34, 0x08, 0xcc, 0x0e, 0x68, 0x10, 0x98, 0x1b, 0xcc, 0x20, 0x70, 0xe8, 0x49, 0x0e,
- 0x85, 0x57, 0x21, 0x57, 0xea, 0x74, 0xe2, 0x86, 0x05, 0x9d, 0xce, 0xc3, 0x9b, 0x5c, 0xb7, 0x62,
- 0x77, 0x3a, 0x26, 0xc3, 0xd0, 0x76, 0xea, 0x91, 0x01, 0x77, 0x6a, 0xe3, 0x0d, 0x18, 0x43, 0x5e,
- 0x68, 0x86, 0x77, 0x09, 0x70, 0x8b, 0x11, 0x16, 0x78, 0x5a, 0x5d, 0x62, 0xf3, 0xf9, 0xff, 0x33,
- 0x30, 0x8c, 0xbf, 0x9f, 0xd1, 0x39, 0xb6, 0xa8, 0xcd, 0xb1, 0x82, 0x32, 0xc7, 0x06, 0x99, 0x5d,
- 0xff, 0x20, 0x07, 0x50, 0x7e, 0x60, 0xd6, 0xb8, 0x0a, 0x8e, 0xdc, 0x86, 0x69, 0xbb, 0xd9, 0x74,
- 0x0f, 0x68, 0xc3, 0x72, 0x3d, 0x67, 0xd7, 0x69, 0xf3, 0x9e, 0x93, 0xaf, 0xdd, 0x7a, 0x91, 0xfa,
- 0x06, 0x26, 0x8a, 0x1e, 0xf0, 0x12, 0x95, 0x4f, 0x8b, 0x06, 0x7b, 0x6e, 0x43, 0x2a, 0x13, 0x34,
- 0x3e, 0xa2, 0x28, 0x85, 0xcf, 0x7d, 0x5e, 0xa2, 0xf2, 0xd9, 0x43, 0xe5, 0x88, 0x94, 0x90, 0x35,
- 0x3e, 0xa2, 0x28, 0x85, 0x0f, 0xd7, 0xa8, 0xf8, 0x64, 0x15, 0x66, 0x10, 0x62, 0xd5, 0x3d, 0xda,
- 0xa0, 0xed, 0xc0, 0xb1, 0x9b, 0xbe, 0x50, 0x3f, 0xa1, 0xa2, 0x32, 0x51, 0xa8, 0x5e, 0xbf, 0xb1,
- 0xb0, 0x1c, 0x95, 0x91, 0x6b, 0x30, 0xda, 0xb2, 0x1f, 0x5b, 0xf6, 0x2e, 0xb7, 0xfb, 0x98, 0xe4,
- 0xea, 0x0a, 0x01, 0x52, 0x8f, 0x91, 0x96, 0xfd, 0xb8, 0xb4, 0x4b, 0x59, 0x2b, 0xe8, 0xe3, 0x8e,
- 0xeb, 0x2b, 0xad, 0x18, 0x89, 0x5a, 0x11, 0x2b, 0x52, 0x5b, 0x21, 0x8a, 0x44, 0x2b, 0x8c, 0x5f,
- 0xcd, 0xc0, 0xf3, 0x55, 0xfc, 0x8a, 0xe0, 0xb0, 0x4c, 0xdb, 0x01, 0xf5, 0xd6, 0xa9, 0xd7, 0x72,
- 0xf0, 0x15, 0xbc, 0x46, 0x03, 0xf2, 0x12, 0xe4, 0x4a, 0xe6, 0x9a, 0x98, 0xbf, 0x7c, 0xbf, 0xd7,
- 0x6c, 0x12, 0x58, 0x69, 0xa8, 0xd1, 0xca, 0x9e, 0xa0, 0xaa, 0x2e, 0xc1, 0x44, 0xc9, 0xf7, 0x9d,
- 0xdd, 0x76, 0x8b, 0xfb, 0x53, 0xe4, 0x34, 0xab, 0x07, 0x01, 0x4f, 0xbc, 0xb1, 0xa8, 0x24, 0xc6,
- 0x7f, 0x9e, 0x81, 0x99, 0x52, 0xa7, 0xa3, 0x7f, 0xb2, 0x6e, 0x71, 0x93, 0x19, 0xdc, 0xe2, 0xc6,
- 0x81, 0x29, 0xad, 0xb9, 0x7c, 0x4a, 0x45, 0x82, 0x6f, 0x9f, 0x9e, 0xe1, 0x9f, 0xdd, 0x09, 0x41,
- 0x96, 0xaf, 0x3f, 0x17, 0xc7, 0x18, 0x1b, 0xff, 0xc1, 0x28, 0xee, 0x21, 0x62, 0xb7, 0x15, 0x36,
- 0xa1, 0x99, 0x14, 0x9b, 0xd0, 0xb7, 0x40, 0x91, 0x70, 0xd4, 0x23, 0x4e, 0x91, 0x15, 0x55, 0x5d,
- 0x50, 0x84, 0x4c, 0xf6, 0xe3, 0xd6, 0xa1, 0x39, 0x6c, 0xcd, 0x4b, 0xf1, 0x05, 0xfc, 0x54, 0x0c,
- 0x43, 0x57, 0x80, 0x54, 0xdb, 0xf8, 0x84, 0x4d, 0x6b, 0xfb, 0x4e, 0xe7, 0x21, 0xf5, 0x9c, 0x9d,
- 0x43, 0xb1, 0x00, 0xb0, 0xf3, 0x1d, 0x51, 0x6a, 0xf9, 0xfb, 0x4e, 0xc7, 0x7a, 0x84, 0xe5, 0x66,
- 0x0a, 0x0d, 0x79, 0x1f, 0x46, 0x4d, 0x7a, 0xe0, 0x39, 0x81, 0xb4, 0x79, 0x9a, 0x0a, 0x55, 0x9b,
- 0x08, 0xe5, 0x6b, 0xc1, 0xe3, 0x3f, 0xd4, 0x5d, 0x51, 0x94, 0x93, 0x45, 0x2e, 0xa4, 0x70, 0xdb,
- 0xa6, 0xc9, 0xa8, 0xb5, 0xa5, 0xad, 0x5a, 0x2f, 0x19, 0x85, 0x5c, 0x85, 0x61, 0x94, 0x74, 0xc4,
- 0x5d, 0x00, 0x7d, 0x85, 0x50, 0x76, 0x56, 0xc5, 0x30, 0xc4, 0x20, 0x17, 0x01, 0xc2, 0x37, 0x62,
- 0x7f, 0x3e, 0x8f, 0x52, 0xba, 0x02, 0x89, 0x8b, 0x69, 0x63, 0xa7, 0x12, 0xd3, 0x56, 0xa1, 0x60,
- 0x72, 0xb7, 0xc3, 0x46, 0xa9, 0x83, 0x0f, 0x91, 0xfe, 0x3c, 0xe0, 0x4a, 0xbe, 0x74, 0x7c, 0x54,
- 0x7c, 0x41, 0xb8, 0x24, 0x36, 0x2c, 0xbb, 0xc3, 0xdf, 0x2f, 0xb5, 0x6d, 0x24, 0x4e, 0x49, 0xde,
- 0x82, 0x21, 0xb6, 0xf5, 0x0a, 0x3b, 0x52, 0xf9, 0xa0, 0x13, 0xed, 0xc6, 0x7c, 0x71, 0xd6, 0x5d,
- 0x6d, 0x4f, 0x40, 0x12, 0x62, 0xc1, 0x94, 0x3e, 0xdd, 0x85, 0x49, 0xd1, 0x7c, 0xd4, 0x9f, 0x7a,
- 0xb9, 0x78, 0xe5, 0x11, 0x30, 0xab, 0x8e, 0x40, 0x75, 0x05, 0xc4, 0x16, 0xe9, 0x32, 0xe4, 0x37,
- 0xca, 0xeb, 0xeb, 0xae, 0x17, 0xf0, 0xab, 0x4e, 0x74, 0xb2, 0x30, 0x98, 0x69, 0xb7, 0x77, 0x29,
- 0x3f, 0x8b, 0x83, 0x7a, 0xc7, 0xea, 0x30, 0x34, 0xf5, 0x2c, 0x96, 0xa4, 0x1f, 0x9f, 0x0d, 0xe9,
- 0xaf, 0x65, 0xe1, 0xa5, 0x50, 0x2a, 0x7a, 0xe0, 0xd5, 0x4a, 0xf7, 0x57, 0xab, 0x8d, 0x75, 0xa1,
- 0x26, 0x59, 0xf7, 0xdc, 0x47, 0x4e, 0x83, 0x7a, 0x0f, 0x6f, 0x9c, 0x70, 0xa6, 0xaf, 0xf2, 0x65,
- 0xce, 0x5f, 0xc3, 0xb2, 0x9a, 0xb5, 0x9d, 0x22, 0x7c, 0x8a, 0xed, 0xa9, 0xd3, 0x49, 0x3c, 0x8e,
- 0xad, 0x3c, 0x67, 0x46, 0x0c, 0xc8, 0x0f, 0x64, 0xe0, 0x6c, 0xfa, 0x87, 0x08, 0xd5, 0x59, 0x51,
- 0x5e, 0xd1, 0x7b, 0x7c, 0xed, 0xd2, 0xab, 0xc7, 0x47, 0xc5, 0x97, 0x7c, 0xbb, 0xd5, 0xb4, 0x9c,
- 0x06, 0xaf, 0xcd, 0xa9, 0x53, 0xab, 0x23, 0x10, 0xb4, 0x7a, 0x7b, 0xd4, 0xf4, 0x79, 0x90, 0x47,
- 0xfb, 0x7c, 0x66, 0x09, 0x20, 0x2f, 0x1f, 0x1c, 0x8c, 0xdf, 0xcc, 0x80, 0xb2, 0x04, 0xf3, 0x26,
- 0x6d, 0x38, 0x1e, 0xad, 0x07, 0xe2, 0x78, 0x17, 0xbe, 0x82, 0x1c, 0x16, 0x33, 0xae, 0x44, 0x18,
- 0x79, 0x0f, 0x46, 0xc5, 0x31, 0x24, 0xb6, 0x5d, 0xb9, 0x74, 0xc5, 0x53, 0x06, 0x77, 0x2a, 0x4d,
- 0x1c, 0x61, 0x92, 0x88, 0xed, 0xfa, 0x77, 0xb7, 0x36, 0xca, 0x4d, 0xdb, 0x69, 0xf9, 0xe2, 0x2c,
- 0xc1, 0x6e, 0xfd, 0xf0, 0x20, 0xb0, 0xea, 0x08, 0x55, 0x77, 0xfd, 0x10, 0xd5, 0xb8, 0x23, 0x5f,
- 0x52, 0x4e, 0xb0, 0x10, 0x2e, 0xc2, 0xf0, 0xc3, 0x48, 0x4f, 0xb7, 0x34, 0x76, 0x7c, 0x54, 0xe4,
- 0xd3, 0xc5, 0xe4, 0x70, 0x83, 0xc2, 0x58, 0x38, 0x75, 0x19, 0x2f, 0xf6, 0x03, 0x79, 0x4d, 0x72,
- 0x5e, 0x6c, 0x12, 0x9b, 0x08, 0x65, 0xa2, 0xde, 0x72, 0xbb, 0x81, 0x08, 0x59, 0x44, 0xc0, 0xee,
- 0xa1, 0xed, 0x06, 0xce, 0x74, 0xb5, 0x75, 0x02, 0x4d, 0x11, 0xa8, 0x7e, 0x2c, 0x03, 0x53, 0xfa,
- 0xb4, 0x25, 0xd7, 0x60, 0x44, 0xb8, 0x03, 0x66, 0x50, 0xed, 0xc9, 0xb8, 0x8d, 0x70, 0x47, 0x40,
- 0xcd, 0xfd, 0x4f, 0x60, 0x31, 0xb9, 0x51, 0x70, 0x10, 0x42, 0x13, 0xca, 0x8d, 0x75, 0x0e, 0x32,
- 0x65, 0x19, 0x31, 0xd8, 0x55, 0xd6, 0xef, 0x36, 0x03, 0xf5, 0xdd, 0xd2, 0x43, 0x88, 0x29, 0x4a,
- 0x8c, 0x32, 0x8c, 0xf0, 0xad, 0x35, 0x66, 0x00, 0x99, 0x39, 0x85, 0x01, 0xa4, 0x71, 0x94, 0x01,
- 0xa8, 0xd5, 0x56, 0xee, 0xd1, 0xc3, 0x75, 0xdb, 0xc1, 0xf3, 0x9b, 0x1f, 0x63, 0xf7, 0xc4, 0x1a,
- 0x9e, 0x10, 0x0f, 0xed, 0xfc, 0xc8, 0xdb, 0xa7, 0x87, 0xda, 0x43, 0xbb, 0x44, 0xc5, 0xb3, 0xd2,
- 0x73, 0x1e, 0xd9, 0x01, 0x65, 0x84, 0x59, 0x24, 0xe4, 0x67, 0x25, 0x87, 0xc6, 0x28, 0x15, 0x64,
- 0xf2, 0x55, 0x98, 0x8a, 0x7e, 0x85, 0xe6, 0x02, 0x53, 0xe1, 0x3e, 0xa1, 0x17, 0x2e, 0x5d, 0x3c,
- 0x3e, 0x2a, 0x2e, 0x28, 0x5c, 0xe3, 0x86, 0x04, 0x31, 0x66, 0xc6, 0x2f, 0x67, 0xd0, 0x48, 0x46,
- 0x36, 0xf0, 0x32, 0x0c, 0x85, 0x66, 0xdd, 0x13, 0x62, 0x13, 0xd6, 0x9f, 0x44, 0xb1, 0x9c, 0x89,
- 0x5b, 0x51, 0x4b, 0xf0, 0xe8, 0xd2, 0x5b, 0xc0, 0x4a, 0xc9, 0x1d, 0x18, 0x1d, 0xe8, 0x9b, 0x71,
- 0x8a, 0xa5, 0x7c, 0xab, 0xa4, 0xc6, 0x51, 0xb8, 0xbb, 0xb5, 0xf1, 0xc9, 0x1d, 0x85, 0x9f, 0xcc,
- 0xc2, 0x34, 0xeb, 0xd7, 0x52, 0x37, 0xd8, 0x73, 0x3d, 0x27, 0x38, 0x7c, 0x66, 0xf5, 0xc6, 0xef,
- 0x68, 0x57, 0xb2, 0x05, 0x79, 0x98, 0xa9, 0x6d, 0x1b, 0x48, 0x7d, 0xfc, 0x4f, 0x87, 0x61, 0x36,
- 0x85, 0x8a, 0xbc, 0xae, 0x3d, 0xed, 0xcc, 0x4b, 0x77, 0xff, 0xef, 0x1c, 0x15, 0x27, 0x24, 0xfa,
- 0x46, 0xe4, 0xfe, 0xbf, 0xa8, 0x5b, 0x9c, 0xf1, 0x9e, 0xc2, 0x97, 0x1e, 0xd5, 0xe2, 0x4c, 0xb7,
- 0x33, 0xbb, 0x0a, 0xc3, 0xa6, 0xdb, 0xa4, 0xd2, 0xca, 0x12, 0x05, 0x2e, 0x8f, 0x01, 0x34, 0xab,
- 0x12, 0x06, 0x20, 0x2b, 0x30, 0xca, 0xfe, 0xb8, 0x6f, 0x77, 0xc4, 0x7b, 0x29, 0x09, 0x95, 0x02,
- 0x08, 0xed, 0x38, 0xed, 0x5d, 0x55, 0x2f, 0xd0, 0xa4, 0x56, 0xcb, 0xee, 0x68, 0x92, 0x21, 0x47,
- 0xd4, 0xf4, 0x0b, 0xf9, 0xde, 0xfa, 0x85, 0xcc, 0x89, 0xfa, 0x85, 0x1d, 0x80, 0x9a, 0xb3, 0xdb,
- 0x76, 0xda, 0xbb, 0xa5, 0xe6, 0xae, 0x08, 0x9a, 0x70, 0xb5, 0xf7, 0x28, 0x5c, 0x8b, 0x90, 0x71,
- 0xe2, 0x3e, 0x8f, 0x46, 0x0d, 0x1c, 0x66, 0xd9, 0xcd, 0x5d, 0xcd, 0xb9, 0x4b, 0xe1, 0x4c, 0xd6,
- 0x00, 0x4a, 0xf5, 0xc0, 0x79, 0xc4, 0xa6, 0xb0, 0x2f, 0xc4, 0x38, 0xf9, 0xc9, 0xe5, 0xd2, 0x3d,
- 0x7a, 0x88, 0x57, 0x0f, 0xf9, 0x3c, 0x6c, 0x23, 0x2a, 0x5b, 0x09, 0x9a, 0xe7, 0x4e, 0xc4, 0x81,
- 0x74, 0xe0, 0x4c, 0xa9, 0xd1, 0x70, 0x58, 0x1b, 0xec, 0xe6, 0x06, 0x0f, 0x77, 0x81, 0xac, 0x27,
- 0xd2, 0x59, 0x5f, 0x95, 0x2f, 0xa1, 0x76, 0x48, 0x65, 0xc9, 0x28, 0x19, 0xb1, 0x6a, 0xd2, 0x19,
- 0x1b, 0x35, 0x98, 0xd2, 0x1b, 0xaf, 0x07, 0x7b, 0x98, 0x80, 0xbc, 0x59, 0x2b, 0x59, 0xb5, 0x95,
- 0xd2, 0x8d, 0x42, 0x86, 0x14, 0x60, 0x42, 0xfc, 0x5a, 0xb4, 0x16, 0xdf, 0xbc, 0x55, 0xc8, 0x6a,
- 0x90, 0x37, 0x6f, 0x2c, 0x16, 0x72, 0x0b, 0xd9, 0xf9, 0x4c, 0xcc, 0xcf, 0x72, 0xb4, 0x90, 0xe7,
- 0x2a, 0x61, 0xe3, 0xd7, 0x33, 0x90, 0x97, 0xdf, 0x4e, 0x6e, 0x41, 0xae, 0x56, 0x5b, 0x89, 0x79,
- 0x46, 0x46, 0xa7, 0x0c, 0xdf, 0x4f, 0x7d, 0x5f, 0x35, 0x7f, 0x67, 0x04, 0x8c, 0x6e, 0x63, 0xb5,
- 0x26, 0x64, 0x10, 0x49, 0x17, 0x6d, 0xde, 0x9c, 0x2e, 0xc5, 0x5d, 0xec, 0x16, 0xe4, 0xee, 0x6e,
- 0x6d, 0x88, 0x4b, 0x96, 0xa4, 0x8b, 0xf6, 0x53, 0x4e, 0xf7, 0xe1, 0x81, 0xba, 0xcb, 0x33, 0x02,
- 0xc3, 0x84, 0x71, 0x65, 0x22, 0xf3, 0x43, 0xb7, 0xe5, 0x86, 0x11, 0x0e, 0xc4, 0xa1, 0xcb, 0x20,
- 0xa6, 0x28, 0x61, 0xa2, 0xc8, 0xaa, 0x5b, 0xb7, 0x9b, 0xe2, 0xf4, 0x46, 0x51, 0xa4, 0xc9, 0x00,
- 0x26, 0x87, 0x1b, 0xbf, 0x9b, 0x81, 0x02, 0x0a, 0x6c, 0x68, 0xbe, 0xee, 0xee, 0xd3, 0xf6, 0xc3,
- 0x1b, 0xe4, 0x0d, 0xb9, 0xe4, 0x32, 0xa1, 0xa2, 0x6b, 0x18, 0x97, 0x5c, 0xec, 0x2d, 0x50, 0x2c,
- 0x3b, 0x25, 0x88, 0x44, 0x76, 0x70, 0xe7, 0xf3, 0x13, 0x82, 0x48, 0x14, 0x61, 0x18, 0x3f, 0x47,
- 0x6c, 0x8e, 0xf8, 0xe5, 0x01, 0x03, 0x98, 0x1c, 0xae, 0xec, 0x4d, 0x3f, 0x9d, 0x4d, 0xb4, 0x61,
- 0xf1, 0x13, 0xe5, 0xc0, 0xad, 0x37, 0x6e, 0xa0, 0xfd, 0xfa, 0x03, 0x98, 0x8b, 0x77, 0x09, 0x2a,
- 0x21, 0x4b, 0x30, 0xad, 0xc3, 0xa5, 0x3e, 0xf2, 0x5c, 0x6a, 0x5d, 0x0f, 0x17, 0xcd, 0x38, 0xbe,
- 0xf1, 0x7f, 0x64, 0x60, 0x0c, 0xff, 0x34, 0xbb, 0x4d, 0x34, 0x23, 0x2c, 0x6d, 0xd5, 0x84, 0x6a,
- 0x44, 0x15, 0xe6, 0xec, 0x03, 0xdf, 0x12, 0x7a, 0x14, 0x6d, 0x8f, 0x09, 0x91, 0x05, 0x29, 0x7f,
- 0xdf, 0x90, 0x4a, 0xb9, 0x90, 0x94, 0x3f, 0x84, 0xf8, 0x31, 0x52, 0x81, 0x8c, 0xc6, 0xc7, 0x5b,
- 0x35, 0x36, 0xfd, 0x54, 0xbb, 0x1e, 0xa4, 0x73, 0x9b, 0xba, 0xf1, 0x31, 0x47, 0x43, 0xb3, 0x9e,
- 0xad, 0x5a, 0xc9, 0x5c, 0xd3, 0xcc, 0x7a, 0xd8, 0x37, 0x6a, 0x7a, 0x29, 0x81, 0x64, 0xfc, 0xc2,
- 0x78, 0xbc, 0x03, 0xc5, 0x81, 0x77, 0xca, 0xb5, 0xf1, 0x36, 0x0c, 0x97, 0x9a, 0x4d, 0xf7, 0x40,
- 0xec, 0x12, 0xf2, 0xe6, 0x1a, 0xf6, 0x1f, 0x3f, 0xcf, 0x50, 0xad, 0xa7, 0x39, 0xa5, 0x32, 0x00,
- 0x29, 0xc3, 0x58, 0x69, 0xab, 0x56, 0xad, 0x56, 0x36, 0x36, 0xb8, 0x03, 0x5e, 0x6e, 0xe9, 0x15,
- 0xd9, 0x3f, 0x8e, 0xd3, 0xb0, 0xe2, 0xf6, 0x0a, 0x91, 0xfc, 0x1e, 0xd1, 0x91, 0x77, 0x01, 0xee,
- 0xba, 0x4e, 0x9b, 0xab, 0x31, 0x45, 0xe3, 0xd9, 0x0d, 0x7c, 0xfc, 0x43, 0xd7, 0x69, 0x0b, 0xbd,
- 0x27, 0xfb, 0xf6, 0x08, 0xc9, 0x54, 0xfe, 0x66, 0x3d, 0xbd, 0xe4, 0x72, 0xd3, 0xc0, 0xe1, 0xa8,
- 0xa7, 0xb7, 0xdd, 0x84, 0xbe, 0x4d, 0xa2, 0x91, 0x16, 0x4c, 0xd7, 0xba, 0xbb, 0xbb, 0x94, 0xed,
- 0xec, 0x42, 0x9f, 0x34, 0x22, 0xae, 0xd2, 0x61, 0xd8, 0x23, 0x7e, 0x1f, 0x61, 0x97, 0x21, 0x7f,
- 0xe9, 0x75, 0x36, 0x91, 0xbf, 0x7d, 0x54, 0x14, 0x76, 0x10, 0x4c, 0x54, 0xf3, 0x25, 0x7d, 0x52,
- 0x9b, 0x14, 0xe7, 0x4d, 0x1e, 0xc0, 0x08, 0x7f, 0x33, 0x12, 0x0e, 0x65, 0x2f, 0xf6, 0x59, 0x34,
- 0x1c, 0xb1, 0xd7, 0xab, 0x24, 0x2f, 0x25, 0x5b, 0x90, 0x2f, 0x3b, 0x5e, 0xbd, 0x49, 0xcb, 0x55,
- 0x71, 0xf6, 0xbf, 0xd4, 0x87, 0xa5, 0x44, 0xe5, 0xfd, 0x52, 0xc7, 0x5f, 0x75, 0x47, 0x95, 0x05,
- 0x24, 0x06, 0xf9, 0x5b, 0x19, 0x78, 0x3e, 0xfc, 0xfa, 0xd2, 0x2e, 0x6d, 0x07, 0xf7, 0xed, 0xa0,
- 0xbe, 0x47, 0x3d, 0xd1, 0x4b, 0x63, 0xfd, 0x7a, 0xe9, 0xf3, 0x89, 0x5e, 0xba, 0x12, 0xf5, 0x92,
- 0xcd, 0x98, 0x59, 0x2d, 0xce, 0x2d, 0xd9, 0x67, 0xfd, 0x6a, 0x25, 0x16, 0x40, 0xf4, 0x1a, 0x2a,
- 0x1c, 0x92, 0x5f, 0xe9, 0xd3, 0xe0, 0x08, 0x59, 0x38, 0x12, 0x85, 0xbf, 0x35, 0x4b, 0xd8, 0x10,
- 0x4a, 0xee, 0x49, 0xef, 0x4d, 0x2e, 0x95, 0x5c, 0xea, 0xc3, 0x9b, 0x7b, 0x74, 0xce, 0xf6, 0xf1,
- 0xd3, 0xe6, 0xa3, 0xbd, 0x6a, 0x6f, 0x0b, 0x41, 0xe4, 0x84, 0xd1, 0x5e, 0xb5, 0xa3, 0xd1, 0x6e,
- 0xda, 0xf1, 0xd1, 0x5e, 0xb5, 0xb7, 0x49, 0x99, 0xbb, 0x9c, 0x73, 0xff, 0xe4, 0x8b, 0xfd, 0xb8,
- 0x95, 0xd7, 0xf9, 0xc9, 0x9c, 0xe2, 0x7a, 0xfe, 0x65, 0x18, 0xab, 0x75, 0xec, 0x3a, 0x6d, 0x3a,
- 0x3b, 0x81, 0x78, 0x6a, 0x7f, 0xb9, 0x0f, 0xab, 0x10, 0x57, 0x3c, 0xad, 0xca, 0x9f, 0xea, 0x35,
- 0x29, 0xc4, 0x61, 0x5f, 0xb8, 0xb1, 0x7e, 0x5f, 0xbc, 0xb6, 0xf7, 0xfb, 0xc2, 0x8d, 0xf5, 0xfb,
- 0x42, 0xe6, 0xe8, 0xb4, 0x34, 0x99, 0x63, 0xfd, 0x3e, 0xe9, 0xc0, 0xd4, 0x06, 0xf5, 0x3c, 0x7b,
- 0xc7, 0xf5, 0x5a, 0x5c, 0x7f, 0xc9, 0x7d, 0xde, 0xae, 0xf6, 0xe3, 0xa7, 0x11, 0x70, 0xb5, 0x5d,
- 0x20, 0x61, 0x56, 0x5c, 0xe9, 0x19, 0xe3, 0xcf, 0xfa, 0x64, 0xc9, 0x09, 0xb6, 0xbb, 0xf5, 0x7d,
- 0x1a, 0xcc, 0xcf, 0x9c, 0xd8, 0x27, 0x21, 0x2e, 0xef, 0x93, 0x6d, 0xf9, 0x53, 0xed, 0x93, 0x10,
- 0xc7, 0xf8, 0xad, 0x1c, 0x9c, 0xeb, 0xd1, 0x05, 0x64, 0x4d, 0x6e, 0xb9, 0x19, 0x4d, 0x8b, 0xdd,
- 0x03, 0xfd, 0xda, 0x89, 0xbb, 0xf0, 0x2a, 0x14, 0x96, 0xef, 0xa1, 0xac, 0xce, 0x1f, 0x72, 0xca,
- 0x25, 0x79, 0x58, 0xa1, 0xa6, 0x95, 0xee, 0xa3, 0x8d, 0xb0, 0x7c, 0x00, 0xaa, 0x6b, 0xce, 0xf0,
- 0x09, 0xca, 0x85, 0xef, 0xcf, 0xc2, 0x10, 0x1e, 0x9c, 0xb1, 0x10, 0x60, 0x99, 0x53, 0x85, 0x00,
- 0xfb, 0x02, 0x4c, 0x2c, 0xdf, 0xe3, 0x37, 0xe9, 0x15, 0xdb, 0xdf, 0x13, 0xdb, 0x3a, 0x1a, 0x72,
- 0xd0, 0x7d, 0x4b, 0x5c, 0xbc, 0xf7, 0x6c, 0x4d, 0x66, 0xd5, 0x28, 0xc8, 0x26, 0xcc, 0xf2, 0x6f,
- 0x73, 0x76, 0x9c, 0x3a, 0x8f, 0x24, 0xe4, 0xd8, 0x4d, 0xb1, 0xc7, 0xbf, 0x74, 0x7c, 0x54, 0x2c,
- 0xd2, 0x7d, 0xb4, 0x7e, 0x16, 0xe5, 0x96, 0x8f, 0x08, 0xaa, 0x19, 0x74, 0x0a, 0xbd, 0x1a, 0xde,
- 0xc4, 0x1c, 0xc3, 0x0a, 0x59, 0x6d, 0xac, 0x6e, 0x86, 0xcb, 0x91, 0x8c, 0x3f, 0x1b, 0x86, 0x85,
- 0xde, 0xdb, 0x33, 0xf9, 0xa2, 0x3e, 0x80, 0x97, 0x4f, 0xdc, 0xd0, 0x4f, 0x1e, 0xc3, 0x2f, 0xc1,
- 0xdc, 0x72, 0x3b, 0xa0, 0x5e, 0xc7, 0x73, 0x64, 0x40, 0x9b, 0x15, 0xd7, 0x97, 0xd6, 0xe6, 0x68,
- 0xf6, 0x4d, 0xc3, 0x72, 0xa1, 0x5b, 0x45, 0xdb, 0x77, 0x85, 0x55, 0x2a, 0x07, 0xb2, 0x0c, 0x53,
- 0x0a, 0xbc, 0xd9, 0xdd, 0x55, 0x5f, 0xa7, 0x54, 0x9e, 0xcd, 0xae, 0x6a, 0x8a, 0x1b, 0x23, 0x42,
- 0x8b, 0x76, 0x76, 0x65, 0xac, 0xdf, 0xdd, 0xba, 0x57, 0x13, 0xc3, 0xc9, 0x2d, 0xda, 0x11, 0x6a,
- 0x7d, 0x78, 0xb0, 0xaf, 0xed, 0xaf, 0x11, 0xf2, 0xc2, 0x2f, 0xe7, 0xc4, 0x8c, 0x7a, 0x09, 0x72,
- 0xb5, 0xee, 0xb6, 0xfa, 0xe6, 0xe6, 0x6b, 0x07, 0x1c, 0x2b, 0x25, 0x9f, 0x03, 0x30, 0x69, 0xc7,
- 0xf5, 0x9d, 0xc0, 0xf5, 0x0e, 0x55, 0x97, 0x4a, 0x2f, 0x84, 0xea, 0x5e, 0x1f, 0x12, 0x4a, 0x56,
- 0x60, 0x3a, 0xfa, 0xf5, 0xe0, 0xa0, 0x2d, 0x74, 0xc9, 0x63, 0x5c, 0xbb, 0x12, 0x91, 0x5b, 0x2e,
- 0x2b, 0x53, 0x8f, 0xec, 0x18, 0x19, 0x59, 0x84, 0xfc, 0x96, 0xeb, 0xed, 0xef, 0xb0, 0x31, 0x1e,
- 0x8a, 0x84, 0x8a, 0x03, 0x01, 0x53, 0x0f, 0x4f, 0x89, 0xc7, 0x96, 0xcb, 0x72, 0xfb, 0x91, 0xe3,
- 0xb9, 0xf8, 0xa2, 0xa7, 0xda, 0xb4, 0xd0, 0x08, 0xac, 0x39, 0xb3, 0x47, 0x60, 0x72, 0x15, 0x86,
- 0x4b, 0xf5, 0xc0, 0xf5, 0x84, 0x41, 0x0b, 0x9f, 0x29, 0x0c, 0xa0, 0xcd, 0x14, 0x06, 0x60, 0x9d,
- 0x68, 0xd2, 0x1d, 0xf1, 0xba, 0x83, 0x9d, 0xe8, 0xd1, 0x1d, 0xcd, 0x53, 0x9f, 0xee, 0x30, 0xa1,
- 0xc8, 0xa4, 0x3b, 0xa8, 0xf8, 0xd0, 0x02, 0xdc, 0xed, 0x24, 0x54, 0x66, 0x02, 0xcd, 0xf8, 0xfd,
- 0xb1, 0x9e, 0x53, 0x9e, 0x9d, 0x42, 0xa7, 0x9b, 0xf2, 0xab, 0xf6, 0x00, 0x53, 0xfe, 0xf5, 0xd0,
- 0x97, 0x44, 0x0d, 0x4f, 0x81, 0x10, 0xf5, 0x18, 0xe4, 0x38, 0x0b, 0xbf, 0x92, 0x3f, 0xcd, 0x24,
- 0x12, 0x9d, 0x94, 0x1d, 0xb4, 0x93, 0x72, 0x03, 0x75, 0x12, 0x59, 0x82, 0xc9, 0x30, 0x44, 0xe2,
- 0xba, 0x1d, 0x68, 0xdb, 0x5a, 0x18, 0xd7, 0xd2, 0xea, 0xd8, 0x81, 0xba, 0xad, 0xe9, 0x24, 0xe4,
- 0x1d, 0x18, 0x17, 0x0e, 0x55, 0xc8, 0x61, 0x38, 0xb2, 0x14, 0x92, 0xde, 0x57, 0x31, 0x7a, 0x15,
- 0x9d, 0xad, 0xe6, 0x75, 0xa7, 0x43, 0x9b, 0x4e, 0x9b, 0xd6, 0xf0, 0xb1, 0x42, 0xcc, 0x18, 0xfe,
- 0x68, 0x2b, 0x4a, 0x2c, 0xfe, 0x8e, 0xa1, 0xe9, 0x0f, 0x35, 0xa2, 0xf8, 0x64, 0x1d, 0x3d, 0xd5,
- 0x64, 0xe5, 0x76, 0x8a, 0xde, 0xaa, 0xbb, 0xeb, 0x48, 0x1b, 0x7a, 0x69, 0xa7, 0xe8, 0x59, 0x4d,
- 0x06, 0x8d, 0xd9, 0x29, 0x72, 0x54, 0x76, 0xc3, 0x61, 0x3f, 0xaa, 0x15, 0xf1, 0x92, 0x88, 0x37,
- 0x1c, 0x24, 0xd2, 0x1d, 0x17, 0x38, 0x92, 0xac, 0x66, 0xb9, 0x65, 0x3b, 0x4d, 0x11, 0x85, 0x20,
- 0xaa, 0x86, 0x32, 0x68, 0xbc, 0x1a, 0x44, 0x25, 0x75, 0x98, 0x30, 0xe9, 0xce, 0xba, 0xe7, 0x06,
- 0xb4, 0x1e, 0xd0, 0x86, 0x90, 0xea, 0xe4, 0xc5, 0x66, 0xc9, 0x75, 0xb9, 0xc4, 0x8a, 0xb6, 0xf1,
- 0x99, 0x6f, 0x1f, 0x15, 0x81, 0x81, 0xb8, 0x57, 0xcc, 0xf1, 0x51, 0xf1, 0x1c, 0x1b, 0xff, 0x8e,
- 0x24, 0x56, 0x4f, 0x27, 0x95, 0x29, 0xf9, 0x26, 0xdb, 0xaf, 0xc3, 0x2e, 0x89, 0x2a, 0x9b, 0xe8,
- 0x51, 0xd9, 0x9b, 0xa9, 0x95, 0x15, 0x95, 0xde, 0x4e, 0xad, 0x34, 0xb5, 0x12, 0xf2, 0x2e, 0x8c,
- 0x97, 0xab, 0x65, 0xb7, 0xbd, 0xe3, 0xec, 0xd6, 0x56, 0x4a, 0x28, 0x1a, 0x0a, 0x8f, 0xa8, 0xba,
- 0x63, 0xd5, 0x11, 0x6e, 0xf9, 0x7b, 0xb6, 0xe6, 0x18, 0x1b, 0xe1, 0x93, 0x3b, 0x30, 0x25, 0x7f,
- 0x9a, 0x74, 0x67, 0xd3, 0xac, 0xa2, 0x44, 0x28, 0xdd, 0xd0, 0x42, 0x0e, 0xac, 0x23, 0xba, 0x9e,
- 0x7a, 0x53, 0x88, 0x91, 0xb1, 0xc9, 0x58, 0xa1, 0x9d, 0xa6, 0x7b, 0xc8, 0x3e, 0x6f, 0xc3, 0xa1,
- 0x1e, 0xca, 0x80, 0x62, 0x32, 0x36, 0xc2, 0x12, 0x2b, 0x70, 0xf4, 0xf7, 0x53, 0x9d, 0x88, 0xac,
- 0xc1, 0x8c, 0x98, 0xe2, 0x0f, 0x1d, 0xdf, 0xd9, 0x76, 0x9a, 0x4e, 0x70, 0x88, 0xd2, 0x9f, 0x10,
- 0x60, 0xe4, 0xba, 0x78, 0x14, 0x96, 0x2a, 0xcc, 0x92, 0xa4, 0xc6, 0xaf, 0x67, 0xe1, 0x85, 0x7e,
- 0x37, 0x21, 0x52, 0xd3, 0x37, 0xb3, 0x2b, 0x03, 0xdc, 0x9e, 0x4e, 0xde, 0xce, 0x96, 0x61, 0xea,
- 0x81, 0x62, 0xd2, 0x17, 0x9a, 0x58, 0x62, 0x67, 0xa8, 0xc6, 0x7e, 0xfa, 0x6c, 0x8f, 0x11, 0x2d,
- 0x3c, 0x12, 0xdb, 0xdc, 0x47, 0x75, 0xd1, 0xbc, 0x05, 0x63, 0x65, 0xb7, 0x1d, 0xd0, 0xc7, 0x41,
- 0x2c, 0x20, 0x01, 0x07, 0xc6, 0xdd, 0x53, 0x25, 0xaa, 0xf1, 0xaf, 0xb3, 0x70, 0xa1, 0xef, 0x55,
- 0x80, 0x6c, 0xe8, 0xbd, 0x76, 0x75, 0x90, 0xfb, 0xc3, 0xc9, 0xdd, 0xb6, 0x98, 0xb0, 0xbb, 0x3b,
- 0xd1, 0x03, 0x6a, 0xe1, 0x7f, 0xcc, 0x88, 0x4e, 0xfa, 0x34, 0x8c, 0x62, 0x55, 0x61, 0x17, 0x71,
- 0x2d, 0x19, 0xee, 0xc2, 0x8e, 0xae, 0x25, 0xe3, 0x68, 0xe4, 0x26, 0xe4, 0xcb, 0x76, 0xb3, 0xa9,
- 0x84, 0x6b, 0x40, 0x69, 0xbe, 0x8e, 0xb0, 0x98, 0xf1, 0xa8, 0x44, 0x64, 0xb2, 0x0f, 0xff, 0x5b,
- 0x39, 0x2b, 0x70, 0xb3, 0x14, 0x64, 0xb1, 0xe3, 0x42, 0x41, 0xc6, 0x20, 0xaf, 0x75, 0x37, 0x74,
- 0x08, 0xe7, 0x41, 0x5e, 0x19, 0x40, 0x0b, 0xf2, 0xca, 0x00, 0xc6, 0x6f, 0xe4, 0xe0, 0x62, 0xff,
- 0xfb, 0x2c, 0xd9, 0xd4, 0x87, 0xe0, 0xb5, 0x81, 0x6e, 0xc1, 0x27, 0x8f, 0x81, 0x0c, 0x99, 0xcc,
- 0x3b, 0xe4, 0x4a, 0xd2, 0xfd, 0xe5, 0x3b, 0x47, 0x45, 0xc5, 0x22, 0xf9, 0xae, 0xeb, 0xb4, 0x95,
- 0x37, 0x93, 0x6f, 0x68, 0x92, 0x21, 0x7f, 0xbd, 0xbf, 0x35, 0xd8, 0x97, 0x45, 0x74, 0x7c, 0x5f,
- 0x19, 0x54, 0xa2, 0xfc, 0x3c, 0x14, 0xe2, 0xa4, 0xe4, 0x32, 0x0c, 0xe1, 0x07, 0x28, 0x3e, 0x3c,
- 0x31, 0x0e, 0x58, 0xbe, 0x70, 0x5f, 0xcc, 0x1d, 0x8c, 0x60, 0x81, 0xf6, 0x00, 0xba, 0x6e, 0x50,
- 0x44, 0xb0, 0xe0, 0xe6, 0x04, 0x49, 0xfd, 0x60, 0x8c, 0xc8, 0xf8, 0x8b, 0x0c, 0x9c, 0xef, 0xa9,
- 0x29, 0x20, 0xeb, 0xfa, 0x80, 0xbd, 0x72, 0x92, 0x6a, 0xe1, 0xc4, 0xb1, 0x5a, 0xf8, 0x71, 0x39,
- 0xf7, 0xdf, 0x83, 0x89, 0x5a, 0x77, 0x3b, 0x7e, 0x3f, 0xe3, 0xf1, 0x65, 0x14, 0xb8, 0x7a, 0x82,
- 0xa9, 0xf8, 0xac, 0xfd, 0xd2, 0xe0, 0x41, 0x18, 0x00, 0x29, 0x56, 0x87, 0xa1, 0x8b, 0x75, 0x32,
- 0x82, 0x87, 0x4e, 0x64, 0xfc, 0x5a, 0x36, 0xfd, 0xa2, 0x7b, 0xa7, 0xbc, 0x7e, 0x9a, 0x8b, 0xee,
- 0x9d, 0xf2, 0xfa, 0xc9, 0x6d, 0xff, 0xc7, 0xb2, 0xed, 0xf8, 0x30, 0x2b, 0x76, 0x3c, 0xa9, 0xe8,
- 0x14, 0x0f, 0xb3, 0x72, 0x77, 0xf4, 0xf5, 0x87, 0x59, 0x89, 0x4c, 0xde, 0x84, 0xb1, 0x55, 0x97,
- 0x07, 0xd7, 0x90, 0x2d, 0xe6, 0x3e, 0xc8, 0x12, 0xa8, 0x6e, 0x8f, 0x21, 0x26, 0xbb, 0x5b, 0xe8,
- 0x03, 0x2f, 0x8d, 0x2b, 0xf1, 0x6e, 0x11, 0x9b, 0x2e, 0xba, 0x3a, 0x50, 0x27, 0x33, 0xfe, 0xd3,
- 0x61, 0x30, 0x4e, 0x56, 0x66, 0x90, 0x0f, 0xf4, 0xbe, 0xbb, 0x36, 0xb0, 0x1a, 0x64, 0xa0, 0x2d,
- 0xb7, 0xd4, 0x6d, 0x38, 0xb4, 0x5d, 0xd7, 0x23, 0x63, 0x08, 0x98, 0xba, 0x05, 0x4a, 0xbc, 0x8f,
- 0xe2, 0xa8, 0xba, 0xf0, 0xdf, 0xe5, 0xa2, 0xa5, 0x16, 0x3b, 0x1a, 0x33, 0x1f, 0xe1, 0x68, 0x24,
- 0xf7, 0xa0, 0xa0, 0x42, 0x94, 0x17, 0x5a, 0x94, 0x5c, 0x34, 0x46, 0xb1, 0x8f, 0x4a, 0x10, 0xea,
- 0xe7, 0x6b, 0x6e, 0xf0, 0xf3, 0x35, 0x12, 0xdf, 0xb1, 0xfe, 0xa1, 0xa4, 0xf8, 0x1e, 0x77, 0x46,
- 0x57, 0xd0, 0x65, 0x24, 0x0d, 0x5f, 0x1c, 0x5a, 0xc3, 0x7a, 0x24, 0x8d, 0x94, 0x83, 0x4b, 0x45,
- 0x97, 0xc1, 0x40, 0xf0, 0xa7, 0xe2, 0x0b, 0x1f, 0x06, 0x03, 0xe1, 0xf4, 0x69, 0xc1, 0x40, 0x42,
- 0x12, 0x76, 0x00, 0x9a, 0xdd, 0x36, 0x8f, 0x26, 0x3e, 0x1a, 0x1d, 0x80, 0x5e, 0xb7, 0x6d, 0xc5,
- 0x23, 0x8a, 0x87, 0x88, 0xc6, 0x3f, 0x1a, 0x4a, 0x17, 0x0e, 0x42, 0x7d, 0xd7, 0x69, 0x84, 0x83,
- 0x90, 0xe8, 0xe3, 0x99, 0xa9, 0x9b, 0x30, 0x2b, 0xed, 0xf3, 0xa4, 0xa1, 0xd7, 0xa6, 0xb9, 0x2a,
- 0x86, 0x18, 0xf5, 0x46, 0xa1, 0x65, 0x9f, 0x34, 0x16, 0xb3, 0xba, 0x9e, 0xa6, 0x37, 0x4a, 0xa1,
- 0x5f, 0xf8, 0x4d, 0xa9, 0x16, 0x53, 0x07, 0x61, 0x73, 0x33, 0x9c, 0xcb, 0xb1, 0x41, 0xe8, 0x76,
- 0xb5, 0x61, 0xd4, 0x49, 0xf8, 0xde, 0x2b, 0x55, 0x0e, 0xc8, 0x44, 0x91, 0x15, 0x15, 0x45, 0x45,
- 0x8c, 0x4b, 0x8c, 0x88, 0xec, 0xc2, 0xf9, 0x48, 0x94, 0x56, 0x6e, 0x0a, 0xc8, 0x91, 0x37, 0xf8,
- 0xea, 0xf1, 0x51, 0xf1, 0x15, 0x45, 0x14, 0x57, 0x2f, 0x1c, 0x31, 0xee, 0xbd, 0x79, 0xb1, 0xfd,
- 0x76, 0xc9, 0xb3, 0xdb, 0xf5, 0x3d, 0x65, 0xce, 0xe3, 0x7e, 0xbb, 0x8d, 0xd0, 0x44, 0x38, 0x83,
- 0x08, 0xd9, 0xf8, 0xf1, 0x2c, 0x4c, 0xf1, 0xb3, 0x9a, 0xbf, 0xce, 0x3d, 0xb3, 0x2f, 0x9f, 0x6f,
- 0x6b, 0x2f, 0x9f, 0x32, 0xf2, 0x9e, 0xda, 0xb4, 0x81, 0xde, 0x3d, 0xf7, 0x80, 0x24, 0x69, 0x88,
- 0x09, 0x13, 0x2a, 0xb4, 0xff, 0x93, 0xe7, 0x8d, 0x28, 0x48, 0xa3, 0x10, 0x95, 0xf0, 0xdd, 0xd9,
- 0x37, 0x35, 0x1e, 0xc6, 0x8f, 0x65, 0x61, 0x52, 0xb1, 0x53, 0x79, 0x66, 0x3b, 0xfe, 0xf3, 0x5a,
- 0xc7, 0xcf, 0x87, 0x1e, 0x82, 0x61, 0xcb, 0x06, 0xea, 0xf7, 0x2e, 0xcc, 0x24, 0x48, 0xe2, 0xe6,
- 0x3e, 0x99, 0x41, 0xcc, 0x7d, 0x5e, 0x4f, 0x46, 0x7c, 0xe3, 0x89, 0x13, 0xc2, 0xf8, 0x3f, 0x6a,
- 0x88, 0xb9, 0x9f, 0xcc, 0xc2, 0x9c, 0xf8, 0x85, 0x21, 0x52, 0xb9, 0xb0, 0xfa, 0xcc, 0x8e, 0x45,
- 0x49, 0x1b, 0x8b, 0xa2, 0x3e, 0x16, 0x4a, 0x03, 0x7b, 0x0f, 0x89, 0xf1, 0x43, 0x00, 0xf3, 0xbd,
- 0x08, 0x06, 0x76, 0xc4, 0x8f, 0x5c, 0x13, 0xb3, 0x03, 0xb8, 0x26, 0xae, 0x42, 0x01, 0xab, 0x12,
- 0x41, 0x10, 0xfd, 0x4d, 0xb3, 0x2a, 0x3a, 0x09, 0xf5, 0x0b, 0x3c, 0x8e, 0xad, 0x08, 0xca, 0xe8,
- 0xc7, 0x74, 0x1e, 0x09, 0x4a, 0xf2, 0xcb, 0x19, 0x98, 0x42, 0xe0, 0xf2, 0x23, 0xda, 0x0e, 0x90,
- 0xd9, 0x90, 0xf0, 0x59, 0x0b, 0x1f, 0x46, 0x6b, 0x81, 0xe7, 0xb4, 0x77, 0xc5, 0xcb, 0xe8, 0xb6,
- 0x78, 0x19, 0x7d, 0x87, 0xbf, 0xe8, 0x5e, 0xab, 0xbb, 0xad, 0xeb, 0xbb, 0x9e, 0xfd, 0xc8, 0xe1,
- 0x26, 0x58, 0x76, 0xf3, 0x7a, 0x94, 0xef, 0xa7, 0xe3, 0xc4, 0x32, 0xf1, 0x08, 0x56, 0xf8, 0xea,
- 0xcc, 0x3f, 0x94, 0x62, 0xb5, 0x71, 0xd5, 0x8c, 0xfe, 0x45, 0xe4, 0xbb, 0xe0, 0x1c, 0x0f, 0x4d,
- 0xc6, 0x6e, 0xf8, 0x4e, 0xbb, 0xeb, 0x76, 0xfd, 0x25, 0xbb, 0xbe, 0xcf, 0xc4, 0x7c, 0xee, 0x59,
- 0x8c, 0x2d, 0xaf, 0x87, 0x85, 0xd6, 0x36, 0x2f, 0xd5, 0x62, 0x5e, 0xa4, 0x33, 0x20, 0x2b, 0x30,
- 0xc3, 0x8b, 0x4a, 0xdd, 0xc0, 0xad, 0xd5, 0xed, 0xa6, 0xd3, 0xde, 0x45, 0x59, 0x22, 0xcf, 0x45,
- 0x19, 0xbb, 0x1b, 0xb8, 0x96, 0xcf, 0xe1, 0xaa, 0xa6, 0x26, 0x41, 0x44, 0xaa, 0x30, 0x6d, 0x52,
- 0xbb, 0x71, 0xdf, 0x7e, 0x5c, 0xb6, 0x3b, 0x76, 0xdd, 0x09, 0x78, 0xac, 0xd4, 0x1c, 0x17, 0xe8,
- 0x3c, 0x6a, 0x37, 0xac, 0x96, 0xfd, 0xd8, 0xaa, 0x8b, 0x42, 0x5d, 0x65, 0xaf, 0xd1, 0x85, 0xac,
- 0x9c, 0x76, 0xc8, 0x6a, 0x2c, 0xce, 0xca, 0x69, 0xf7, 0x66, 0x15, 0xd1, 0x49, 0x56, 0x1b, 0xb6,
- 0xb7, 0x4b, 0x03, 0x6e, 0x28, 0x0d, 0x97, 0x32, 0x57, 0x32, 0x0a, 0xab, 0x00, 0xcb, 0x2c, 0x34,
- 0x9a, 0x8e, 0xb3, 0x52, 0xe8, 0xd8, 0xcc, 0xdb, 0xf2, 0x9c, 0x80, 0xaa, 0x2d, 0x1c, 0xc7, 0xcf,
- 0xc2, 0xfe, 0x47, 0x13, 0xf3, 0x5e, 0x4d, 0x4c, 0x50, 0x46, 0xdc, 0x94, 0x46, 0x4e, 0x24, 0xb8,
- 0xa5, 0xb7, 0x32, 0x41, 0x19, 0x72, 0x53, 0xdb, 0x39, 0x89, 0xed, 0x54, 0xb8, 0xf5, 0x68, 0x68,
- 0x82, 0x92, 0xac, 0xb1, 0x4e, 0x0b, 0x98, 0xdc, 0xe4, 0xb6, 0x85, 0x05, 0xf7, 0x14, 0x7e, 0xda,
- 0xcb, 0xc2, 0x0c, 0xb1, 0xe0, 0xc9, 0x62, 0x2b, 0xc5, 0x9e, 0x3b, 0x4e, 0x4c, 0xfe, 0x06, 0x4c,
- 0x6f, 0xfa, 0xf4, 0x76, 0x75, 0xbd, 0x26, 0x23, 0x99, 0xa1, 0x72, 0x71, 0x6a, 0xf1, 0xc6, 0x09,
- 0x9b, 0xce, 0x35, 0x95, 0x06, 0xd3, 0xe7, 0xf0, 0x71, 0xeb, 0xfa, 0xd4, 0xda, 0x71, 0x3a, 0x7e,
- 0x18, 0x16, 0x52, 0x1d, 0xb7, 0x58, 0x55, 0xc6, 0x0a, 0xcc, 0x24, 0xd8, 0x90, 0x29, 0x00, 0x06,
- 0xb4, 0x36, 0xd7, 0x6a, 0xcb, 0x1b, 0x85, 0xe7, 0x48, 0x01, 0x26, 0xf0, 0xf7, 0xf2, 0x5a, 0x69,
- 0x69, 0x75, 0xb9, 0x52, 0xc8, 0x90, 0x19, 0x98, 0x44, 0x48, 0xa5, 0x5a, 0xe3, 0xa0, 0x2c, 0x4f,
- 0x9e, 0x60, 0x16, 0xf8, 0xd2, 0x0d, 0xd8, 0x02, 0xc0, 0x33, 0xc5, 0xf8, 0x3b, 0x59, 0x38, 0x2f,
- 0x8f, 0x15, 0x1a, 0x30, 0xc1, 0xd1, 0x69, 0xef, 0x3e, 0xe3, 0xa7, 0xc3, 0x6d, 0xed, 0x74, 0x78,
- 0x39, 0x76, 0x52, 0xc7, 0x5a, 0xd9, 0xe7, 0x88, 0xf8, 0x9d, 0x31, 0xb8, 0xd0, 0x97, 0x8a, 0x7c,
- 0x91, 0x9d, 0xe6, 0x0e, 0x6d, 0x07, 0xd5, 0x46, 0x93, 0x6e, 0x38, 0x2d, 0xea, 0x76, 0x03, 0xe1,
- 0x31, 0xf0, 0x12, 0xea, 0xf3, 0xb0, 0xd0, 0x72, 0x1a, 0x4d, 0x6a, 0x05, 0xbc, 0x58, 0x9b, 0x6e,
- 0x49, 0x6a, 0xc6, 0x32, 0x4c, 0xe5, 0x55, 0x6d, 0x07, 0xd4, 0x7b, 0x84, 0x56, 0x89, 0x21, 0xcb,
- 0x7d, 0x4a, 0x3b, 0x96, 0xcd, 0x4a, 0x2d, 0x47, 0x14, 0xeb, 0x2c, 0x13, 0xd4, 0xe4, 0xb6, 0xc2,
- 0xb2, 0xcc, 0x6e, 0xff, 0xf7, 0xed, 0xc7, 0xc2, 0x4c, 0x4a, 0x44, 0xc6, 0x0d, 0x59, 0x72, 0x77,
- 0xbe, 0x96, 0xfd, 0xd8, 0x4c, 0x92, 0x90, 0xaf, 0xc2, 0x19, 0x71, 0x00, 0x89, 0xe0, 0x2d, 0xb2,
- 0xc5, 0x3c, 0x34, 0xcc, 0xab, 0xc7, 0x47, 0xc5, 0x73, 0x32, 0xa6, 0xb0, 0x0c, 0xac, 0x94, 0xd6,
- 0xea, 0x74, 0x2e, 0x64, 0x83, 0x1d, 0xc8, 0xb1, 0xee, 0xb8, 0x4f, 0x7d, 0x5f, 0xfa, 0x6c, 0x8a,
- 0x9b, 0xb1, 0xda, 0x99, 0x56, 0x8b, 0x97, 0x9b, 0x3d, 0x29, 0xc9, 0x0a, 0x4c, 0x6d, 0xd1, 0x6d,
- 0x75, 0x7c, 0x46, 0xc2, 0xad, 0xaa, 0x70, 0x40, 0xb7, 0x7b, 0x0f, 0x4e, 0x8c, 0x8e, 0x38, 0xf8,
- 0x3e, 0xf0, 0xf8, 0x70, 0xd5, 0xf1, 0x03, 0xda, 0xa6, 0x1e, 0x86, 0x6f, 0x1b, 0xc5, 0xcd, 0x60,
- 0x3e, 0x92, 0x90, 0xf5, 0xf2, 0xa5, 0x17, 0x8f, 0x8f, 0x8a, 0x17, 0xb8, 0xf3, 0x73, 0x53, 0xc0,
- 0xad, 0x58, 0x22, 0xac, 0x24, 0x57, 0xf2, 0x75, 0x98, 0x36, 0xdd, 0x6e, 0xe0, 0xb4, 0x77, 0x6b,
- 0x81, 0x67, 0x07, 0x74, 0x97, 0x1f, 0x48, 0x51, 0x9c, 0xb8, 0x58, 0xa9, 0x78, 0x5a, 0xe6, 0x40,
- 0xcb, 0x17, 0x50, 0xed, 0x44, 0xd0, 0x09, 0xc8, 0xd7, 0x60, 0x8a, 0x87, 0xed, 0x08, 0x2b, 0x18,
- 0xd3, 0x92, 0x78, 0xe8, 0x85, 0x0f, 0x6f, 0x08, 0xab, 0x16, 0x84, 0xa6, 0x55, 0x10, 0xe3, 0x46,
- 0xbe, 0x2c, 0x3a, 0x6b, 0xdd, 0x69, 0xef, 0x86, 0xd3, 0x18, 0xb0, 0xe7, 0xdf, 0x88, 0xba, 0xa4,
- 0xc3, 0x3e, 0x57, 0x4e, 0xe3, 0x1e, 0x26, 0x7a, 0x49, 0x3e, 0x24, 0x80, 0x0b, 0x25, 0xdf, 0x77,
- 0xfc, 0x40, 0xf8, 0xd5, 0x2c, 0x3f, 0xa6, 0xf5, 0x2e, 0x43, 0x66, 0xd7, 0x5b, 0xea, 0x71, 0xbb,
- 0xee, 0xe1, 0xa5, 0x6b, 0xc7, 0x47, 0xc5, 0xd7, 0x6c, 0x44, 0xb4, 0x84, 0x2b, 0x8e, 0x45, 0x25,
- 0xaa, 0x75, 0xc0, 0x71, 0x95, 0x36, 0xf4, 0x67, 0x4a, 0xbe, 0x06, 0x67, 0xcb, 0xb6, 0x4f, 0xab,
- 0x6d, 0x9f, 0xb6, 0x7d, 0x27, 0x70, 0x1e, 0x51, 0xd1, 0xa9, 0x78, 0xf8, 0xe5, 0x31, 0x65, 0x98,
- 0x51, 0xb7, 0x7d, 0xb6, 0x30, 0x43, 0x14, 0x4b, 0x0c, 0x8a, 0x52, 0x4d, 0x0f, 0x2e, 0xc4, 0x84,
- 0xa9, 0x5a, 0x6d, 0xa5, 0xe2, 0xd8, 0xe1, 0xba, 0x9a, 0xc4, 0xfe, 0x7a, 0x0d, 0x55, 0x7b, 0xfe,
- 0x9e, 0xd5, 0x70, 0xec, 0x70, 0x41, 0xf5, 0xe8, 0xac, 0x18, 0x07, 0xe3, 0x28, 0x03, 0x85, 0xf8,
- 0x50, 0x92, 0x2f, 0xc1, 0x18, 0xb7, 0x6f, 0xa3, 0xfe, 0x9e, 0x88, 0x3c, 0x21, 0xcd, 0xa5, 0x42,
- 0xb8, 0x4e, 0x24, 0xdc, 0xe9, 0xb8, 0xf5, 0x1c, 0x55, 0xad, 0x65, 0xd0, 0x9d, 0x4e, 0x12, 0x91,
- 0x06, 0x4c, 0xf0, 0xd1, 0xa2, 0x18, 0x24, 0x52, 0x98, 0x39, 0xbf, 0xa8, 0xae, 0x0e, 0x51, 0x14,
- 0xe3, 0x8f, 0xaf, 0x86, 0x62, 0x4e, 0x70, 0x04, 0xad, 0x0a, 0x8d, 0xeb, 0x12, 0x40, 0x5e, 0x12,
- 0x1a, 0xe7, 0xe1, 0x5c, 0x8f, 0x6f, 0x36, 0x1e, 0xa1, 0x25, 0x41, 0x8f, 0x1a, 0xc9, 0x97, 0x60,
- 0x0e, 0x09, 0xcb, 0x6e, 0xbb, 0x4d, 0xeb, 0x01, 0x6e, 0x47, 0x52, 0xfb, 0x9e, 0xe3, 0x96, 0x2e,
- 0xbc, 0xbd, 0xf5, 0x10, 0xc1, 0x8a, 0x2b, 0xe1, 0x53, 0x39, 0x18, 0x3f, 0x9f, 0x85, 0x79, 0xb1,
- 0xc3, 0x99, 0xb4, 0xee, 0x7a, 0x8d, 0x67, 0xff, 0x44, 0x5d, 0xd6, 0x4e, 0xd4, 0x97, 0xc2, 0xb0,
- 0x45, 0x69, 0x8d, 0xec, 0x73, 0xa0, 0xfe, 0x5a, 0x06, 0x5e, 0xe8, 0x47, 0xc4, 0x7a, 0x27, 0x0c,
- 0x8a, 0x39, 0x96, 0x08, 0x7e, 0xd9, 0x81, 0x59, 0x1c, 0xd0, 0xf2, 0x1e, 0xad, 0xef, 0xfb, 0x2b,
- 0xae, 0x1f, 0xa0, 0xa7, 0x45, 0xb6, 0xc7, 0x5b, 0xf7, 0xeb, 0xa9, 0x6f, 0xdd, 0x67, 0xf9, 0x2c,
- 0xab, 0x23, 0x0f, 0x1e, 0xb6, 0x73, 0x9f, 0x1e, 0xfa, 0x66, 0x1a, 0x6b, 0xb4, 0x98, 0x2f, 0x75,
- 0x83, 0xbd, 0x75, 0x8f, 0xee, 0x50, 0x8f, 0xb6, 0xeb, 0xf4, 0x13, 0x66, 0x31, 0xaf, 0x37, 0x6e,
- 0x20, 0x0d, 0xc6, 0x3f, 0x9e, 0x84, 0xb9, 0x34, 0x32, 0xd6, 0x2f, 0xca, 0xa5, 0x39, 0x9e, 0xd1,
- 0xf4, 0x07, 0x33, 0x30, 0x51, 0xa3, 0x75, 0xb7, 0xdd, 0xb8, 0x8d, 0x16, 0x45, 0xa2, 0x77, 0x2c,
- 0x2e, 0x34, 0x30, 0xb8, 0xb5, 0x13, 0x33, 0x35, 0xfa, 0xce, 0x51, 0xf1, 0x0b, 0x83, 0xdd, 0x55,
- 0xeb, 0x2e, 0x86, 0x0b, 0x0a, 0x30, 0xe3, 0x46, 0x58, 0x05, 0x3e, 0x0e, 0x6a, 0x95, 0x92, 0x25,
- 0x98, 0x14, 0xcb, 0xd5, 0x55, 0x63, 0xa2, 0xf2, 0xc8, 0x4e, 0xb2, 0x20, 0xa1, 0xba, 0xd6, 0x48,
- 0xc8, 0x4d, 0xc8, 0x6d, 0x2e, 0xde, 0x16, 0x63, 0x20, 0x73, 0x96, 0x6c, 0x2e, 0xde, 0x46, 0x75,
- 0x18, 0xbb, 0x62, 0x4c, 0x76, 0x17, 0x35, 0x23, 0x9f, 0xcd, 0xc5, 0xdb, 0xe4, 0x7b, 0xe1, 0x4c,
- 0xc5, 0xf1, 0x45, 0x15, 0xdc, 0x77, 0xa3, 0x81, 0x1e, 0x8b, 0x23, 0x3d, 0x66, 0xef, 0x67, 0x53,
- 0x67, 0xef, 0x8b, 0x8d, 0x90, 0x89, 0xc5, 0x1d, 0x43, 0x1a, 0xf1, 0xd8, 0xaf, 0xe9, 0xf5, 0x90,
- 0x0f, 0x61, 0x0a, 0x95, 0xd9, 0xe8, 0xce, 0x82, 0x51, 0xfb, 0x47, 0x7b, 0xd4, 0xfc, 0xe9, 0xd4,
- 0x9a, 0x17, 0x78, 0xbc, 0x0d, 0x74, 0x8a, 0xc1, 0x08, 0xff, 0xda, 0xad, 0x5f, 0xe3, 0x4c, 0xee,
- 0xc2, 0xb4, 0x10, 0xbf, 0x1e, 0xec, 0x6c, 0xec, 0xd1, 0x8a, 0x7d, 0x28, 0xec, 0x73, 0xf0, 0x46,
- 0x27, 0x64, 0x36, 0xcb, 0xdd, 0xb1, 0x82, 0x3d, 0x6a, 0x35, 0x6c, 0x4d, 0x50, 0x89, 0x11, 0x92,
- 0x6f, 0xc2, 0xf8, 0xaa, 0x5b, 0x67, 0x92, 0x37, 0xee, 0x0c, 0xdc, 0x64, 0xe7, 0x03, 0xcc, 0x99,
- 0xc9, 0xc1, 0x31, 0x71, 0xea, 0x3b, 0x47, 0xc5, 0xb7, 0x4f, 0x3b, 0x69, 0x94, 0x0a, 0x4c, 0xb5,
- 0x36, 0x52, 0x86, 0xfc, 0x16, 0xdd, 0x66, 0xad, 0x8d, 0xe7, 0xd3, 0x93, 0x60, 0x61, 0x91, 0x27,
- 0x7e, 0x69, 0x16, 0x79, 0x02, 0x46, 0x3c, 0x98, 0xc1, 0xfe, 0x59, 0xb7, 0x7d, 0xff, 0xc0, 0xf5,
- 0x1a, 0x98, 0x38, 0xa5, 0x97, 0x35, 0xd0, 0x62, 0x6a, 0xe7, 0xbf, 0xc0, 0x3b, 0xbf, 0xa3, 0x70,
- 0x50, 0x05, 0xc8, 0x04, 0x7b, 0xf2, 0x75, 0x98, 0x12, 0xb1, 0x0b, 0xee, 0xdf, 0x2e, 0xe1, 0xaa,
- 0x9c, 0xd0, 0xfc, 0x3e, 0xf5, 0x42, 0x2e, 0xa5, 0x8a, 0x50, 0x08, 0x52, 0x03, 0x65, 0xb5, 0x76,
- 0x6c, 0x5d, 0xe9, 0xaf, 0x92, 0x90, 0x75, 0x18, 0xaf, 0x60, 0x56, 0x67, 0xf4, 0x4d, 0x13, 0x76,
- 0xe1, 0x61, 0x42, 0xb0, 0xa8, 0x84, 0xeb, 0x62, 0x44, 0x02, 0x68, 0xf4, 0x74, 0xd3, 0x6d, 0x75,
- 0x43, 0x44, 0x72, 0x0b, 0x72, 0xd5, 0xca, 0xba, 0x30, 0x0b, 0x9f, 0x09, 0x23, 0x84, 0xac, 0xcb,
- 0xf4, 0x49, 0x68, 0x3f, 0xe7, 0x34, 0x34, 0xa3, 0xf2, 0x6a, 0x65, 0x9d, 0xec, 0xc0, 0x24, 0x76,
- 0xc0, 0x0a, 0xb5, 0x79, 0xdf, 0x4e, 0xf7, 0xe8, 0xdb, 0x6b, 0xa9, 0x7d, 0x3b, 0xcf, 0xfb, 0x76,
- 0x4f, 0x50, 0x6b, 0xf9, 0x60, 0x54, 0xb6, 0x4c, 0xa4, 0x15, 0x39, 0xaa, 0x64, 0x16, 0x93, 0x8d,
- 0x55, 0xb4, 0x0f, 0x12, 0x22, 0xad, 0x4c, 0x69, 0x15, 0xa6, 0x55, 0xe9, 0xe9, 0x75, 0x92, 0xe4,
- 0x43, 0x3e, 0x0f, 0x43, 0x0f, 0xf6, 0x03, 0x5b, 0x18, 0x80, 0xcb, 0x7e, 0x64, 0x20, 0xd9, 0x7c,
- 0xd4, 0x42, 0xba, 0xfb, 0x5a, 0xcc, 0x39, 0xa4, 0x61, 0x43, 0xb1, 0x62, 0x7b, 0x8d, 0x03, 0xdb,
- 0x43, 0x07, 0xe1, 0x59, 0x8d, 0x85, 0x52, 0xc2, 0x87, 0x62, 0x4f, 0x00, 0x62, 0x5e, 0xc3, 0x2a,
- 0x0b, 0xf2, 0x5d, 0x70, 0xde, 0x77, 0x76, 0xdb, 0x76, 0xd0, 0xf5, 0xa8, 0x65, 0x37, 0x77, 0x5d,
- 0xcf, 0x09, 0xf6, 0x5a, 0x96, 0xdf, 0x75, 0x02, 0x3a, 0x3f, 0xa7, 0x65, 0xb4, 0xae, 0x49, 0xbc,
- 0x92, 0x44, 0xab, 0x31, 0x2c, 0xf3, 0x9c, 0x9f, 0x5e, 0x40, 0xbe, 0x0c, 0x93, 0xea, 0x96, 0xec,
- 0xcf, 0x9f, 0xb9, 0x94, 0xbb, 0x32, 0x15, 0x5e, 0x3c, 0xe2, 0x1b, 0xb8, 0x8c, 0x04, 0xad, 0x9c,
- 0x10, 0xbe, 0x1e, 0x09, 0x5a, 0xe1, 0x15, 0xe6, 0x88, 0x24, 0x85, 0x59, 0x73, 0x46, 0xcc, 0x58,
- 0xd1, 0xcb, 0xf7, 0x6f, 0x97, 0xcc, 0xd1, 0xf5, 0xea, 0xc3, 0x5a, 0xd3, 0x0d, 0x8c, 0xff, 0x32,
- 0x83, 0x9b, 0x38, 0x79, 0x0d, 0x03, 0x49, 0x85, 0xaf, 0x67, 0xa8, 0xbf, 0xb5, 0x3b, 0xb1, 0x34,
- 0x02, 0x1c, 0x85, 0xbc, 0x0e, 0x23, 0xb7, 0xed, 0xba, 0x0c, 0x62, 0x23, 0x90, 0x77, 0x10, 0xa2,
- 0x2a, 0x7b, 0x39, 0x0e, 0x93, 0x2f, 0xf9, 0xe4, 0x2e, 0x45, 0xc9, 0xd2, 0xcb, 0x25, 0xf9, 0x5c,
- 0x8f, 0xf2, 0xa5, 0x58, 0x14, 0x4a, 0x36, 0xf5, 0x98, 0x55, 0x7c, 0x2a, 0x07, 0xe3, 0xcf, 0x32,
- 0xd1, 0xae, 0x44, 0x5e, 0x85, 0x21, 0x73, 0x3d, 0xfc, 0x7e, 0xee, 0xf4, 0x1b, 0xfb, 0x7c, 0x44,
- 0x20, 0x5f, 0x86, 0x33, 0x0a, 0x9f, 0x84, 0x89, 0xfe, 0x2b, 0xe8, 0x93, 0xaa, 0x7c, 0x49, 0xba,
- 0x9d, 0x7e, 0x3a, 0x0f, 0x14, 0xa6, 0xa3, 0x82, 0x0a, 0x6d, 0x3b, 0x9c, 0xb7, 0xd2, 0x58, 0x95,
- 0x77, 0x03, 0x11, 0xe2, 0x8d, 0x4d, 0xe3, 0xc0, 0x5d, 0x52, 0x8d, 0xdf, 0xce, 0x68, 0xbb, 0x4d,
- 0x98, 0x5d, 0x3a, 0x73, 0x42, 0x76, 0xe9, 0xb7, 0x00, 0x4a, 0xdd, 0xc0, 0x5d, 0x6e, 0x7b, 0x6e,
- 0x93, 0x6b, 0x51, 0x44, 0x26, 0x0d, 0xd4, 0x0d, 0x53, 0x04, 0x6b, 0x9e, 0x73, 0x21, 0x72, 0xaa,
- 0x37, 0x43, 0xee, 0xa3, 0x7a, 0x33, 0x18, 0x7f, 0x90, 0xd1, 0xd6, 0x28, 0x93, 0x12, 0xc5, 0x54,
- 0x54, 0x2d, 0xc6, 0x3a, 0xce, 0x23, 0xcb, 0x6f, 0xba, 0x5a, 0xb8, 0x0a, 0x81, 0x46, 0xfe, 0xdd,
- 0x0c, 0x9c, 0xe5, 0x6e, 0x01, 0x6b, 0xdd, 0xd6, 0x36, 0xf5, 0x1e, 0xda, 0x4d, 0xa7, 0x11, 0x85,
- 0xe9, 0x8b, 0xcc, 0x07, 0x95, 0x6a, 0xd2, 0xf1, 0xf9, 0x45, 0x95, 0xbb, 0x29, 0x58, 0x6d, 0x2c,
- 0xb4, 0x1e, 0x85, 0xa5, 0xea, 0x45, 0x35, 0x9d, 0xde, 0xf8, 0xf5, 0x0c, 0xbc, 0x78, 0x62, 0x2d,
- 0xe4, 0x3a, 0x8c, 0xca, 0x14, 0x26, 0x19, 0xec, 0x78, 0xb4, 0xb3, 0x4d, 0xa6, 0x2f, 0x91, 0x58,
- 0xe4, 0x2b, 0x70, 0x46, 0x65, 0xb5, 0xe1, 0xd9, 0x8e, 0x9a, 0x28, 0x24, 0xe5, 0xab, 0x03, 0x86,
- 0x12, 0x97, 0xd6, 0xd2, 0x99, 0x18, 0xff, 0x5f, 0x46, 0xc9, 0x37, 0xff, 0x8c, 0xca, 0xf0, 0xb7,
- 0x34, 0x19, 0x5e, 0x06, 0x29, 0x0d, 0x5b, 0xc5, 0xca, 0x52, 0xef, 0x5d, 0xd3, 0x8a, 0xbd, 0x38,
- 0x02, 0x7e, 0x24, 0x0b, 0xe3, 0x9b, 0x3e, 0xf5, 0xf8, 0x43, 0xee, 0x27, 0x2b, 0x54, 0x63, 0xd8,
- 0xae, 0x81, 0x82, 0xe9, 0xfd, 0x49, 0x06, 0x15, 0xfc, 0x2a, 0x05, 0xeb, 0x0d, 0x25, 0xc7, 0x24,
- 0xf6, 0x06, 0x66, 0x97, 0x44, 0x28, 0x0f, 0x2d, 0xb6, 0xaa, 0xa7, 0x9b, 0xc5, 0x9c, 0xc3, 0xab,
- 0xe4, 0x0b, 0x30, 0xbc, 0x89, 0xea, 0x4a, 0x3d, 0xc8, 0x46, 0xc8, 0x1f, 0x0b, 0xf9, 0x26, 0xdd,
- 0xf5, 0xf5, 0xb8, 0x73, 0x9c, 0x90, 0xd4, 0x60, 0xb4, 0xec, 0x51, 0xcc, 0x1e, 0x3f, 0x34, 0xb8,
- 0x8b, 0x78, 0x9d, 0x93, 0xc4, 0x5d, 0xc4, 0x05, 0x27, 0xe3, 0xe7, 0xb2, 0x40, 0xa2, 0x36, 0x62,
- 0xaa, 0x34, 0xff, 0x99, 0x1d, 0xf4, 0xf7, 0xb5, 0x41, 0xbf, 0x90, 0x18, 0x74, 0xde, 0xbc, 0x81,
- 0xc6, 0xfe, 0x77, 0x33, 0x70, 0x36, 0x9d, 0x90, 0xbc, 0x04, 0x23, 0x0f, 0x36, 0xd6, 0x65, 0x9c,
- 0x16, 0xd1, 0x14, 0xb7, 0x83, 0xba, 0x02, 0x53, 0x14, 0x91, 0x37, 0x60, 0xe4, 0x8b, 0x66, 0x99,
- 0x9d, 0x43, 0x4a, 0x32, 0x8e, 0x6f, 0x78, 0x56, 0x5d, 0x3f, 0x8a, 0x04, 0x92, 0x3a, 0xb6, 0xb9,
- 0xa7, 0x36, 0xb6, 0x3f, 0x99, 0x85, 0xe9, 0x52, 0xbd, 0x4e, 0x7d, 0x5f, 0x04, 0x9a, 0x7f, 0x66,
- 0x07, 0x36, 0x3d, 0x02, 0x8b, 0xd6, 0xb6, 0x81, 0x46, 0xf5, 0xf7, 0x32, 0x70, 0x46, 0x52, 0x3d,
- 0x72, 0xe8, 0xc1, 0xc6, 0x9e, 0x47, 0xfd, 0x3d, 0xb7, 0xd9, 0x18, 0x38, 0xe3, 0x0f, 0x13, 0xf4,
- 0x30, 0x38, 0xbc, 0xfa, 0xaa, 0xbf, 0x83, 0x10, 0x4d, 0xd0, 0xe3, 0x01, 0xe4, 0xaf, 0xc3, 0x68,
- 0xa9, 0xd3, 0xf1, 0xdc, 0x47, 0x7c, 0xd9, 0x8b, 0xc8, 0x92, 0x36, 0x07, 0x69, 0x1e, 0xf6, 0x1c,
- 0xc4, 0x3e, 0xa3, 0x42, 0xdb, 0x3c, 0x94, 0xdf, 0x24, 0xff, 0x8c, 0x06, 0x6d, 0xab, 0xb2, 0x38,
- 0x96, 0x1b, 0x35, 0x20, 0xeb, 0x9e, 0xdb, 0x72, 0x03, 0xda, 0xe0, 0xed, 0xc1, 0xc0, 0x04, 0x27,
- 0x86, 0xd4, 0xda, 0x70, 0x82, 0xa6, 0x16, 0x52, 0x2b, 0x60, 0x00, 0x93, 0xc3, 0x8d, 0xff, 0x67,
- 0x18, 0x26, 0xd4, 0xde, 0x21, 0x06, 0x4f, 0xe3, 0xe1, 0x7a, 0x6a, 0x74, 0x0c, 0x1b, 0x21, 0xa6,
- 0x28, 0x89, 0x42, 0xcb, 0x64, 0x4f, 0x0c, 0x2d, 0xb3, 0x05, 0x93, 0xeb, 0x9e, 0x8b, 0x21, 0x30,
- 0xf1, 0xb5, 0x52, 0x6c, 0x85, 0xb3, 0xca, 0xbd, 0x93, 0x0d, 0x24, 0xbe, 0x87, 0xa2, 0x64, 0xdf,
- 0x11, 0xd8, 0x98, 0xdc, 0x52, 0xd3, 0xba, 0x68, 0x7c, 0xb8, 0xa9, 0x85, 0xed, 0x8b, 0x38, 0xb6,
- 0xa1, 0xa9, 0x05, 0x83, 0xe8, 0xa6, 0x16, 0x0c, 0xa2, 0xae, 0xb5, 0xe1, 0xa7, 0xb5, 0xd6, 0xc8,
- 0xcf, 0x65, 0x60, 0xbc, 0xd4, 0x6e, 0x8b, 0x90, 0x35, 0x27, 0x78, 0xeb, 0x7f, 0x45, 0x58, 0x5b,
- 0xbc, 0xfd, 0x91, 0xac, 0x2d, 0x50, 0x6e, 0xf1, 0x51, 0x52, 0x8d, 0x2a, 0x54, 0x6f, 0x6b, 0xca,
- 0x77, 0x90, 0xb7, 0xa1, 0x10, 0x4e, 0xf2, 0x6a, 0xbb, 0x41, 0x1f, 0x53, 0x9e, 0x06, 0x71, 0x52,
- 0xc4, 0xd5, 0x56, 0x25, 0xd3, 0x38, 0x22, 0xd9, 0x00, 0xb0, 0xc3, 0xd9, 0x15, 0xcb, 0xe7, 0x9a,
- 0x9c, 0x7e, 0x42, 0x7a, 0xc6, 0xdf, 0xf8, 0xa0, 0xa5, 0x4a, 0xcf, 0x11, 0x1f, 0xd2, 0x82, 0x69,
- 0x9e, 0x4c, 0xb5, 0x16, 0xd8, 0x5e, 0x80, 0xa9, 0x28, 0xe0, 0xc4, 0x71, 0x78, 0x55, 0xe8, 0xcf,
- 0x9e, 0x17, 0x29, 0x5a, 0x7d, 0x46, 0x6b, 0xa5, 0xe4, 0xa5, 0x88, 0xf3, 0xe6, 0x51, 0xcc, 0xcd,
- 0x73, 0xc9, 0xef, 0xe5, 0x93, 0xfe, 0x27, 0x33, 0x70, 0x56, 0x9d, 0xf4, 0xb5, 0xee, 0xb6, 0x08,
- 0x1d, 0x4a, 0xae, 0xc1, 0x98, 0x98, 0x93, 0xe1, 0x25, 0x2a, 0x99, 0x51, 0x23, 0x42, 0x21, 0xcb,
- 0x6c, 0x1a, 0x32, 0x1e, 0x42, 0xea, 0x9e, 0x8d, 0xed, 0x53, 0xac, 0x28, 0x4a, 0xd4, 0xed, 0xe1,
- 0x6f, 0x7d, 0x7e, 0x32, 0x88, 0xf1, 0x1e, 0xcc, 0xe8, 0x23, 0x51, 0xa3, 0x01, 0xb9, 0x0a, 0xa3,
- 0x72, 0xf8, 0x32, 0xe9, 0xc3, 0x27, 0xcb, 0x8d, 0x2d, 0x20, 0x09, 0x7a, 0x1f, 0xcd, 0xa2, 0xd8,
- 0xfd, 0x94, 0x9b, 0xed, 0xc9, 0x47, 0xc9, 0x04, 0xe2, 0xd2, 0xac, 0xf8, 0xbe, 0x71, 0xcd, 0x2d,
- 0x01, 0xc3, 0xa8, 0xfe, 0xd9, 0x14, 0xcc, 0xa6, 0xec, 0xb9, 0x27, 0xc8, 0x44, 0x45, 0x7d, 0x83,
- 0x18, 0x0b, 0x83, 0x7d, 0xc8, 0x6d, 0xe1, 0x3d, 0x18, 0x3e, 0x71, 0x3b, 0xe0, 0x4e, 0x29, 0xb1,
- 0x5d, 0x80, 0x93, 0x7d, 0x2c, 0x72, 0x91, 0x1a, 0x8f, 0x67, 0xf8, 0xa9, 0xc5, 0xe3, 0x59, 0x82,
- 0x49, 0xd1, 0x2a, 0xb1, 0x5d, 0x29, 0xc6, 0xd1, 0x32, 0x43, 0x4c, 0x62, 0xdb, 0xd2, 0x49, 0x38,
- 0x0f, 0xdf, 0x6d, 0x3e, 0xa2, 0x82, 0xc7, 0xa8, 0xca, 0x03, 0x0b, 0x52, 0x79, 0x28, 0x24, 0xe4,
- 0x3f, 0xc1, 0x44, 0x8e, 0x08, 0x51, 0xf7, 0xac, 0x7c, 0xbf, 0x3d, 0xab, 0xf1, 0x74, 0xf6, 0xac,
- 0x0b, 0xf2, 0x1b, 0xd3, 0xf7, 0xae, 0x94, 0xcf, 0x22, 0xbf, 0x92, 0x81, 0x19, 0x1e, 0x14, 0x46,
- 0xfd, 0xd8, 0xbe, 0x81, 0x3e, 0xea, 0x4f, 0xe7, 0x63, 0x5f, 0x10, 0xb9, 0x81, 0xd2, 0xbf, 0x35,
- 0xf9, 0x51, 0xe4, 0xbb, 0x00, 0xc2, 0x15, 0xc5, 0x43, 0xc9, 0x8e, 0x2f, 0xbe, 0x90, 0xb2, 0x0b,
- 0x84, 0x48, 0x51, 0x0a, 0x8f, 0x20, 0xa4, 0xd3, 0xd2, 0x77, 0x86, 0x50, 0xf2, 0xbd, 0x30, 0xc7,
- 0xd6, 0x4b, 0x08, 0x11, 0x21, 0xac, 0xe6, 0xc7, 0xb1, 0x96, 0xcf, 0xf4, 0x96, 0x89, 0xae, 0xa5,
- 0x91, 0xf1, 0xc0, 0xc3, 0x51, 0x26, 0xf5, 0x40, 0x8d, 0x76, 0x91, 0x5a, 0x11, 0x46, 0x86, 0xc3,
- 0xaf, 0xe7, 0x69, 0x36, 0x7a, 0xec, 0x6f, 0xe7, 0xe5, 0x5a, 0xe0, 0xfb, 0x9b, 0xaf, 0xfb, 0x28,
- 0x23, 0x88, 0x7c, 0x11, 0x48, 0x18, 0x4d, 0x85, 0xc3, 0xa8, 0x4c, 0xc1, 0xc1, 0xd5, 0xcd, 0x51,
- 0x54, 0x16, 0x4f, 0x16, 0xab, 0x93, 0x24, 0x49, 0x4c, 0x28, 0xcc, 0x89, 0x46, 0x33, 0xa8, 0xcc,
- 0xb2, 0xe8, 0xcf, 0x4f, 0x69, 0x01, 0xc2, 0xa2, 0x92, 0x28, 0xe5, 0xba, 0x92, 0xaa, 0x51, 0x53,
- 0x39, 0xa5, 0xb1, 0x23, 0xb7, 0x60, 0x0c, 0x1d, 0x85, 0x57, 0xa4, 0xb1, 0x97, 0x30, 0x3c, 0x41,
- 0x97, 0x62, 0x6b, 0x4f, 0x37, 0xd9, 0x8a, 0x50, 0xd9, 0x75, 0xa0, 0xe2, 0x1d, 0x9a, 0xdd, 0x36,
- 0x2a, 0x85, 0x85, 0xbe, 0xa3, 0xe1, 0x1d, 0x5a, 0x5e, 0x57, 0xf7, 0x24, 0x47, 0x24, 0xf2, 0x75,
- 0x18, 0xbf, 0x6f, 0x3f, 0x0e, 0xf3, 0x4c, 0xcd, 0x0c, 0x9e, 0xcd, 0xaa, 0x65, 0x3f, 0x0e, 0x93,
- 0x4c, 0xc5, 0xb3, 0x59, 0x29, 0x2c, 0xc9, 0x57, 0x01, 0x14, 0x4d, 0x35, 0x39, 0xb1, 0x82, 0x17,
- 0x65, 0xd8, 0xbb, 0x54, 0x0d, 0x36, 0xf2, 0x57, 0x18, 0xc6, 0x24, 0x87, 0xb9, 0x8f, 0x4f, 0x72,
- 0x38, 0xf3, 0xf1, 0x49, 0x0e, 0x0b, 0xdb, 0x70, 0xbe, 0xe7, 0xd2, 0x49, 0x09, 0x7a, 0x7c, 0x5d,
- 0x0f, 0x7a, 0x7c, 0xbe, 0xd7, 0x11, 0xeb, 0xeb, 0x99, 0x56, 0x66, 0x0b, 0x73, 0xbd, 0xa5, 0x93,
- 0x6f, 0x67, 0x63, 0x47, 0xae, 0xb8, 0x58, 0xf0, 0x2c, 0x5f, 0xbd, 0x64, 0x92, 0x2c, 0xa6, 0xe0,
- 0xe6, 0x87, 0xb2, 0x12, 0x17, 0x9e, 0x1d, 0xca, 0xea, 0xa1, 0x8e, 0xc7, 0xf3, 0x93, 0x9e, 0xbe,
- 0xef, 0xc0, 0x14, 0xcf, 0x9a, 0x7b, 0x8f, 0x1e, 0x1e, 0xb8, 0x5e, 0x83, 0xe7, 0x2f, 0x12, 0x32,
- 0x78, 0x22, 0xe5, 0x7d, 0x0c, 0x97, 0x54, 0xa4, 0xef, 0xe9, 0x30, 0xd6, 0x7e, 0x3e, 0x75, 0x17,
- 0x63, 0x08, 0xfd, 0xdc, 0x52, 0xc9, 0x9b, 0xa1, 0xa0, 0x46, 0x3d, 0x35, 0xdf, 0x8a, 0x27, 0x81,
- 0x29, 0xf2, 0x1a, 0xf5, 0x8c, 0x7f, 0x91, 0x03, 0xc2, 0x6b, 0x2a, 0xdb, 0x1d, 0x1b, 0x3d, 0xb3,
- 0x1d, 0x8c, 0xb5, 0x54, 0x10, 0x38, 0xf6, 0x76, 0x93, 0xaa, 0x81, 0xca, 0x84, 0x71, 0x6d, 0x58,
- 0x66, 0xc5, 0x2f, 0x3a, 0x09, 0xc2, 0x1e, 0x5b, 0x5d, 0xf6, 0x49, 0xb6, 0xba, 0xaf, 0xc3, 0xf3,
- 0xa5, 0x0e, 0xa6, 0xdf, 0x96, 0xb5, 0xdc, 0x76, 0x3d, 0xb9, 0x49, 0x69, 0x3e, 0x7f, 0x76, 0x88,
- 0x96, 0xf8, 0xd2, 0x7e, 0x2c, 0x14, 0x39, 0x85, 0xcd, 0xcb, 0x4e, 0xa0, 0xc6, 0x90, 0x90, 0x72,
- 0x4a, 0x07, 0x4b, 0x52, 0xe4, 0x14, 0x4e, 0x22, 0x79, 0x38, 0x9e, 0x94, 0x53, 0x30, 0x5b, 0x59,
- 0xc4, 0xc3, 0xf1, 0x68, 0x0f, 0x59, 0x27, 0x24, 0x21, 0xef, 0xc0, 0x78, 0xa9, 0x1b, 0xb8, 0x82,
- 0xb1, 0xb0, 0x0a, 0x8f, 0xec, 0xb7, 0xc5, 0xa7, 0x68, 0x57, 0x9f, 0x08, 0xdd, 0xf8, 0xd3, 0x1c,
- 0x9c, 0x4f, 0x0e, 0xaf, 0x28, 0x0d, 0xd7, 0x47, 0xe6, 0x84, 0xf5, 0x91, 0x36, 0x1b, 0xb2, 0x51,
- 0xa6, 0x89, 0xa7, 0x31, 0x1b, 0x78, 0x16, 0xef, 0x8f, 0x38, 0x1b, 0x6a, 0x30, 0xae, 0x9e, 0x77,
- 0x43, 0x1f, 0xf5, 0xbc, 0x53, 0xb9, 0xb0, 0x4b, 0x3d, 0x0f, 0x9d, 0x31, 0x1c, 0x3d, 0x1d, 0xc5,
- 0xa3, 0x66, 0x70, 0x0c, 0xf2, 0xef, 0xc0, 0x25, 0xbe, 0x27, 0xc5, 0x1b, 0xbb, 0x74, 0x28, 0x39,
- 0x8a, 0x81, 0x5b, 0x3c, 0x3e, 0x2a, 0x5e, 0xe3, 0xaa, 0x12, 0x2b, 0xd1, 0x6d, 0xd6, 0xf6, 0xa1,
- 0x25, 0xbf, 0x4c, 0xa9, 0xe4, 0x44, 0xde, 0x46, 0x19, 0xce, 0x8b, 0xd2, 0xc8, 0x69, 0x5b, 0x16,
- 0xb2, 0x41, 0xde, 0x8f, 0xb4, 0x5d, 0x38, 0xc8, 0x31, 0x45, 0x16, 0x96, 0x63, 0xfe, 0x6f, 0x25,
- 0x37, 0xf3, 0x1b, 0x69, 0x3e, 0x37, 0x3c, 0x6a, 0x37, 0x07, 0xeb, 0xee, 0x36, 0x52, 0xa7, 0x96,
- 0x4d, 0xd5, 0xa9, 0x49, 0xa5, 0x4c, 0x2e, 0x55, 0x29, 0x53, 0x81, 0xe9, 0x5a, 0x77, 0x5b, 0xd6,
- 0x1d, 0xf7, 0xd7, 0xf4, 0xbb, 0xdb, 0x69, 0xbd, 0x12, 0x27, 0x31, 0x7e, 0x34, 0x0b, 0x13, 0xeb,
- 0xcd, 0xee, 0xae, 0xd3, 0xae, 0xd8, 0x81, 0xfd, 0xcc, 0xaa, 0xf9, 0xde, 0xd2, 0xd4, 0x7c, 0xa1,
- 0x6b, 0x59, 0xd8, 0xb0, 0x81, 0x74, 0x7c, 0x3f, 0x9b, 0x81, 0xe9, 0x88, 0x84, 0x1f, 0xd6, 0x2b,
- 0x30, 0xc4, 0x7e, 0x88, 0xcb, 0xef, 0xa5, 0x04, 0x63, 0x9e, 0x66, 0x32, 0xfc, 0x4b, 0x28, 0xde,
- 0xf4, 0x1c, 0x6e, 0xc8, 0x61, 0xe1, 0xb3, 0x30, 0x16, 0xb1, 0x3d, 0x4d, 0x7a, 0xc9, 0xdf, 0xc8,
- 0x40, 0x21, 0xde, 0x12, 0x72, 0x0f, 0x46, 0x19, 0x27, 0x87, 0xca, 0x7b, 0xf9, 0xcb, 0x3d, 0xda,
- 0x7c, 0x4d, 0xa0, 0xf1, 0xcf, 0xc3, 0xce, 0xa7, 0x1c, 0x62, 0x4a, 0x0e, 0x0b, 0x26, 0x4c, 0xa8,
- 0x58, 0x29, 0x5f, 0xf7, 0xba, 0x2e, 0xa1, 0x9c, 0x4d, 0xef, 0x07, 0x2d, 0x29, 0xa6, 0xf6, 0xd5,
- 0x42, 0xf8, 0xb8, 0xac, 0x4d, 0xae, 0xd4, 0x55, 0x85, 0x93, 0x66, 0x31, 0xca, 0x57, 0xa0, 0xce,
- 0xb3, 0x94, 0x09, 0x1d, 0xe2, 0x91, 0xd7, 0x61, 0x84, 0xd7, 0xa7, 0x26, 0x74, 0xeb, 0x20, 0x44,
- 0x95, 0x93, 0x39, 0x8e, 0xf1, 0x77, 0x73, 0x70, 0x36, 0xfa, 0xbc, 0xcd, 0x4e, 0xc3, 0x0e, 0xe8,
- 0xba, 0xed, 0xd9, 0x2d, 0xff, 0x84, 0x15, 0x70, 0x25, 0xf1, 0x69, 0x98, 0x4a, 0x4b, 0x7e, 0x9a,
- 0xf2, 0x41, 0x46, 0xec, 0x83, 0x50, 0x07, 0xca, 0x3f, 0x48, 0x7e, 0x06, 0xb9, 0x07, 0xb9, 0x1a,
- 0x0d, 0xc4, 0xde, 0x7b, 0x39, 0xd1, 0xab, 0xea, 0x77, 0x5d, 0xab, 0xd1, 0x80, 0x0f, 0x22, 0x8f,
- 0x0b, 0xa5, 0x05, 0xe7, 0x63, 0x5c, 0xc8, 0x16, 0x8c, 0x2c, 0x3f, 0xee, 0xd0, 0x7a, 0x20, 0x92,
- 0xa3, 0x5e, 0xed, 0xcf, 0x8f, 0xe3, 0x2a, 0xb9, 0x51, 0x29, 0x02, 0xd4, 0xce, 0xe2, 0x28, 0x0b,
- 0xb7, 0x20, 0x2f, 0x2b, 0x3f, 0xcd, 0xcc, 0x5d, 0x78, 0x0b, 0xc6, 0x95, 0x4a, 0x4e, 0x35, 0xe9,
- 0x7f, 0x91, 0xed, 0xab, 0x6e, 0x53, 0xe6, 0x53, 0x5d, 0x4e, 0xc8, 0x8a, 0x4a, 0x36, 0x2a, 0x2e,
- 0x2b, 0x5a, 0xfb, 0xa2, 0xa8, 0x8f, 0xd0, 0x58, 0x85, 0xe9, 0xda, 0xbe, 0xd3, 0x89, 0x02, 0xc5,
- 0x6a, 0x27, 0x32, 0x66, 0xbc, 0x11, 0x17, 0xf7, 0xf8, 0x89, 0x1c, 0xa7, 0x33, 0xfe, 0x22, 0x03,
- 0x23, 0xec, 0xaf, 0x87, 0xb7, 0x9e, 0xd1, 0x2d, 0xf3, 0xa6, 0xb6, 0x65, 0xce, 0x28, 0xb1, 0xda,
- 0x71, 0xe3, 0xb8, 0x75, 0xc2, 0x66, 0x79, 0x24, 0x06, 0x88, 0x23, 0x93, 0x3b, 0x30, 0x2a, 0x4c,
- 0x8a, 0x84, 0xed, 0xb7, 0x1a, 0xfc, 0x5d, 0x1a, 0x1b, 0x85, 0x37, 0x7c, 0xb7, 0x13, 0x57, 0x89,
- 0x48, 0x6a, 0x26, 0xd7, 0xcb, 0x90, 0xbd, 0x5a, 0xbe, 0x74, 0x17, 0x9d, 0xf5, 0x78, 0xe8, 0x72,
- 0x7f, 0xe9, 0x9c, 0xe0, 0xd4, 0xcb, 0xb7, 0xbe, 0x24, 0x5e, 0x43, 0x72, 0xfd, 0x98, 0x9c, 0x95,
- 0x49, 0x8a, 0x53, 0x1f, 0x4a, 0x5a, 0x70, 0xb6, 0x56, 0x5b, 0x41, 0xf3, 0xc3, 0x75, 0xd7, 0x0b,
- 0x6e, 0xbb, 0xde, 0x81, 0x8d, 0xb6, 0xc5, 0xa8, 0xe1, 0x53, 0x6c, 0x10, 0xd2, 0x8c, 0xc2, 0x5e,
- 0x4d, 0x35, 0x0a, 0xeb, 0x63, 0xa7, 0x60, 0xb4, 0xe1, 0x5c, 0xad, 0xb6, 0xc2, 0x03, 0x87, 0xff,
- 0x65, 0xd4, 0xf7, 0x1b, 0x19, 0x98, 0xa9, 0xd5, 0x56, 0x62, 0x55, 0xad, 0xca, 0x88, 0xe5, 0x19,
- 0x3d, 0xcf, 0x77, 0x6a, 0x47, 0xe0, 0x28, 0x64, 0xb8, 0x84, 0x57, 0xd7, 0x82, 0x53, 0x72, 0x26,
- 0x64, 0x3d, 0x8c, 0x91, 0x9e, 0xd5, 0xfc, 0x01, 0x7a, 0x34, 0x14, 0x35, 0xdc, 0xc2, 0x9b, 0x8e,
- 0x95, 0xea, 0x1a, 0x6e, 0x06, 0x31, 0xfe, 0xdb, 0xb3, 0x3c, 0x0a, 0xbb, 0x9c, 0x2d, 0xef, 0xc2,
- 0x84, 0xa0, 0x47, 0xa3, 0x79, 0x61, 0x13, 0x72, 0x9e, 0x6d, 0x90, 0x3b, 0x1c, 0xce, 0xa3, 0xf3,
- 0x7e, 0xe7, 0xa8, 0x38, 0xc4, 0xba, 0xc6, 0xd4, 0xd0, 0xc9, 0x03, 0x98, 0xbc, 0x6f, 0x3f, 0x56,
- 0xd4, 0x19, 0xdc, 0x25, 0xea, 0x2a, 0xdb, 0x55, 0x5a, 0xf6, 0xe3, 0x01, 0x8c, 0xee, 0x74, 0x7a,
- 0xb2, 0x0f, 0x53, 0x7a, 0x9b, 0xc4, 0x0c, 0x4c, 0x8e, 0xd8, 0x8d, 0xd4, 0x11, 0x3b, 0xdf, 0x71,
- 0xbd, 0xc0, 0xda, 0x09, 0xc9, 0xb5, 0x8c, 0x03, 0x31, 0xd6, 0xe4, 0x5d, 0x98, 0x51, 0x42, 0x80,
- 0xde, 0x76, 0xbd, 0x96, 0x2d, 0x2f, 0x5c, 0xa8, 0xe3, 0x47, 0x5b, 0xa2, 0x1d, 0x04, 0x9b, 0x49,
- 0x4c, 0xf2, 0xe5, 0x34, 0x37, 0xb3, 0xe1, 0xc8, 0xf2, 0x30, 0xc5, 0xcd, 0xac, 0x97, 0xe5, 0x61,
- 0xd2, 0xe1, 0x6c, 0xb7, 0x9f, 0x65, 0x72, 0x9e, 0xb7, 0x7e, 0x20, 0xcb, 0xe3, 0x70, 0xe4, 0x7a,
- 0x58, 0x20, 0x2f, 0x42, 0x6e, 0x69, 0xfd, 0x36, 0xbe, 0x4c, 0x49, 0x23, 0xaa, 0xf6, 0x9e, 0xdd,
- 0xae, 0xe3, 0x45, 0x48, 0x78, 0x03, 0xa8, 0x07, 0xe5, 0xd2, 0xfa, 0x6d, 0x62, 0xc3, 0x2c, 0xe6,
- 0x79, 0x0b, 0xbe, 0x74, 0xe3, 0x86, 0x32, 0x54, 0x79, 0xfc, 0xb4, 0xeb, 0xe2, 0xd3, 0x8a, 0x98,
- 0x25, 0x2e, 0xb0, 0x1e, 0xdf, 0xb8, 0x91, 0x3a, 0x20, 0xe1, 0x87, 0xa5, 0xf1, 0x62, 0x07, 0xd6,
- 0x7d, 0xfb, 0x71, 0xe4, 0xc4, 0xe1, 0x0b, 0x87, 0xdd, 0x0b, 0x72, 0x6a, 0x45, 0x0e, 0x20, 0xda,
- 0x81, 0xa5, 0x13, 0xb1, 0x7b, 0x6c, 0x34, 0xc1, 0x7c, 0xe1, 0xea, 0xb4, 0x20, 0xd5, 0x75, 0xd2,
- 0xab, 0x5b, 0xbd, 0x8c, 0x29, 0xe8, 0x64, 0x33, 0xbc, 0x8d, 0xf3, 0xdb, 0xac, 0xc8, 0x8c, 0x7c,
- 0x5d, 0xbd, 0x8d, 0x73, 0x25, 0x99, 0xd6, 0xac, 0xe9, 0x50, 0x85, 0xc3, 0xbd, 0x5a, 0x4c, 0x9d,
- 0x4b, 0xf2, 0x92, 0x3f, 0x71, 0xfa, 0x4b, 0x3e, 0x85, 0xa1, 0x55, 0xb7, 0xbe, 0x2f, 0x82, 0xf3,
- 0x7d, 0x91, 0xed, 0xc2, 0x7a, 0x1a, 0xfd, 0x27, 0xb5, 0xb8, 0x46, 0xf6, 0x64, 0x8d, 0x7d, 0x2a,
- 0x9b, 0x05, 0xa2, 0x4f, 0x84, 0x15, 0xef, 0x5c, 0x78, 0xcb, 0x55, 0xca, 0xb8, 0x3c, 0xca, 0x27,
- 0x8d, 0xec, 0x5a, 0x53, 0x27, 0x27, 0x14, 0x0a, 0x15, 0xea, 0xef, 0x07, 0x6e, 0xa7, 0xdc, 0x74,
- 0x3a, 0xdb, 0xae, 0xed, 0xc9, 0x50, 0xce, 0x03, 0xef, 0xc9, 0x0d, 0x4e, 0x6f, 0xd5, 0x25, 0x03,
- 0x33, 0xc1, 0x92, 0x7c, 0x19, 0xa6, 0xd8, 0xe4, 0x5e, 0x7e, 0x1c, 0xd0, 0x36, 0x1f, 0xf9, 0x19,
- 0x94, 0xe8, 0xe6, 0x94, 0xdc, 0x25, 0x61, 0x21, 0x9f, 0x53, 0xb8, 0xd8, 0x69, 0x48, 0xa0, 0x05,
- 0x36, 0xd4, 0x58, 0x91, 0x06, 0xcc, 0xdf, 0xb7, 0x1f, 0x2b, 0x39, 0x98, 0x95, 0x49, 0x4a, 0x70,
- 0x82, 0x5d, 0x39, 0x3e, 0x2a, 0xbe, 0xcc, 0x26, 0x58, 0x14, 0x5d, 0xbc, 0xc7, 0x7c, 0xed, 0xc9,
- 0x89, 0x7c, 0x13, 0xce, 0x89, 0x66, 0x55, 0x30, 0x6f, 0x98, 0xeb, 0x1d, 0xd6, 0xf6, 0x6c, 0xf4,
- 0xdf, 0x9a, 0xed, 0xd1, 0x61, 0xd7, 0xd3, 0xb7, 0x44, 0xd9, 0x61, 0x0d, 0xc9, 0xc7, 0xf2, 0x39,
- 0x23, 0xb3, 0x57, 0x0d, 0xe4, 0x43, 0x98, 0xe2, 0xcf, 0x71, 0x2b, 0xae, 0x1f, 0xa0, 0xb2, 0x66,
- 0xee, 0x74, 0x6e, 0x09, 0xfc, 0x8d, 0x8f, 0x3b, 0xf2, 0xc4, 0x94, 0x3b, 0x31, 0xce, 0xe4, 0x6d,
- 0x18, 0x5f, 0x77, 0xda, 0x3c, 0xf4, 0x68, 0x75, 0x1d, 0xd5, 0xca, 0xe2, 0x04, 0xea, 0x38, 0x6d,
- 0x4b, 0x6a, 0x4c, 0x3a, 0xe1, 0x76, 0xa1, 0x62, 0x93, 0x2d, 0x18, 0xaf, 0xd5, 0x56, 0x6e, 0x3b,
- 0x4c, 0x2e, 0xe9, 0x1c, 0xce, 0x9f, 0xed, 0xf1, 0x95, 0x2f, 0xa5, 0x7e, 0xe5, 0xa4, 0xef, 0xef,
- 0x59, 0x3b, 0x4e, 0x93, 0x5a, 0x75, 0xb7, 0x73, 0x68, 0xaa, 0x9c, 0x52, 0x4c, 0xf5, 0xcf, 0x3d,
- 0x65, 0x53, 0xfd, 0x2a, 0x4c, 0x2b, 0xc6, 0xb3, 0x68, 0x38, 0x3b, 0x1f, 0xc5, 0xab, 0x52, 0x4d,
- 0xf3, 0xe3, 0xae, 0xa9, 0x71, 0x3a, 0x69, 0xa3, 0x7f, 0xfe, 0xb4, 0x36, 0xfa, 0x0e, 0xcc, 0xf0,
- 0xc1, 0x10, 0xf3, 0x00, 0x47, 0x7a, 0xa1, 0x47, 0x1f, 0x5e, 0x4d, 0xed, 0xc3, 0x59, 0x31, 0xd2,
- 0x72, 0x92, 0xe1, 0xf3, 0x73, 0x92, 0x2b, 0xd9, 0x01, 0x22, 0x80, 0x76, 0x60, 0x6f, 0xdb, 0x3e,
- 0xc5, 0xba, 0x9e, 0xef, 0x51, 0xd7, 0xcb, 0xa9, 0x75, 0x4d, 0xc9, 0xba, 0xb6, 0x79, 0x35, 0x29,
- 0x1c, 0x49, 0x5b, 0xd6, 0x23, 0xe7, 0x17, 0x76, 0xec, 0x0b, 0x9a, 0x8e, 0x3b, 0x89, 0xc0, 0x43,
- 0x3f, 0xc5, 0x27, 0x6d, 0xbc, 0xdf, 0x53, 0x38, 0x93, 0xc7, 0x70, 0x36, 0xf9, 0x15, 0x58, 0xe7,
- 0x05, 0xac, 0xf3, 0x82, 0x56, 0x67, 0x1c, 0x89, 0xcf, 0x1b, 0xbd, 0x59, 0xf1, 0x5a, 0x7b, 0xf0,
- 0x27, 0x3f, 0x94, 0x81, 0x73, 0xf7, 0x6f, 0x97, 0x30, 0x9b, 0xa8, 0xc3, 0x23, 0xd1, 0x85, 0x2e,
- 0xbd, 0x17, 0xc5, 0x3b, 0x48, 0xfc, 0x6d, 0x46, 0x4a, 0x1c, 0xb8, 0x55, 0x30, 0xd1, 0xfd, 0xa5,
- 0xd6, 0x8e, 0xcd, 0x93, 0x94, 0x0a, 0x16, 0x29, 0x7e, 0xbf, 0xdf, 0xfa, 0xe3, 0x62, 0xc6, 0xec,
- 0x55, 0x15, 0x69, 0xc2, 0x82, 0xde, 0x2d, 0xd2, 0x8b, 0x62, 0x8f, 0x36, 0x9b, 0xf3, 0x45, 0x9c,
- 0xd1, 0xaf, 0x1f, 0x1f, 0x15, 0xaf, 0x24, 0x7a, 0x37, 0xf4, 0xcc, 0x60, 0x98, 0x4a, 0x83, 0xfb,
- 0xf0, 0x23, 0xad, 0x14, 0xa1, 0x7b, 0xfe, 0x92, 0x16, 0xfb, 0x27, 0x51, 0xbe, 0xf4, 0x8a, 0x90,
- 0x48, 0x2e, 0xb0, 0xf5, 0xde, 0x53, 0x40, 0x34, 0x93, 0x9c, 0xef, 0x0e, 0xe5, 0x27, 0x0b, 0x53,
- 0x29, 0x2e, 0x0b, 0xc6, 0xef, 0x64, 0x63, 0x07, 0x23, 0xa9, 0xc2, 0xa8, 0x98, 0xef, 0x3d, 0x2f,
- 0x19, 0x17, 0x52, 0x67, 0xf5, 0xa8, 0x58, 0x3a, 0xa6, 0xa4, 0x27, 0x07, 0x8c, 0x15, 0x36, 0x5a,
- 0xdc, 0x78, 0xbf, 0xca, 0xcf, 0x3d, 0x04, 0x69, 0x27, 0x7c, 0xe5, 0xf4, 0x8e, 0x78, 0xba, 0x9f,
- 0x27, 0x1e, 0xf5, 0xb2, 0x36, 0xb2, 0xcf, 0x53, 0x49, 0xe5, 0x42, 0x6f, 0x2e, 0x3d, 0x6f, 0xd4,
- 0x53, 0xab, 0x90, 0xd5, 0x62, 0xfc, 0x76, 0x06, 0x26, 0xb5, 0x93, 0x95, 0xdc, 0x52, 0x5c, 0x15,
- 0x23, 0xef, 0x7d, 0x0d, 0x07, 0x37, 0xdb, 0xb8, 0x13, 0xe3, 0x2d, 0xe1, 0x77, 0x90, 0xed, 0x4d,
- 0x87, 0x8b, 0x2d, 0xee, 0xb9, 0xda, 0x5f, 0x3f, 0x1c, 0xe6, 0xc1, 0x1c, 0xea, 0x91, 0x07, 0xf3,
- 0x97, 0x2f, 0xc0, 0x94, 0x7e, 0x23, 0x26, 0xaf, 0xc3, 0x08, 0xea, 0xe6, 0xa5, 0x7a, 0x05, 0xd5,
- 0x42, 0xa8, 0xbe, 0xd7, 0x9c, 0x51, 0x38, 0x0e, 0x79, 0x05, 0x20, 0x34, 0x00, 0x97, 0x2f, 0x53,
- 0xc3, 0xc7, 0x47, 0xc5, 0xcc, 0x1b, 0xa6, 0x52, 0x40, 0xbe, 0x06, 0xb0, 0xe6, 0x36, 0x68, 0x98,
- 0xdc, 0xb8, 0x8f, 0xf5, 0xc5, 0xab, 0x89, 0x34, 0x2b, 0x67, 0xda, 0x6e, 0x83, 0x26, 0x73, 0xaa,
- 0x28, 0x1c, 0xc9, 0xe7, 0x61, 0xd8, 0xec, 0x36, 0xa9, 0x7c, 0xc1, 0x18, 0x97, 0x27, 0x5c, 0xb7,
- 0x49, 0x23, 0x3d, 0x81, 0xd7, 0x8d, 0x1b, 0x16, 0x32, 0x00, 0x79, 0x9f, 0xa7, 0x5f, 0x11, 0x31,
- 0x42, 0x87, 0xa3, 0xb7, 0x3a, 0x45, 0xf2, 0x49, 0x44, 0x09, 0x55, 0x48, 0xc8, 0x03, 0x18, 0x55,
- 0x1f, 0x99, 0x14, 0x9f, 0x77, 0xf5, 0x21, 0x52, 0x51, 0x3a, 0x88, 0xac, 0xc8, 0xf1, 0xf7, 0x27,
- 0xc9, 0x85, 0xbc, 0x03, 0x63, 0x8c, 0x3d, 0xdb, 0x39, 0x7c, 0x71, 0xab, 0xc1, 0x17, 0x39, 0xe5,
- 0x83, 0xd8, 0xee, 0xa3, 0x45, 0xf2, 0x0c, 0x09, 0xc8, 0x97, 0x31, 0x8f, 0xad, 0xe8, 0xea, 0xbe,
- 0x56, 0x39, 0x97, 0x13, 0x5d, 0x8d, 0x89, 0x6d, 0x13, 0x3d, 0x1d, 0xf1, 0x23, 0xbb, 0x61, 0xc8,
- 0xb5, 0x41, 0x52, 0xe6, 0xbc, 0x96, 0xa8, 0x60, 0x5e, 0x46, 0x11, 0x4b, 0x26, 0xa9, 0xd6, 0xf8,
- 0x92, 0x0e, 0x14, 0x22, 0xa1, 0x52, 0xd4, 0x05, 0xfd, 0xea, 0x7a, 0x23, 0x51, 0x97, 0x3a, 0x80,
- 0x89, 0xea, 0x12, 0xdc, 0x49, 0x03, 0xa6, 0xe4, 0x01, 0x25, 0xea, 0x1b, 0xef, 0x57, 0xdf, 0x2b,
- 0x89, 0xfa, 0x66, 0x1b, 0xdb, 0xc9, 0x7a, 0x62, 0x3c, 0xc9, 0x3b, 0x30, 0x29, 0x21, 0x3c, 0x65,
- 0xf4, 0x44, 0x94, 0x73, 0xb7, 0xb1, 0x9d, 0x48, 0x14, 0xad, 0x23, 0xab, 0xd4, 0x7c, 0x76, 0x4c,
- 0x6a, 0xd4, 0xf1, 0x59, 0xa1, 0x23, 0x93, 0x0f, 0x60, 0xbc, 0xda, 0x62, 0x0d, 0x71, 0xdb, 0x76,
- 0x40, 0x85, 0x3f, 0xa4, 0xb4, 0x30, 0x52, 0x4a, 0x94, 0xa9, 0xca, 0x93, 0x61, 0x47, 0x45, 0x5a,
- 0x32, 0xec, 0x08, 0xcc, 0x3a, 0x8f, 0xbf, 0x2a, 0x8a, 0x39, 0x2c, 0x7d, 0x25, 0x2f, 0xa4, 0x58,
- 0xf9, 0x28, 0xec, 0x45, 0x3c, 0x48, 0x06, 0x95, 0xaf, 0x7a, 0xb1, 0x58, 0xbc, 0x2a, 0x4f, 0xf2,
- 0x2e, 0x8c, 0x8b, 0x6c, 0x62, 0x25, 0x73, 0xcd, 0x9f, 0x2f, 0x60, 0xe3, 0x31, 0xc2, 0x83, 0x4c,
- 0x3c, 0x66, 0xd9, 0x5e, 0xcc, 0x9c, 0x35, 0xc2, 0x27, 0x5f, 0x82, 0xb9, 0x2d, 0xa7, 0xdd, 0x70,
- 0x0f, 0x7c, 0x71, 0x4c, 0x89, 0x8d, 0x6e, 0x26, 0x72, 0x26, 0x3b, 0xe0, 0xe5, 0xa1, 0x2c, 0x98,
- 0xd8, 0xf8, 0x52, 0x39, 0x90, 0xef, 0x49, 0x70, 0xe6, 0x33, 0x88, 0xf4, 0x9b, 0x41, 0x8b, 0x89,
- 0x19, 0x94, 0xac, 0x3e, 0x3e, 0x9d, 0x52, 0xab, 0x21, 0x2e, 0x10, 0xfd, 0x7c, 0xbf, 0xeb, 0x3a,
- 0xed, 0xf9, 0x59, 0xdc, 0x0b, 0x9f, 0x8f, 0xc7, 0x54, 0x40, 0x3c, 0x91, 0x54, 0xdc, 0x38, 0x3e,
- 0x2a, 0x5e, 0x8c, 0xcb, 0xfc, 0x1f, 0xba, 0xda, 0x73, 0x49, 0x0a, 0x6b, 0xf2, 0x01, 0x4c, 0xb0,
- 0xff, 0x43, 0xa5, 0xc4, 0x9c, 0x66, 0x17, 0xaa, 0x60, 0x8a, 0x7a, 0x70, 0x8c, 0x30, 0xdd, 0x59,
- 0x8a, 0xbe, 0x42, 0x63, 0x45, 0xde, 0x02, 0x60, 0x62, 0x93, 0xd8, 0x8e, 0xcf, 0x44, 0xa1, 0x8f,
- 0x51, 0xea, 0x4a, 0x6e, 0xc4, 0x11, 0x32, 0x79, 0x07, 0xc6, 0xd9, 0xaf, 0x5a, 0xb7, 0xe1, 0xb2,
- 0xb5, 0x71, 0x16, 0x69, 0xb9, 0x6b, 0x2a, 0xa3, 0xf5, 0x39, 0x5c, 0x73, 0x4d, 0x8d, 0xd0, 0xc9,
- 0x0a, 0x4c, 0x63, 0x88, 0x6a, 0x11, 0x1c, 0xd5, 0xa1, 0xfe, 0xfc, 0x39, 0xc5, 0x1a, 0x82, 0x15,
- 0x59, 0x4e, 0x58, 0xa6, 0xde, 0x65, 0x62, 0x64, 0xc4, 0x87, 0xd9, 0xe4, 0x73, 0xb2, 0x3f, 0x3f,
- 0x8f, 0x9d, 0x24, 0x25, 0xf8, 0x24, 0x06, 0xdf, 0x8f, 0xd9, 0x88, 0x28, 0x1b, 0x97, 0x7c, 0x54,
- 0x52, 0x2b, 0x4c, 0xe3, 0x4e, 0x4c, 0x20, 0x77, 0xca, 0xeb, 0xf1, 0x18, 0xce, 0xe7, 0xb1, 0x05,
- 0x38, 0xcc, 0xbb, 0xf5, 0x28, 0x8b, 0x78, 0x4a, 0x1c, 0xe7, 0x14, 0x6a, 0xf2, 0xdd, 0x70, 0x46,
- 0xee, 0x20, 0xa2, 0x48, 0xcc, 0xeb, 0x85, 0x53, 0xee, 0xc4, 0x8d, 0xed, 0xb0, 0xea, 0xc4, 0x94,
- 0x4e, 0xaf, 0x82, 0xd8, 0x30, 0x8e, 0xc3, 0x2a, 0x6a, 0x7c, 0xbe, 0x5f, 0x8d, 0x57, 0x12, 0x35,
- 0x9e, 0xc5, 0x89, 0x92, 0xac, 0x4c, 0xe5, 0x49, 0x96, 0x60, 0x52, 0xac, 0x23, 0x31, 0xdb, 0x5e,
- 0xc0, 0xde, 0x42, 0x25, 0x96, 0x5c, 0x81, 0x89, 0x09, 0xa7, 0x93, 0xa8, 0x3b, 0x32, 0x7f, 0x4c,
- 0xba, 0xa0, 0xed, 0xc8, 0xf1, 0x37, 0x24, 0x1d, 0x99, 0xed, 0x48, 0x91, 0x14, 0xb3, 0xfc, 0xb8,
- 0xe3, 0x09, 0x15, 0xd5, 0xc5, 0x28, 0x2b, 0x92, 0x22, 0xfc, 0x58, 0x34, 0xc4, 0x50, 0xb7, 0x84,
- 0x34, 0x0e, 0x64, 0x13, 0x66, 0xc3, 0x53, 0x5b, 0x61, 0x5c, 0x8c, 0xa2, 0x04, 0x47, 0x47, 0x7d,
- 0x3a, 0xdf, 0x34, 0x7a, 0x62, 0xc3, 0x39, 0xed, 0x9c, 0x56, 0x58, 0x5f, 0x42, 0xd6, 0x98, 0xb5,
- 0x5e, 0x3f, 0xe4, 0xd3, 0xd9, 0xf7, 0xe2, 0x43, 0x3e, 0x84, 0x85, 0xf8, 0xd9, 0xac, 0xd4, 0xf2,
- 0x22, 0xd6, 0xf2, 0xda, 0xf1, 0x51, 0xf1, 0x72, 0xe2, 0x78, 0x4f, 0xaf, 0xa8, 0x0f, 0x37, 0xf2,
- 0x35, 0x98, 0xd7, 0xcf, 0x67, 0xa5, 0x26, 0x03, 0x6b, 0xc2, 0xa5, 0x13, 0x1e, 0xec, 0xe9, 0x35,
- 0xf4, 0xe4, 0x41, 0x02, 0x28, 0xa6, 0xce, 0x6e, 0xa5, 0x9a, 0x97, 0xa2, 0x06, 0x25, 0x56, 0x49,
- 0x7a, 0x75, 0x27, 0xb1, 0x24, 0x07, 0x70, 0x31, 0xed, 0x98, 0x50, 0x2a, 0x7d, 0x39, 0x54, 0x02,
- 0x7f, 0x2a, 0xfd, 0xc8, 0x49, 0xaf, 0xf9, 0x04, 0xb6, 0xe4, 0xcb, 0x70, 0x46, 0x59, 0x5f, 0x4a,
- 0x7d, 0xaf, 0x60, 0x7d, 0xe8, 0x0a, 0xae, 0x2e, 0xcc, 0xf4, 0x5a, 0xd2, 0x79, 0x90, 0x16, 0xcc,
- 0xca, 0x86, 0xa3, 0xb6, 0x5d, 0x1c, 0x3d, 0x97, 0xb5, 0x5d, 0x35, 0x89, 0xb1, 0x74, 0x49, 0xec,
- 0xaa, 0xf3, 0x8d, 0x6d, 0xab, 0x13, 0x11, 0xaa, 0x33, 0x3d, 0x85, 0x2f, 0x59, 0x81, 0x91, 0xda,
- 0x7a, 0xf5, 0xf6, 0xed, 0xe5, 0xf9, 0x57, 0xb1, 0x06, 0xe9, 0x37, 0xc6, 0x81, 0xda, 0xa5, 0x49,
- 0x98, 0x2b, 0x76, 0x9c, 0x9d, 0x1d, 0xed, 0xc1, 0x8a, 0xa3, 0x92, 0xef, 0x41, 0x43, 0x41, 0xb6,
- 0xa3, 0x96, 0x7c, 0xdf, 0xd9, 0xc5, 0xa8, 0xd3, 0xfe, 0xfc, 0x6b, 0xda, 0x7b, 0xbf, 0x8c, 0xc8,
- 0x5d, 0xc6, 0x84, 0x65, 0x09, 0x74, 0x2e, 0x6d, 0xb2, 0xfb, 0xbf, 0xd8, 0xb9, 0x2d, 0x3b, 0x62,
- 0xa5, 0x6e, 0xe2, 0xc9, 0x8a, 0x58, 0xbf, 0xed, 0x3a, 0x81, 0xb5, 0xd7, 0xd5, 0x9a, 0x3f, 0xff,
- 0x29, 0x2d, 0x02, 0x33, 0x4f, 0xe3, 0xa6, 0xf4, 0xda, 0xcb, 0xa2, 0xc2, 0x17, 0xf8, 0x6d, 0xb9,
- 0x47, 0xcf, 0xcd, 0xec, 0xc6, 0xe8, 0xfc, 0xbb, 0x43, 0xf9, 0x2b, 0x85, 0xab, 0x77, 0x87, 0xf2,
- 0x57, 0x0b, 0xaf, 0x99, 0x2f, 0xd4, 0x4a, 0xf7, 0x57, 0xab, 0x0d, 0x79, 0xae, 0xc8, 0x70, 0xe3,
- 0x7c, 0x68, 0xcd, 0xcb, 0xfd, 0x4a, 0xa3, 0x81, 0x37, 0xfe, 0x76, 0x06, 0x8a, 0x27, 0xf4, 0x0f,
- 0xdb, 0xca, 0xa3, 0x8f, 0xa8, 0xd1, 0x40, 0x0d, 0x5a, 0x1e, 0x7d, 0xba, 0xa5, 0x5b, 0x4c, 0xe8,
- 0x24, 0xe8, 0x6f, 0x27, 0x32, 0x65, 0x28, 0x6e, 0x97, 0xc9, 0x0c, 0x19, 0x12, 0xcb, 0x58, 0x85,
- 0x42, 0xbc, 0xdf, 0xc8, 0xe7, 0x60, 0x52, 0x8d, 0xd3, 0x2f, 0x6f, 0xd1, 0x3c, 0xc6, 0x86, 0xb7,
- 0xab, 0x9d, 0x05, 0x1a, 0xa2, 0xf1, 0x8b, 0x19, 0x98, 0x4d, 0x99, 0x5c, 0xe4, 0x32, 0x0c, 0x61,
- 0x22, 0x2d, 0xc5, 0x60, 0x26, 0x96, 0x40, 0x0b, 0xcb, 0xc9, 0xa7, 0x61, 0xb4, 0xb2, 0x56, 0xab,
- 0x95, 0xd6, 0xe4, 0x3d, 0x9c, 0x9f, 0x41, 0x6d, 0xdf, 0xf2, 0x6d, 0xfd, 0x9d, 0x5d, 0xa0, 0x91,
- 0x37, 0x60, 0xa4, 0xba, 0x8e, 0x04, 0xdc, 0xec, 0x13, 0xdb, 0xeb, 0x74, 0xe2, 0xf8, 0x02, 0xc9,
- 0xf8, 0xf1, 0x0c, 0x90, 0xe4, 0x4a, 0x21, 0x37, 0x60, 0x5c, 0x5d, 0x8f, 0xbc, 0xbd, 0xf8, 0xf8,
- 0xa8, 0xcc, 0x19, 0x53, 0xc5, 0x21, 0x15, 0x18, 0xc6, 0x14, 0xa8, 0xe1, 0x03, 0x7f, 0xea, 0xa9,
- 0x7e, 0x2e, 0x71, 0xaa, 0x0f, 0x63, 0x82, 0x55, 0x93, 0x13, 0x1b, 0xbf, 0x97, 0x01, 0x92, 0x6e,
- 0xb6, 0x37, 0x90, 0x81, 0xd1, 0x9b, 0x8a, 0xdb, 0xbe, 0x9a, 0x2a, 0x27, 0xcc, 0x73, 0xa6, 0xde,
- 0x80, 0x23, 0x07, 0xff, 0xcb, 0x9a, 0xc6, 0xa5, 0xb7, 0xaf, 0xe7, 0x55, 0x18, 0x7e, 0x48, 0xbd,
- 0x6d, 0x69, 0xd1, 0x8c, 0x56, 0x90, 0x8f, 0x18, 0x40, 0xd5, 0x40, 0x20, 0x86, 0xf1, 0xa7, 0x19,
- 0x98, 0x4b, 0x13, 0xcf, 0x4f, 0x70, 0xc9, 0x34, 0x62, 0xde, 0xa4, 0x68, 0x5c, 0xc4, 0x4d, 0x24,
- 0x43, 0x1f, 0xd2, 0x22, 0x0c, 0xb3, 0xc6, 0xca, 0x11, 0x46, 0x0d, 0x10, 0xeb, 0x0d, 0xdf, 0xe4,
- 0x70, 0x86, 0xc0, 0xc3, 0xd3, 0x0d, 0x61, 0x64, 0x43, 0x44, 0xc0, 0xd9, 0x6d, 0x72, 0x38, 0x43,
- 0xb8, 0xef, 0x36, 0xc2, 0xec, 0xff, 0x88, 0xd0, 0x62, 0x00, 0x93, 0xc3, 0xc9, 0x65, 0x18, 0x7d,
- 0xd0, 0x5e, 0xa5, 0xf6, 0x23, 0x99, 0xae, 0x01, 0x8d, 0xa1, 0xdc, 0xb6, 0xd5, 0x64, 0x30, 0x53,
- 0x16, 0x1a, 0x3f, 0x9b, 0x81, 0x99, 0xc4, 0xcd, 0xe0, 0x64, 0xaf, 0xd3, 0xfe, 0xee, 0x5f, 0x83,
- 0xb4, 0x8f, 0x7f, 0xfe, 0x50, 0xfa, 0xe7, 0x1b, 0xff, 0xfd, 0x08, 0x9c, 0xeb, 0xa1, 0xa8, 0x89,
- 0xdc, 0x53, 0x33, 0x27, 0xba, 0xa7, 0x7e, 0x05, 0x26, 0xcb, 0x4d, 0xdb, 0x69, 0xf9, 0x1b, 0x6e,
- 0xf4, 0xc5, 0x91, 0x97, 0x0b, 0x96, 0x09, 0x17, 0x80, 0xd0, 0x1d, 0xe2, 0x7c, 0x1d, 0x29, 0xac,
- 0xc0, 0x4d, 0xca, 0x89, 0x1a, 0xb3, 0x84, 0x83, 0x68, 0xee, 0xaf, 0x88, 0x83, 0xa8, 0xee, 0xb2,
- 0x34, 0xf4, 0x54, 0x5d, 0x96, 0xd2, 0xcd, 0x9d, 0x87, 0x9f, 0xc4, 0xf8, 0xbd, 0x0c, 0x93, 0xdc,
- 0x1a, 0xac, 0xe4, 0xf3, 0x41, 0x1a, 0x49, 0x58, 0x90, 0xd9, 0x7e, 0x72, 0x2c, 0x34, 0x1a, 0xb2,
- 0xa2, 0xbb, 0xd7, 0x8c, 0xe2, 0x73, 0xe9, 0xe5, 0xde, 0xee, 0x33, 0x9a, 0x99, 0x84, 0xe6, 0x46,
- 0xf3, 0x4d, 0x98, 0x4b, 0xbb, 0xe9, 0xcd, 0xe7, 0x35, 0x43, 0xd3, 0x9e, 0x06, 0xca, 0x83, 0xdf,
- 0x17, 0xf7, 0x53, 0xef, 0x8b, 0xd2, 0xed, 0x79, 0x4c, 0x8b, 0x66, 0xdc, 0x63, 0x2d, 0x70, 0xdc,
- 0xfe, 0xce, 0xd1, 0xc6, 0x57, 0xe0, 0x42, 0x5f, 0x72, 0xf2, 0xb6, 0x16, 0x5e, 0xe7, 0xd5, 0x64,
- 0x78, 0x9d, 0xef, 0x1c, 0x15, 0x67, 0x34, 0x97, 0xc5, 0xfb, 0xa1, 0xae, 0xdb, 0xf8, 0xd9, 0xac,
- 0xee, 0x6c, 0xfb, 0x57, 0x71, 0xa1, 0x5e, 0x85, 0xe1, 0xad, 0x3d, 0xea, 0xc9, 0xe3, 0x01, 0x3f,
- 0xe4, 0x80, 0x01, 0xd4, 0x0f, 0x41, 0x0c, 0x72, 0x1b, 0xa6, 0xd6, 0xf9, 0xc4, 0x95, 0xb3, 0x71,
- 0x28, 0x52, 0x37, 0x74, 0x84, 0x52, 0x2c, 0x65, 0x3a, 0xc6, 0xa8, 0x8c, 0x3b, 0xb1, 0x4e, 0x17,
- 0xc1, 0x81, 0xb8, 0x53, 0x10, 0x17, 0x20, 0xa6, 0x22, 0x37, 0xa8, 0x68, 0xb3, 0x35, 0x63, 0x50,
- 0x63, 0x07, 0x2e, 0xf6, 0x65, 0xc4, 0xce, 0x6d, 0xe8, 0x84, 0xbf, 0x62, 0x46, 0xc7, 0x7d, 0x49,
- 0x4d, 0x85, 0xce, 0xf8, 0x26, 0x4c, 0xa8, 0xbd, 0x8c, 0x47, 0x10, 0xfb, 0x2d, 0x66, 0x05, 0x3f,
- 0x82, 0x18, 0xc0, 0xe4, 0xf0, 0xe8, 0x19, 0x23, 0x9b, 0xfe, 0x8c, 0x11, 0x0d, 0x7f, 0xee, 0xa4,
- 0xe1, 0x67, 0x95, 0xe3, 0x0e, 0xa7, 0x54, 0x8e, 0xbf, 0xd5, 0xca, 0x31, 0xfa, 0x8f, 0xc9, 0xe1,
- 0x4f, 0xb5, 0xf2, 0x7f, 0x22, 0xf3, 0x7b, 0xa1, 0xcf, 0x91, 0x5c, 0xee, 0x99, 0x28, 0x49, 0x57,
- 0xda, 0xea, 0x8d, 0x30, 0x23, 0x99, 0x22, 0x7b, 0x92, 0x4c, 0x71, 0x9a, 0x89, 0x88, 0x72, 0x2f,
- 0x1f, 0xd2, 0xa1, 0x48, 0x0e, 0xb4, 0x13, 0x86, 0x1e, 0x12, 0xcb, 0xf8, 0x56, 0x06, 0xce, 0xa4,
- 0xaa, 0x8b, 0x59, 0xad, 0x5c, 0x2f, 0xad, 0xac, 0xc3, 0xb8, 0x52, 0x9a, 0x63, 0x9c, 0x26, 0xf4,
- 0xc3, 0xe0, 0x6d, 0x31, 0x5e, 0x84, 0xb1, 0xf0, 0xb1, 0x92, 0xcc, 0xc9, 0xa1, 0x43, 0x93, 0x40,
- 0xf9, 0xe6, 0x55, 0x03, 0x60, 0x5f, 0xf0, 0x54, 0xad, 0x8a, 0x8d, 0x7f, 0x92, 0xe5, 0xb9, 0x5f,
- 0x9f, 0xd9, 0x28, 0xae, 0xe9, 0xa6, 0xc0, 0xac, 0x49, 0xbd, 0x63, 0xb7, 0x92, 0x65, 0x18, 0xa9,
- 0x05, 0x76, 0xd0, 0x95, 0x11, 0x2b, 0x66, 0x55, 0x32, 0x2c, 0x78, 0xb8, 0x18, 0xc5, 0x2c, 0xf0,
- 0x11, 0xa2, 0x5d, 0x90, 0x11, 0xa2, 0x58, 0x14, 0xff, 0x61, 0x06, 0x26, 0x54, 0x62, 0xf2, 0x01,
- 0x4c, 0xc9, 0xd8, 0x94, 0x3c, 0x8e, 0x87, 0x78, 0x59, 0x95, 0x56, 0x50, 0x32, 0x36, 0xa5, 0x1a,
- 0xf7, 0x43, 0xc3, 0x57, 0xb7, 0xea, 0x8e, 0x8a, 0x4c, 0x1a, 0x40, 0x5a, 0x3b, 0xb6, 0x75, 0x40,
- 0xed, 0x7d, 0xea, 0x07, 0x16, 0xb7, 0x56, 0x11, 0x0f, 0xb0, 0x92, 0xfd, 0xfd, 0xdb, 0x25, 0x6e,
- 0xa8, 0xc2, 0x46, 0x42, 0x04, 0x19, 0x4d, 0xd0, 0xa8, 0xaf, 0x4a, 0xad, 0x1d, 0x7b, 0x8b, 0x17,
- 0x72, 0x3a, 0xe3, 0xcf, 0x46, 0xf8, 0x74, 0x13, 0xa1, 0x6c, 0xb7, 0x61, 0xea, 0x41, 0xb5, 0x52,
- 0x56, 0x74, 0xcc, 0x7a, 0x26, 0xa4, 0xe5, 0xc7, 0x01, 0xf5, 0xda, 0x76, 0x53, 0xde, 0x77, 0xa3,
- 0x23, 0xc8, 0x75, 0x1a, 0xf5, 0x74, 0xfd, 0x73, 0x8c, 0x23, 0xab, 0x83, 0xdf, 0xac, 0xc3, 0x3a,
- 0xb2, 0x03, 0xd6, 0xe1, 0xdb, 0xad, 0x66, 0x8f, 0x3a, 0x74, 0x8e, 0x64, 0x0f, 0xaf, 0xbe, 0x7b,
- 0xdd, 0x6d, 0xa5, 0x96, 0x5c, 0xff, 0x5a, 0x5e, 0x12, 0xb5, 0x3c, 0x2f, 0x34, 0x0a, 0xa9, 0xf5,
- 0x24, 0xb8, 0x46, 0xfb, 0xc4, 0xd0, 0x89, 0xfb, 0xc4, 0xdf, 0xcc, 0xc0, 0x08, 0x17, 0x5f, 0xc5,
- 0x34, 0xee, 0x21, 0x20, 0x6f, 0x3d, 0x1d, 0x01, 0xb9, 0x80, 0xe7, 0x84, 0x36, 0xa1, 0x79, 0x19,
- 0xa9, 0xc4, 0xd6, 0x85, 0x34, 0x84, 0xc7, 0xd7, 0x22, 0x5e, 0x72, 0xf2, 0xb2, 0x20, 0xd5, 0x28,
- 0x8a, 0xc4, 0xe8, 0x89, 0x8e, 0xca, 0x32, 0xf2, 0xc6, 0xa8, 0x88, 0x22, 0xa1, 0xc7, 0x8e, 0x58,
- 0x85, 0x31, 0x11, 0x9b, 0x62, 0xe9, 0x50, 0xbc, 0x09, 0x17, 0x34, 0xab, 0x9e, 0xc6, 0xd2, 0x61,
- 0x24, 0x9a, 0x8b, 0xe8, 0x16, 0xd6, 0xf6, 0xa1, 0x96, 0x4a, 0x57, 0x22, 0x92, 0x07, 0x3c, 0xc5,
- 0x24, 0x0f, 0xf6, 0xab, 0x47, 0xf7, 0x0f, 0xe1, 0x22, 0xea, 0x95, 0x74, 0x70, 0x4f, 0x89, 0xed,
- 0x1b, 0xf1, 0x20, 0xab, 0x50, 0x40, 0x4b, 0x30, 0xda, 0xe0, 0xab, 0xa6, 0x5a, 0xe1, 0xf1, 0x0f,
- 0x84, 0x35, 0x6f, 0xc0, 0xcb, 0xc4, 0x72, 0x8b, 0xb9, 0x1e, 0x26, 0x28, 0x8d, 0x9f, 0xc9, 0x42,
- 0x21, 0x3e, 0xfb, 0xc8, 0x3b, 0x30, 0x1e, 0x06, 0x5b, 0x0e, 0x9d, 0x9f, 0xf1, 0x6d, 0x28, 0x8a,
- 0xce, 0xac, 0x27, 0x26, 0x54, 0xd0, 0xc9, 0x22, 0xe4, 0xd9, 0x22, 0x8e, 0x27, 0xf1, 0xed, 0x0a,
- 0x98, 0xea, 0x8c, 0x24, 0xf1, 0x48, 0x0d, 0x66, 0xd9, 0xa2, 0xa9, 0x39, 0xed, 0xdd, 0x26, 0x5d,
- 0x75, 0x77, 0xdd, 0x6e, 0x10, 0xe5, 0xe9, 0xe3, 0x17, 0x18, 0xbb, 0xd5, 0xd4, 0x8a, 0xf5, 0x2c,
- 0x7d, 0x29, 0xd4, 0x4a, 0x8a, 0xf1, 0xa1, 0x01, 0x52, 0x8c, 0x2b, 0x3b, 0xeb, 0x1f, 0x67, 0x61,
- 0x5c, 0x99, 0x7e, 0xe4, 0x2a, 0xe4, 0xab, 0xfe, 0xaa, 0x5b, 0xdf, 0x0f, 0xa3, 0x28, 0x4e, 0x1e,
- 0x1f, 0x15, 0xc7, 0x1c, 0xdf, 0x6a, 0x22, 0xd0, 0x0c, 0x8b, 0xc9, 0x12, 0x4c, 0xf2, 0xbf, 0x64,
- 0xce, 0x8c, 0x6c, 0xa4, 0x5b, 0xe3, 0xc8, 0x32, 0x5b, 0x86, 0xba, 0xd9, 0x6a, 0x24, 0xe4, 0xab,
- 0x00, 0x1c, 0x80, 0x7e, 0xf7, 0xb9, 0xc1, 0x23, 0x06, 0x88, 0x0a, 0x52, 0x3c, 0xee, 0x15, 0x86,
- 0xe4, 0xeb, 0x3c, 0x96, 0xb3, 0x5c, 0x2e, 0x43, 0x83, 0x87, 0x3c, 0x60, 0xfc, 0xad, 0xf4, 0xc8,
- 0x2b, 0x2a, 0x4b, 0x91, 0xe6, 0x66, 0xc1, 0xa4, 0x75, 0xf7, 0x11, 0xf5, 0x0e, 0x4b, 0x01, 0x22,
- 0x2a, 0x18, 0xc6, 0xff, 0x9a, 0x51, 0x16, 0x19, 0x59, 0xc3, 0x34, 0xd5, 0x7c, 0x02, 0x09, 0x6b,
- 0xaa, 0xf0, 0x8a, 0x21, 0xe1, 0x26, 0xdd, 0x59, 0x7a, 0x5e, 0x18, 0x76, 0xcd, 0x86, 0xd3, 0x30,
- 0x96, 0xbe, 0x9a, 0x03, 0xc9, 0x17, 0x60, 0x08, 0xbb, 0x2e, 0x7b, 0x62, 0xd3, 0xe4, 0x29, 0x3f,
- 0xc4, 0xfa, 0x0c, 0x1b, 0x82, 0x94, 0xe4, 0xd3, 0xc2, 0x67, 0x99, 0x77, 0xfe, 0x94, 0x72, 0x54,
- 0xb3, 0xef, 0x08, 0x8f, 0xf7, 0x28, 0xf8, 0x8e, 0x32, 0x7b, 0xfe, 0x76, 0x16, 0x0a, 0xf1, 0xa5,
- 0x4d, 0xde, 0x87, 0x09, 0x79, 0xfc, 0xae, 0xd8, 0x22, 0xe1, 0xc3, 0x84, 0x48, 0xb8, 0x20, 0xcf,
- 0xe0, 0x3d, 0x5b, 0xb5, 0xbe, 0x32, 0x35, 0x02, 0x26, 0x0b, 0x6d, 0x88, 0x60, 0x78, 0xca, 0xa2,
- 0x0a, 0xdc, 0xa0, 0x13, 0x0b, 0x21, 0x2c, 0xd1, 0xc8, 0x9b, 0x90, 0xbb, 0x7f, 0xbb, 0x24, 0x7c,
- 0xdb, 0x0a, 0xf1, 0x43, 0x9a, 0x1b, 0x89, 0xea, 0x26, 0xab, 0x0c, 0x9f, 0xac, 0x2a, 0xd1, 0xb6,
- 0x47, 0x34, 0x4b, 0x3b, 0x09, 0x0e, 0x1b, 0x77, 0x72, 0xd8, 0xed, 0xbb, 0x43, 0xf9, 0x5c, 0x61,
- 0x48, 0xc4, 0x8f, 0xfd, 0x1f, 0x72, 0x30, 0x16, 0xd6, 0x4f, 0x88, 0xea, 0x31, 0xcc, 0xbd, 0x83,
- 0xc9, 0x79, 0xc8, 0x4b, 0xe9, 0x4e, 0xb8, 0xb8, 0x8d, 0xfa, 0x42, 0xb2, 0x9b, 0x07, 0x29, 0xc6,
- 0xf1, 0x5d, 0xc1, 0x94, 0x3f, 0xc9, 0x0d, 0x08, 0x65, 0xb4, 0x5e, 0xc2, 0xdc, 0x10, 0x1b, 0x30,
- 0x33, 0x44, 0x23, 0x53, 0x90, 0x75, 0x78, 0x4c, 0xb2, 0x31, 0x33, 0xeb, 0x34, 0xc8, 0xfb, 0x90,
- 0xb7, 0x1b, 0x0d, 0xda, 0xb0, 0x6c, 0x69, 0x96, 0xd4, 0x6f, 0xd2, 0xe4, 0x19, 0x37, 0x7e, 0x66,
- 0x20, 0x55, 0x29, 0x20, 0x25, 0x18, 0x6b, 0xda, 0xdc, 0xd0, 0xb1, 0x31, 0xc0, 0x01, 0x14, 0x71,
- 0xc8, 0x33, 0xb2, 0x4d, 0x9f, 0x36, 0xc8, 0xab, 0x30, 0xc4, 0x46, 0x53, 0x9c, 0x38, 0x52, 0xa8,
- 0x64, 0x83, 0xc9, 0x3b, 0x6c, 0xe5, 0x39, 0x13, 0x11, 0xc8, 0xcb, 0x90, 0xeb, 0x2e, 0xee, 0x88,
- 0xb3, 0xa4, 0x10, 0x45, 0xbe, 0x0f, 0xd1, 0x58, 0x31, 0xb9, 0x09, 0xf9, 0x03, 0x3d, 0x68, 0xfa,
- 0x99, 0xd8, 0x30, 0x86, 0xf8, 0x21, 0x22, 0x79, 0x15, 0x72, 0xbe, 0xef, 0x0a, 0x5b, 0x9e, 0xd9,
- 0xd0, 0xc0, 0xf2, 0x41, 0x38, 0x6a, 0x8c, 0xbb, 0xef, 0xbb, 0x4b, 0x79, 0x18, 0xe1, 0x07, 0x8c,
- 0x71, 0x11, 0x20, 0xfa, 0xc6, 0xa4, 0xcb, 0xa2, 0xf1, 0x55, 0x18, 0x0b, 0xbf, 0x8d, 0x5c, 0x00,
- 0xd8, 0xa7, 0x87, 0xd6, 0x9e, 0xdd, 0x6e, 0x34, 0xb9, 0x74, 0x3a, 0x61, 0x8e, 0xed, 0xd3, 0xc3,
- 0x15, 0x04, 0x90, 0x73, 0x30, 0xda, 0x61, 0xc3, 0x2f, 0xe6, 0xf8, 0x84, 0x39, 0xd2, 0xe9, 0x6e,
- 0xb3, 0xa9, 0x3c, 0x0f, 0xa3, 0xa8, 0x67, 0x15, 0x2b, 0x72, 0xd2, 0x94, 0x3f, 0x8d, 0x3f, 0xcf,
- 0x61, 0x66, 0x21, 0xa5, 0x41, 0xe4, 0x25, 0x98, 0xac, 0x7b, 0x14, 0xcf, 0x32, 0x9b, 0x49, 0x68,
- 0xa2, 0x9e, 0x89, 0x08, 0x58, 0x6d, 0x90, 0xcb, 0x30, 0xdd, 0xe9, 0x6e, 0x37, 0x9d, 0x3a, 0xab,
- 0xcd, 0xaa, 0x6f, 0x8b, 0x54, 0x08, 0x13, 0xe6, 0x24, 0x07, 0xdf, 0xa3, 0x87, 0xe5, 0x6d, 0x0c,
- 0xba, 0x57, 0x50, 0x63, 0x26, 0x07, 0x61, 0xce, 0x77, 0x73, 0x5a, 0x81, 0xa3, 0x59, 0xe2, 0x59,
- 0x18, 0xb1, 0xed, 0xdd, 0xae, 0xc3, 0x83, 0x63, 0x4d, 0x98, 0xe2, 0x17, 0xf9, 0x14, 0xcc, 0x44,
- 0x61, 0xbc, 0x65, 0x33, 0x86, 0xb1, 0x19, 0x85, 0xb0, 0xa0, 0xcc, 0xe1, 0xe4, 0x0d, 0x20, 0x6a,
- 0x7d, 0xee, 0xf6, 0x87, 0xb4, 0xce, 0xe7, 0xe4, 0x84, 0x39, 0xa3, 0x94, 0x3c, 0xc0, 0x02, 0xf2,
- 0x22, 0x4c, 0x78, 0xd4, 0x47, 0xe9, 0x10, 0xbb, 0x0d, 0x13, 0xef, 0x99, 0xe3, 0x12, 0xc6, 0xfa,
- 0xee, 0x0a, 0x14, 0x94, 0xee, 0xc0, 0xb0, 0xd4, 0x3c, 0x0f, 0x80, 0x39, 0x15, 0xc1, 0xcd, 0x4e,
- 0xb5, 0x41, 0xbe, 0x04, 0x0b, 0x0a, 0x26, 0xcf, 0x01, 0x68, 0xd1, 0xa6, 0xb3, 0xeb, 0x6c, 0x37,
- 0xa9, 0x98, 0x6f, 0xc9, 0x59, 0x1d, 0x5e, 0x21, 0xcd, 0xf9, 0x88, 0x9a, 0x67, 0x07, 0x5c, 0x16,
- 0xb4, 0x64, 0x15, 0xe6, 0x62, 0x9c, 0x69, 0xc3, 0xea, 0x76, 0x7a, 0x46, 0xa3, 0x8b, 0x78, 0x12,
- 0x9d, 0x27, 0x6d, 0x6c, 0x76, 0x8c, 0x6f, 0xc2, 0x84, 0x3a, 0x27, 0x59, 0x27, 0xa8, 0x72, 0x89,
- 0x98, 0x7d, 0xe3, 0x21, 0xac, 0xca, 0xee, 0x85, 0x53, 0x11, 0x4a, 0x10, 0xa6, 0xb7, 0x37, 0x27,
- 0x43, 0x28, 0x0e, 0xe1, 0x8b, 0x30, 0xd1, 0x70, 0xfc, 0x4e, 0xd3, 0x3e, 0xb4, 0xa2, 0xe4, 0xd6,
- 0xe6, 0xb8, 0x80, 0xa1, 0xe2, 0x67, 0x09, 0x66, 0x12, 0xfb, 0xa0, 0x22, 0x69, 0xf0, 0x7d, 0xbd,
- 0xbf, 0xa4, 0x61, 0xb4, 0x61, 0x42, 0x3d, 0xd7, 0x4e, 0xc8, 0xd9, 0x71, 0x16, 0x23, 0xd0, 0xf0,
- 0x4d, 0x7f, 0xe4, 0xf8, 0xa8, 0x98, 0x75, 0x1a, 0x18, 0x77, 0xe6, 0x0a, 0xe4, 0xa5, 0xc4, 0x26,
- 0x04, 0x25, 0x7c, 0x4c, 0x90, 0x09, 0x8d, 0xcd, 0xb0, 0xd4, 0x78, 0x15, 0x46, 0xc5, 0xd1, 0xd5,
- 0xff, 0x09, 0xc1, 0xf8, 0xe1, 0x2c, 0x4c, 0x9b, 0x94, 0x6d, 0xac, 0x94, 0x27, 0xea, 0x79, 0x66,
- 0xaf, 0xe8, 0xe9, 0x71, 0x4c, 0xb5, 0xb6, 0xf5, 0x49, 0x91, 0xf3, 0xab, 0x19, 0x98, 0x4d, 0xc1,
- 0xfd, 0x48, 0x29, 0x62, 0x6f, 0xc1, 0x58, 0xc5, 0xb1, 0x9b, 0xa5, 0x46, 0x23, 0x0c, 0x47, 0x83,
- 0x72, 0x3e, 0xe6, 0x91, 0xb2, 0x19, 0x54, 0x15, 0x62, 0x42, 0x54, 0xf2, 0x9a, 0x98, 0x14, 0x51,
- 0x82, 0x75, 0x9c, 0x14, 0xdf, 0x39, 0x2a, 0x02, 0xff, 0xa6, 0x8d, 0x70, 0x8a, 0x60, 0x6c, 0x61,
- 0x0e, 0x8c, 0x5c, 0x8a, 0x9e, 0xd9, 0xa1, 0x4b, 0x8f, 0x2d, 0x1c, 0x6f, 0xde, 0x40, 0x59, 0x72,
- 0x7e, 0x22, 0x0b, 0x67, 0xd3, 0x09, 0x3f, 0x6a, 0xb6, 0x5f, 0xcc, 0x4f, 0xa4, 0xc4, 0x43, 0xc7,
- 0x6c, 0xbf, 0x3c, 0x99, 0x11, 0xe2, 0x47, 0x08, 0x64, 0x07, 0x26, 0x57, 0x6d, 0x3f, 0x58, 0xa1,
- 0xb6, 0x17, 0x6c, 0x53, 0x3b, 0x18, 0x40, 0x92, 0x97, 0x86, 0x04, 0xf3, 0x28, 0x4c, 0xec, 0x49,
- 0xca, 0x98, 0xac, 0xad, 0xb3, 0x0d, 0x27, 0xca, 0xd0, 0x00, 0x13, 0xe5, 0x1b, 0x30, 0x5d, 0xa3,
- 0x2d, 0xbb, 0xb3, 0xe7, 0x7a, 0x32, 0x54, 0xc0, 0x35, 0x98, 0x0c, 0x41, 0xa9, 0xb3, 0x45, 0x2f,
- 0xd6, 0xf0, 0x95, 0x8e, 0x88, 0xb6, 0x12, 0xbd, 0xd8, 0xf8, 0x3b, 0x59, 0x38, 0x57, 0xaa, 0x0b,
- 0xab, 0x48, 0x51, 0x20, 0x8d, 0xb7, 0x3f, 0xe6, 0xba, 0xc9, 0x75, 0x18, 0xbb, 0x6f, 0x3f, 0x5e,
- 0xa5, 0xb6, 0x4f, 0x7d, 0x91, 0x6b, 0x91, 0x8b, 0xbd, 0xf6, 0xe3, 0xe8, 0xf1, 0xc7, 0x8c, 0x70,
- 0x54, 0x35, 0xc2, 0xd0, 0x13, 0xaa, 0x11, 0x0c, 0x18, 0x59, 0x71, 0x9b, 0x0d, 0x71, 0xd6, 0x8b,
- 0x17, 0xe7, 0x3d, 0x84, 0x98, 0xa2, 0xc4, 0xf8, 0xd3, 0x0c, 0x4c, 0x85, 0x5f, 0x8c, 0x9f, 0xf0,
- 0xb1, 0x77, 0xc9, 0x65, 0x18, 0xc5, 0x8a, 0xc2, 0xa4, 0xf0, 0x78, 0x68, 0x34, 0x29, 0x66, 0xcc,
- 0x6b, 0x98, 0xb2, 0x50, 0xed, 0x89, 0xe1, 0x27, 0xeb, 0x09, 0xe3, 0x1f, 0xe0, 0x63, 0xb6, 0xda,
- 0x4a, 0x76, 0x12, 0x29, 0x1f, 0x92, 0x19, 0xf0, 0x43, 0xb2, 0x4f, 0x6d, 0x48, 0x72, 0x3d, 0x87,
- 0xe4, 0x47, 0xb2, 0x30, 0x1e, 0x7e, 0xec, 0x27, 0x2c, 0x28, 0x7f, 0xd8, 0xae, 0x81, 0xc2, 0xfb,
- 0xd4, 0x94, 0xbd, 0x42, 0x44, 0xd1, 0xf9, 0x02, 0x8c, 0x88, 0xc5, 0x94, 0x89, 0x19, 0x31, 0xc7,
- 0x46, 0x77, 0x69, 0x4a, 0xb0, 0x1e, 0xc1, 0x01, 0xf5, 0x4d, 0x41, 0x87, 0xf1, 0x93, 0xb6, 0xe8,
- 0xb6, 0xb0, 0x6d, 0x78, 0x66, 0xcf, 0xa8, 0xf4, 0xf8, 0x49, 0x51, 0xc3, 0x06, 0x3a, 0x9d, 0xfe,
- 0x59, 0x1e, 0x0a, 0x71, 0x92, 0x93, 0xd3, 0x1e, 0xac, 0x77, 0xb7, 0xf9, 0x55, 0x85, 0xa7, 0x3d,
- 0xe8, 0x74, 0xb7, 0x4d, 0x06, 0x43, 0xd3, 0x27, 0xcf, 0x79, 0x84, 0xad, 0x9e, 0x10, 0xa6, 0x4f,
- 0x9e, 0xf3, 0x48, 0x33, 0x7d, 0xf2, 0x9c, 0x47, 0xa8, 0x48, 0x58, 0xad, 0x61, 0x6c, 0x01, 0xbc,
- 0xa7, 0x08, 0x45, 0x42, 0xd3, 0x8f, 0xa7, 0x30, 0x93, 0x68, 0xec, 0xa8, 0x5c, 0xa2, 0xb6, 0x27,
- 0x42, 0xf4, 0x8b, 0xed, 0x0c, 0x8f, 0xca, 0x6d, 0x04, 0x5b, 0x01, 0x83, 0x9b, 0x2a, 0x12, 0x69,
- 0x02, 0x51, 0x7e, 0xca, 0x05, 0x7c, 0xf2, 0xdd, 0x5a, 0x1a, 0x20, 0xce, 0xa9, 0xac, 0x2d, 0x75,
- 0x35, 0xa7, 0xf0, 0x7d, 0x9a, 0xda, 0xdf, 0x75, 0x11, 0x77, 0x14, 0x15, 0x48, 0xf9, 0x13, 0x99,
- 0xc9, 0x98, 0x28, 0xc0, 0xe3, 0x92, 0x86, 0x6a, 0xa4, 0x88, 0x09, 0x79, 0x0f, 0xc6, 0xd5, 0x88,
- 0x11, 0x3c, 0xae, 0xc1, 0x0b, 0x3c, 0x94, 0x64, 0x8f, 0xa4, 0xb7, 0x2a, 0x01, 0xd9, 0x86, 0x73,
- 0x65, 0xb7, 0xed, 0x77, 0x5b, 0x32, 0x68, 0x65, 0x14, 0x2a, 0x1b, 0x70, 0x28, 0xd0, 0xfd, 0xbc,
- 0x2e, 0x50, 0x44, 0x80, 0x02, 0xe9, 0x21, 0xa2, 0x5f, 0x40, 0x7a, 0x31, 0x22, 0x1b, 0x30, 0x8e,
- 0x1a, 0x54, 0x61, 0x82, 0x3a, 0xae, 0x6f, 0x1b, 0x51, 0x49, 0x85, 0x2d, 0x0c, 0x1e, 0x30, 0xcd,
- 0x6e, 0x35, 0xa5, 0x83, 0x82, 0xaa, 0x09, 0x56, 0x90, 0xc9, 0x57, 0x61, 0x8a, 0x5f, 0xd1, 0xb6,
- 0xe8, 0x36, 0x9f, 0x3b, 0x13, 0x9a, 0x26, 0x42, 0x2f, 0xe4, 0x8f, 0xf9, 0x42, 0x6f, 0x7d, 0x40,
- 0xb7, 0xf9, 0xd8, 0x6b, 0xee, 0x41, 0x1a, 0x3e, 0xd9, 0x84, 0xd9, 0x15, 0xdb, 0xe7, 0x40, 0xc5,
- 0xf5, 0x7f, 0x12, 0x35, 0xb4, 0x68, 0xb6, 0xbd, 0x67, 0xfb, 0x52, 0x11, 0x9e, 0xea, 0xea, 0x9f,
- 0x46, 0x4f, 0x7e, 0x38, 0x03, 0xf3, 0x9a, 0x9e, 0x5c, 0xd8, 0x99, 0xb5, 0x68, 0x3b, 0x40, 0x3f,
- 0xa0, 0xa9, 0xc5, 0xa2, 0x14, 0x4a, 0x7b, 0xa0, 0xf1, 0x21, 0x89, 0xa9, 0xe2, 0xbd, 0xa8, 0x5c,
- 0xb5, 0x87, 0xee, 0xc5, 0x43, 0x2c, 0x54, 0x5c, 0xd3, 0xd3, 0xfa, 0x42, 0x8d, 0xad, 0x6b, 0x89,
- 0x66, 0xdc, 0x8a, 0xf7, 0xb7, 0x50, 0x74, 0x65, 0x42, 0x45, 0xd7, 0x1c, 0x0c, 0x63, 0xaf, 0xca,
- 0x00, 0x52, 0xf8, 0xc3, 0xf8, 0xb4, 0xba, 0x0f, 0x09, 0xb1, 0xb0, 0xef, 0x3e, 0x64, 0xfc, 0x4f,
- 0x23, 0x30, 0x1d, 0x9b, 0x16, 0xe2, 0x9e, 0x9a, 0x49, 0xdc, 0x53, 0x6b, 0x00, 0x5c, 0xd5, 0x3b,
- 0xa0, 0x4e, 0x56, 0xfa, 0x20, 0x8e, 0x0b, 0x0f, 0xe2, 0x70, 0x4d, 0x29, 0x6c, 0x18, 0x53, 0xbe,
- 0x62, 0x07, 0xd4, 0x91, 0x87, 0x4c, 0xf9, 0xa2, 0x57, 0x98, 0x46, 0x6c, 0x48, 0x11, 0x86, 0x31,
- 0x74, 0xac, 0xea, 0x02, 0xea, 0x30, 0x80, 0xc9, 0xe1, 0xe4, 0x25, 0x18, 0x61, 0x42, 0x54, 0xb5,
- 0x22, 0x36, 0x41, 0x3c, 0x5b, 0x98, 0x94, 0xc5, 0x24, 0x16, 0x51, 0x44, 0x6e, 0xc1, 0x04, 0xff,
- 0x4b, 0x44, 0x98, 0x19, 0xd1, 0x8d, 0x1f, 0x2d, 0xa7, 0x21, 0x83, 0xcc, 0x68, 0x78, 0xec, 0x76,
- 0x51, 0xeb, 0xa2, 0x5a, 0xa7, 0x5a, 0x11, 0xb1, 0xc6, 0xf1, 0x76, 0xe1, 0x73, 0x20, 0xab, 0x22,
- 0x42, 0x60, 0xb2, 0x8c, 0x70, 0xc4, 0xc8, 0xe3, 0x9d, 0x12, 0x65, 0x19, 0xee, 0x80, 0x61, 0x8a,
- 0x12, 0x72, 0x95, 0xbf, 0xc4, 0xa0, 0x58, 0xc8, 0x53, 0x36, 0xe2, 0xbb, 0x05, 0x2a, 0x26, 0x50,
- 0x36, 0x0c, 0x8b, 0x59, 0xe5, 0xec, 0xef, 0xe5, 0x96, 0xed, 0x34, 0xc5, 0xb6, 0x82, 0x95, 0x23,
- 0x2e, 0x65, 0x50, 0x33, 0x42, 0x20, 0xef, 0xc0, 0x14, 0xfb, 0x51, 0x76, 0x5b, 0x2d, 0xb7, 0x8d,
- 0xec, 0xc7, 0xa3, 0x18, 0x72, 0x48, 0x52, 0xc7, 0x22, 0x5e, 0x4b, 0x0c, 0x97, 0x9d, 0x27, 0xf8,
- 0xca, 0xdb, 0xe5, 0x6f, 0x44, 0x13, 0xd1, 0x79, 0x82, 0xa4, 0x3e, 0x87, 0x9b, 0x2a, 0x12, 0x79,
- 0x0b, 0x26, 0xd9, 0xcf, 0x3b, 0xce, 0x23, 0xca, 0x2b, 0x9c, 0x8c, 0xcc, 0x1b, 0x90, 0x6a, 0x97,
- 0x95, 0xf0, 0xfa, 0x74, 0x4c, 0xf2, 0x45, 0x38, 0x83, 0x9c, 0xea, 0x6e, 0x87, 0x36, 0x4a, 0x3b,
- 0x3b, 0x4e, 0xd3, 0xe1, 0xd6, 0x68, 0x3c, 0x96, 0x0a, 0xea, 0xe0, 0x79, 0xc5, 0x88, 0x61, 0xd9,
- 0x11, 0x8a, 0x99, 0x4e, 0x49, 0xb6, 0xa0, 0x50, 0xee, 0xfa, 0x81, 0xdb, 0x2a, 0x05, 0x81, 0xe7,
- 0x6c, 0x77, 0x03, 0xea, 0xcf, 0x4f, 0x6b, 0x11, 0x47, 0xd8, 0xe2, 0x08, 0x0b, 0xb9, 0x3e, 0xa8,
- 0x8e, 0x14, 0x96, 0x1d, 0x92, 0x98, 0x09, 0x26, 0xc6, 0x3f, 0xcf, 0xc0, 0xa4, 0x46, 0x4a, 0xde,
- 0x84, 0x89, 0xdb, 0x9e, 0x43, 0xdb, 0x8d, 0xe6, 0xa1, 0x72, 0x51, 0xc5, 0x5b, 0xcc, 0x8e, 0x80,
- 0xf3, 0x56, 0x6b, 0x68, 0xa1, 0x9e, 0x27, 0x9b, 0x6a, 0x2a, 0x7a, 0x9d, 0x7b, 0x22, 0x8b, 0x09,
- 0x9a, 0x8b, 0x42, 0x20, 0xe1, 0x04, 0x15, 0xb3, 0x53, 0x41, 0x21, 0xef, 0xc2, 0x08, 0x7f, 0x0f,
- 0x16, 0x76, 0x8b, 0xe7, 0xd3, 0x9a, 0xc9, 0xbd, 0xde, 0x71, 0x22, 0xa2, 0xd1, 0x8f, 0x6f, 0x0a,
- 0x22, 0xe3, 0xe7, 0x32, 0x40, 0x92, 0xa8, 0x27, 0xe8, 0xbd, 0x4e, 0x34, 0x26, 0xfa, 0x42, 0xb8,
- 0x1a, 0x73, 0x9a, 0xce, 0x9c, 0xd5, 0xc4, 0x0b, 0x78, 0xc7, 0x8b, 0x55, 0xa7, 0x2a, 0xe2, 0x78,
- 0xb1, 0xf1, 0x43, 0x59, 0x80, 0x08, 0x9b, 0x7c, 0x8e, 0x67, 0xe8, 0xfa, 0x62, 0xd7, 0x6e, 0x3a,
- 0x3b, 0x8e, 0x1e, 0xb2, 0x16, 0x99, 0x7c, 0x43, 0x96, 0x98, 0x3a, 0x22, 0x79, 0x1f, 0xa6, 0x6b,
- 0xeb, 0x3a, 0xad, 0x62, 0x16, 0xef, 0x77, 0xac, 0x18, 0x79, 0x1c, 0x1b, 0xed, 0x93, 0xd5, 0xd1,
- 0xe0, 0xf6, 0xc9, 0x7c, 0x20, 0x44, 0x09, 0xdb, 0x58, 0x6a, 0xeb, 0xc2, 0xf2, 0xbf, 0x11, 0xbe,
- 0x6a, 0xe2, 0xd7, 0xf9, 0x1d, 0xab, 0x23, 0x5c, 0x02, 0xd8, 0x3e, 0xa1, 0xe1, 0x45, 0x1d, 0x39,
- 0xdc, 0xc3, 0xb3, 0xfd, 0xe7, 0x51, 0xed, 0xd7, 0x72, 0x03, 0x2a, 0xb4, 0x1d, 0xcf, 0xec, 0xbd,
- 0x27, 0x32, 0x26, 0x18, 0xd6, 0x1c, 0x76, 0xb5, 0xd6, 0x09, 0x83, 0x99, 0x9b, 0xd1, 0x25, 0x85,
- 0x9b, 0x15, 0xa4, 0xd8, 0xd8, 0xfc, 0xfd, 0x0c, 0x9c, 0x49, 0xa5, 0x25, 0xd7, 0x00, 0x22, 0x9d,
- 0x92, 0xe8, 0x25, 0xdc, 0x31, 0xa3, 0xc0, 0x3f, 0xa6, 0x82, 0x41, 0xbe, 0x12, 0xd7, 0x06, 0x9d,
- 0x7c, 0x10, 0x2e, 0xc8, 0x78, 0x7b, 0xba, 0x36, 0x28, 0x45, 0x07, 0x64, 0xfc, 0x6a, 0x0e, 0x66,
- 0x94, 0xb8, 0x42, 0xfc, 0x5b, 0x4f, 0xb0, 0x17, 0xdf, 0x87, 0x09, 0xd6, 0x1a, 0xa7, 0x2e, 0xbc,
- 0x06, 0xb9, 0xe1, 0xcb, 0x6b, 0x09, 0x97, 0x4b, 0xc1, 0xed, 0x9a, 0x8a, 0xcc, 0xa3, 0x60, 0xe2,
- 0xd6, 0x89, 0x0f, 0x12, 0xf5, 0xa4, 0xf7, 0xa0, 0xc6, 0x9c, 0xf8, 0x30, 0x59, 0x39, 0x6c, 0xdb,
- 0xad, 0xb0, 0x36, 0x6e, 0x00, 0xf3, 0xa9, 0x9e, 0xb5, 0x69, 0xd8, 0xbc, 0xba, 0xc8, 0x39, 0x89,
- 0x97, 0xa5, 0xf8, 0xc5, 0x6b, 0x54, 0x0b, 0xef, 0xc3, 0x4c, 0xe2, 0xa3, 0x4f, 0x15, 0x90, 0x73,
- 0x0b, 0x48, 0xf2, 0x3b, 0x52, 0x38, 0x7c, 0x4a, 0x0f, 0xf7, 0x7a, 0x26, 0x7c, 0xbc, 0x6e, 0xb5,
- 0xec, 0x76, 0x83, 0x9b, 0xd3, 0x2c, 0xaa, 0xe1, 0x3a, 0x7f, 0x3e, 0xab, 0xba, 0xbd, 0x3e, 0xeb,
- 0xab, 0xee, 0x0b, 0xda, 0x6d, 0xf8, 0x62, 0xaf, 0x31, 0x1d, 0x48, 0xeb, 0xf0, 0xed, 0x1c, 0x9c,
- 0xeb, 0x41, 0x49, 0x0e, 0xe3, 0x93, 0x88, 0x6b, 0x21, 0x6e, 0xf4, 0xaf, 0xf0, 0x69, 0x4c, 0x25,
- 0xf2, 0x39, 0x1e, 0xf8, 0xa2, 0x8e, 0x79, 0xf2, 0xc5, 0xfd, 0x1b, 0xd5, 0xf8, 0xfb, 0x21, 0x34,
- 0x1e, 0xf1, 0x82, 0x43, 0xc9, 0xfb, 0x30, 0x8c, 0x3e, 0xcf, 0xb1, 0xc8, 0x86, 0x0c, 0x03, 0xe1,
- 0x4a, 0x6c, 0x4e, 0xf6, 0x53, 0x8b, 0xcd, 0xc9, 0x00, 0xe4, 0xb3, 0x90, 0x2b, 0x6d, 0xd5, 0xc4,
- 0xb8, 0x4c, 0xa9, 0xe4, 0x5b, 0xb5, 0x28, 0xaf, 0x88, 0xad, 0x25, 0x00, 0x61, 0x14, 0x8c, 0xf0,
- 0x4e, 0x79, 0x5d, 0x8c, 0x8a, 0x4a, 0x78, 0xa7, 0xbc, 0x1e, 0x11, 0xee, 0xd6, 0xb5, 0x38, 0x51,
- 0x77, 0xca, 0xeb, 0x1f, 0xdf, 0xb4, 0xff, 0xf7, 0xb2, 0x3c, 0x5a, 0x07, 0x6f, 0xd8, 0xfb, 0x30,
- 0xa1, 0x85, 0xe3, 0xce, 0x44, 0xf2, 0x58, 0x18, 0x3a, 0x3d, 0x66, 0x31, 0xa4, 0x11, 0xc8, 0x0c,
- 0x3d, 0xec, 0x37, 0x4a, 0xbc, 0xaa, 0xb1, 0x4d, 0xc8, 0x01, 0x65, 0xe2, 0x78, 0x86, 0x9e, 0x90,
- 0x84, 0xdc, 0x84, 0xfc, 0x06, 0x6d, 0xdb, 0xed, 0x20, 0x54, 0x88, 0xa2, 0x71, 0x71, 0x80, 0x30,
- 0x5d, 0x6a, 0x08, 0x11, 0xd1, 0x10, 0xb6, 0xbb, 0xed, 0xd7, 0x3d, 0x07, 0xa3, 0xfa, 0x84, 0x67,
- 0x31, 0x37, 0x84, 0x55, 0x4a, 0x74, 0x06, 0x31, 0x22, 0xe3, 0xe7, 0x33, 0x30, 0x2a, 0x06, 0x92,
- 0x67, 0x56, 0xdb, 0x8d, 0xce, 0x12, 0xe1, 0x3c, 0xb0, 0xeb, 0xc4, 0x9d, 0x07, 0x76, 0x79, 0xe8,
- 0x9c, 0x31, 0xe1, 0x58, 0x17, 0x3e, 0x0d, 0xe2, 0x6c, 0x94, 0x1e, 0x8f, 0x7a, 0xe2, 0xac, 0x10,
- 0x75, 0x50, 0x87, 0x2c, 0xe3, 0xef, 0x8a, 0x2f, 0xbb, 0x53, 0x5e, 0x27, 0x8b, 0x90, 0x5f, 0x75,
- 0x79, 0x14, 0x28, 0x35, 0x4d, 0x6e, 0x53, 0xc0, 0xd4, 0x0e, 0x92, 0x78, 0xec, 0xfb, 0xd6, 0x3d,
- 0x57, 0xdc, 0x65, 0x94, 0xef, 0xeb, 0x70, 0x60, 0xec, 0xfb, 0x42, 0xd4, 0x81, 0xbf, 0x8f, 0xa6,
- 0x6c, 0x12, 0x0f, 0x6f, 0x62, 0xea, 0x92, 0xbb, 0xaa, 0xa3, 0x9b, 0x28, 0x92, 0x3b, 0xc5, 0x42,
- 0xaf, 0x9d, 0xe2, 0xe1, 0x4d, 0x33, 0x85, 0x0a, 0xdf, 0xd5, 0x22, 0x70, 0x8d, 0x7a, 0x8f, 0x9e,
- 0xe1, 0x5d, 0x3a, 0xfd, 0x5d, 0x2d, 0xde, 0xbc, 0x81, 0x36, 0xe9, 0x3f, 0xcc, 0xc2, 0xd9, 0x74,
- 0x42, 0xb5, 0x2d, 0x99, 0x3e, 0x6d, 0xb9, 0x02, 0xf9, 0x15, 0xd7, 0x0f, 0x14, 0x23, 0x41, 0x54,
- 0xff, 0xef, 0x09, 0x98, 0x19, 0x96, 0xb2, 0x3b, 0x37, 0xfb, 0x3b, 0x5c, 0x9e, 0xc8, 0x0f, 0x63,
- 0x54, 0xb0, 0x3b, 0x37, 0x2f, 0x22, 0x77, 0x20, 0x6f, 0x0a, 0x47, 0xab, 0x58, 0xd7, 0x48, 0x70,
- 0x28, 0x4d, 0x11, 0x4f, 0x40, 0xb4, 0xa8, 0xe8, 0x02, 0x46, 0x4a, 0x30, 0x2a, 0x46, 0x3f, 0xf6,
- 0x74, 0x9c, 0x32, 0x65, 0xf4, 0x44, 0x05, 0x92, 0x8e, 0xed, 0x28, 0xf8, 0x08, 0x58, 0xad, 0x48,
- 0x9f, 0x29, 0xdc, 0x51, 0xf8, 0x23, 0xa1, 0x6e, 0x8f, 0x19, 0x22, 0x1a, 0x3f, 0x9c, 0x05, 0x90,
- 0x5a, 0x9b, 0x67, 0x76, 0x86, 0x7d, 0x56, 0x9b, 0x61, 0x8a, 0xbd, 0xd1, 0xe0, 0x99, 0x80, 0x1f,
- 0xa0, 0x39, 0xcf, 0xe0, 0x79, 0x80, 0x8b, 0x30, 0xbc, 0x11, 0x29, 0xb4, 0x84, 0x4b, 0x0a, 0xaa,
- 0xa3, 0x39, 0xdc, 0xd8, 0x86, 0xb9, 0x3b, 0x34, 0x88, 0xd4, 0x5b, 0xf2, 0xe9, 0xb1, 0x3f, 0xdb,
- 0xd7, 0x61, 0x4c, 0xe0, 0x87, 0xfb, 0x17, 0xd7, 0xc5, 0x88, 0xb0, 0x2f, 0xa8, 0x8b, 0x91, 0x08,
- 0x6c, 0x37, 0xaa, 0xd0, 0x26, 0x0d, 0xe8, 0xc7, 0x5b, 0x4d, 0x0d, 0x08, 0x6f, 0x0a, 0xb6, 0x6c,
- 0xb0, 0x1a, 0x4e, 0xec, 0x9f, 0x87, 0x70, 0x26, 0xfc, 0xf6, 0xa7, 0xc9, 0xf7, 0x3a, 0xbb, 0x52,
- 0x8a, 0x18, 0xff, 0x11, 0xc7, 0x3e, 0xb6, 0x27, 0x8f, 0x61, 0x41, 0x12, 0x6c, 0x39, 0xa1, 0xe1,
- 0xe4, 0x40, 0xb4, 0xe4, 0x1d, 0x18, 0x57, 0x68, 0x44, 0x8c, 0x7a, 0x54, 0x53, 0x1f, 0x38, 0xc1,
- 0x9e, 0xe5, 0x73, 0xb8, 0xaa, 0xa6, 0x56, 0xd0, 0x8d, 0x2f, 0xc3, 0xf3, 0xa1, 0xdb, 0x50, 0x4a,
- 0xd5, 0x31, 0xe6, 0x99, 0xd3, 0x31, 0x5f, 0x8b, 0x9a, 0x55, 0x6d, 0x87, 0x9e, 0xd1, 0x92, 0x37,
- 0x51, 0x9b, 0x25, 0x1a, 0xf3, 0x42, 0xc2, 0xd7, 0x5a, 0x71, 0xa9, 0x36, 0xde, 0x56, 0x3e, 0x36,
- 0x85, 0xa1, 0x46, 0x9c, 0x89, 0x13, 0xff, 0x70, 0x16, 0xa6, 0x1f, 0x54, 0x2b, 0xe5, 0xd0, 0xfa,
- 0xe8, 0x13, 0x96, 0xa7, 0x58, 0x6b, 0x5b, 0xef, 0xfd, 0xc6, 0xd8, 0x84, 0xd9, 0x58, 0x37, 0xa0,
- 0xe8, 0xf0, 0x1e, 0x77, 0x38, 0x09, 0xc1, 0x52, 0x6c, 0x38, 0x9b, 0xc6, 0xfe, 0xe1, 0x4d, 0x33,
- 0x86, 0x6d, 0xfc, 0x57, 0x10, 0xe3, 0x2b, 0xb6, 0xb0, 0xd7, 0x61, 0xac, 0xea, 0xfb, 0x5d, 0xea,
- 0x6d, 0x9a, 0xab, 0xaa, 0xaa, 0xc0, 0x41, 0xa0, 0xd5, 0xf5, 0x9a, 0x66, 0x84, 0x40, 0xae, 0x42,
- 0x5e, 0xc4, 0x07, 0x97, 0x7b, 0x02, 0x6a, 0x6d, 0xc3, 0xf0, 0xe2, 0x66, 0x58, 0x4c, 0xde, 0x84,
- 0x09, 0xfe, 0x37, 0x9f, 0x6d, 0xa2, 0xc3, 0x51, 0x39, 0x28, 0xd0, 0xf9, 0xec, 0x34, 0x35, 0x34,
- 0xf2, 0x1a, 0xe4, 0x4a, 0x65, 0x53, 0xa8, 0x83, 0x84, 0xdc, 0xe8, 0x59, 0x5c, 0x67, 0xa7, 0x5d,
- 0x22, 0xca, 0x26, 0x93, 0xfe, 0x64, 0xb0, 0x09, 0xa1, 0xc9, 0xc6, 0x19, 0x20, 0xb5, 0x4d, 0xb1,
- 0xc3, 0x0c, 0x61, 0xe4, 0x3a, 0x8c, 0x56, 0xb8, 0xc9, 0x9c, 0xd0, 0x63, 0xf3, 0x24, 0x7c, 0x1c,
- 0xa4, 0x05, 0x57, 0xe0, 0x20, 0x72, 0x55, 0x26, 0x27, 0xcb, 0x47, 0x7e, 0x2b, 0x3d, 0x32, 0x90,
- 0xbd, 0x0e, 0x23, 0x22, 0x8a, 0xf6, 0x98, 0x92, 0xb6, 0x24, 0x1e, 0x3d, 0x5b, 0xe0, 0x24, 0x1d,
- 0x58, 0xe1, 0x69, 0x3a, 0xb0, 0x6e, 0xc3, 0xb9, 0x3b, 0xa8, 0xbd, 0xd1, 0x63, 0x41, 0x6d, 0x9a,
- 0x55, 0xa1, 0x0f, 0xc7, 0x67, 0x20, 0xae, 0xe0, 0x89, 0x87, 0x93, 0xb2, 0xba, 0x9e, 0x9a, 0x53,
- 0xb6, 0x17, 0x23, 0xf2, 0x25, 0x98, 0x4b, 0x2b, 0x12, 0x5a, 0x73, 0x8c, 0x7a, 0x94, 0x5e, 0x81,
- 0x1a, 0xf5, 0x28, 0x8d, 0x03, 0x59, 0x85, 0x02, 0x87, 0x97, 0x1a, 0x2d, 0xa7, 0xcd, 0x35, 0xff,
- 0x5c, 0xab, 0x8e, 0x8e, 0x24, 0x82, 0xab, 0xcd, 0x0a, 0xf9, 0x0b, 0x80, 0xe6, 0x7a, 0x14, 0xa3,
- 0x24, 0x3f, 0x95, 0x61, 0xb7, 0x39, 0x1e, 0x73, 0x7a, 0xd3, 0x5c, 0xf5, 0x45, 0xc4, 0xbc, 0xb3,
- 0x91, 0x57, 0x51, 0x2d, 0xf0, 0x9c, 0xf6, 0xae, 0x70, 0x2b, 0xda, 0x10, 0x6e, 0x45, 0xef, 0x7c,
- 0x24, 0xb7, 0x22, 0xce, 0xca, 0x3f, 0x3e, 0x2a, 0x4e, 0x78, 0xa2, 0x4e, 0x5c, 0x45, 0xda, 0x17,
- 0xb0, 0xae, 0x43, 0xdf, 0xda, 0xcd, 0x36, 0x8f, 0x78, 0x4b, 0x1b, 0xbc, 0x91, 0xd3, 0xb8, 0x83,
- 0x63, 0xd7, 0x61, 0x3a, 0x0c, 0xab, 0x1b, 0x22, 0x24, 0x1a, 0x9a, 0xca, 0x81, 0x5d, 0x3c, 0xa5,
- 0xeb, 0x0a, 0xf7, 0xc6, 0x2d, 0x44, 0x17, 0x4f, 0xe9, 0xe7, 0x62, 0xe1, 0x34, 0x52, 0x27, 0x8f,
- 0x46, 0x42, 0xae, 0xc3, 0xc8, 0x7d, 0xfb, 0x71, 0x69, 0x97, 0x8a, 0xa4, 0x93, 0x93, 0x72, 0xfb,
- 0x43, 0xe0, 0x52, 0xfe, 0x8f, 0xb8, 0xaf, 0xc3, 0x73, 0xa6, 0x40, 0x23, 0xdf, 0x97, 0x81, 0xb3,
- 0x7c, 0x19, 0xcb, 0x56, 0xd6, 0x68, 0x10, 0xb0, 0x7e, 0x10, 0xa1, 0xf3, 0x2e, 0x45, 0x06, 0xdb,
- 0xe9, 0x78, 0xe8, 0x79, 0x6f, 0x88, 0x9d, 0x21, 0xec, 0x38, 0x5f, 0x94, 0x6a, 0x31, 0x88, 0x53,
- 0xe9, 0xc9, 0x06, 0x8c, 0xdf, 0xbf, 0x5d, 0x0a, 0xab, 0xe5, 0x81, 0xc9, 0x8b, 0x69, 0xbb, 0xa3,
- 0x82, 0x96, 0xe6, 0x69, 0xa0, 0xb2, 0x11, 0xde, 0x01, 0x9f, 0x95, 0xfd, 0x41, 0xde, 0x50, 0x5d,
- 0x51, 0x73, 0x28, 0x3d, 0x8f, 0xb6, 0xec, 0xc7, 0x96, 0xbd, 0x4b, 0xb5, 0x57, 0x72, 0xa1, 0xbd,
- 0xfe, 0xd9, 0x0c, 0x9c, 0xef, 0xd9, 0x64, 0x72, 0x0b, 0xce, 0xd9, 0xdc, 0xc1, 0xda, 0xda, 0x0b,
- 0x82, 0x8e, 0x6f, 0xc9, 0x2b, 0x86, 0x70, 0x5e, 0x35, 0xcf, 0x88, 0xe2, 0x15, 0x56, 0x2a, 0x6f,
- 0x1d, 0x3e, 0x79, 0x1f, 0x5e, 0x70, 0xda, 0x3e, 0xad, 0x77, 0x3d, 0x6a, 0x49, 0x06, 0x75, 0xa7,
- 0xe1, 0x59, 0x9e, 0xdd, 0xde, 0x95, 0x9e, 0xb8, 0xe6, 0x79, 0x89, 0x23, 0x9c, 0xb8, 0xcb, 0x4e,
- 0xc3, 0x33, 0x11, 0xc1, 0xf8, 0xe7, 0x19, 0x98, 0xef, 0xd5, 0x25, 0x64, 0x1e, 0x46, 0xa9, 0x92,
- 0xa2, 0x24, 0x6f, 0xca, 0x9f, 0xe4, 0x79, 0x88, 0x76, 0x7a, 0x71, 0xfa, 0xe7, 0xeb, 0x22, 0x5d,
- 0x04, 0x9a, 0xb6, 0xab, 0xfb, 0xba, 0x30, 0x50, 0x9e, 0xa8, 0xab, 0xbb, 0xfb, 0x05, 0x80, 0x68,
- 0x3b, 0xe7, 0x8a, 0x09, 0x73, 0xcc, 0xae, 0x7b, 0x7c, 0xe5, 0x91, 0xb3, 0x30, 0xc2, 0xb7, 0x4b,
- 0xe1, 0xff, 0x20, 0x7e, 0xb1, 0x73, 0x5b, 0x74, 0x32, 0xee, 0xf3, 0xb9, 0xa5, 0x09, 0xad, 0xb3,
- 0x47, 0x5a, 0x38, 0x38, 0xc6, 0x4f, 0x4f, 0x72, 0x11, 0xa2, 0xd4, 0x0d, 0xf6, 0xa4, 0xd0, 0xb1,
- 0x98, 0xe6, 0x2f, 0xc6, 0x6d, 0x29, 0x15, 0xbb, 0x6c, 0xdd, 0x4b, 0x4c, 0xbe, 0xfd, 0x64, 0x53,
- 0xdf, 0x7e, 0x5e, 0x87, 0xb1, 0xf2, 0x1e, 0xad, 0xef, 0x87, 0x4e, 0x38, 0x79, 0xa1, 0x5c, 0x67,
- 0x40, 0x1e, 0x0d, 0x3c, 0x42, 0x20, 0xd7, 0x01, 0xd0, 0x4d, 0x95, 0x4b, 0xa4, 0x4a, 0x46, 0x0f,
- 0xf4, 0x6a, 0x15, 0xe6, 0x29, 0x0a, 0x0a, 0xb2, 0xaf, 0x99, 0xb7, 0x55, 0x7b, 0x16, 0xce, 0xde,
- 0xf7, 0x76, 0x04, 0x7a, 0x84, 0xc0, 0x9a, 0xa7, 0xec, 0x2b, 0xe2, 0x14, 0x2c, 0x24, 0x36, 0x1f,
- 0x15, 0x89, 0x5c, 0x83, 0xb1, 0x75, 0xe9, 0x48, 0x80, 0x87, 0xe0, 0x04, 0x52, 0x40, 0xe4, 0x74,
- 0x30, 0x9f, 0x31, 0x23, 0x14, 0xf2, 0x59, 0x18, 0x2d, 0x53, 0x2f, 0xd8, 0xd8, 0x58, 0x45, 0xa3,
- 0x13, 0x9e, 0xf8, 0x22, 0x8f, 0x49, 0x0a, 0x82, 0xa0, 0xf9, 0x9d, 0xa3, 0xe2, 0x64, 0xe0, 0xb4,
- 0x68, 0x18, 0xd0, 0xdb, 0x94, 0xd8, 0x64, 0x09, 0x0a, 0xfc, 0x59, 0x3c, 0xba, 0x7b, 0xe0, 0xc9,
- 0x98, 0xe7, 0xe7, 0xb4, 0x78, 0x43, 0x3f, 0xa0, 0xdb, 0x61, 0x8a, 0x86, 0x04, 0x3e, 0x59, 0x96,
- 0x99, 0x4d, 0xd4, 0x66, 0x42, 0xa4, 0x0c, 0x8b, 0xef, 0x18, 0xac, 0xb5, 0x49, 0x0a, 0x52, 0x82,
- 0xc9, 0xb2, 0xdb, 0xea, 0xd8, 0x81, 0x83, 0x29, 0x20, 0x0f, 0xc5, 0x21, 0x88, 0x0a, 0xbd, 0xba,
- 0x5a, 0xa0, 0x9d, 0xa8, 0x6a, 0x01, 0xb9, 0x0d, 0x53, 0xa6, 0xdb, 0x65, 0xc3, 0x24, 0x6f, 0xe1,
- 0xfc, 0x9c, 0x43, 0xd3, 0x10, 0x8f, 0x95, 0xb0, 0x63, 0x59, 0x5c, 0xb9, 0xb5, 0xe0, 0xa7, 0x1a,
- 0x15, 0x59, 0x4b, 0x79, 0x0e, 0x51, 0x0f, 0x37, 0x35, 0x51, 0x43, 0x82, 0x59, 0xca, 0x4b, 0xca,
- 0x4d, 0x18, 0xaf, 0xd5, 0x1e, 0x6c, 0x50, 0x3f, 0xb8, 0xdd, 0x74, 0x0f, 0xf0, 0x6c, 0xcb, 0x8b,
- 0xbc, 0x62, 0xbe, 0x6b, 0x05, 0xd4, 0x0f, 0xac, 0x9d, 0xa6, 0x7b, 0x60, 0xaa, 0x58, 0xe4, 0x6b,
- 0xac, 0x3f, 0x14, 0x49, 0x50, 0x84, 0x79, 0xed, 0x27, 0xac, 0xe2, 0x09, 0x12, 0x2d, 0x1a, 0x26,
- 0xb2, 0xea, 0x9d, 0xa5, 0xa0, 0xa3, 0x4f, 0x99, 0xe7, 0x3e, 0x3e, 0x2c, 0x35, 0x1a, 0x1e, 0xf5,
- 0x7d, 0x71, 0x08, 0x71, 0x9f, 0x32, 0x54, 0x36, 0xd8, 0xbc, 0x40, 0xf3, 0x29, 0x53, 0x08, 0xc8,
- 0x8f, 0x66, 0xe0, 0x8c, 0xea, 0x6d, 0x82, 0xcb, 0x05, 0xcd, 0x5c, 0xf8, 0x91, 0xf4, 0xc6, 0x35,
- 0x79, 0x08, 0x5f, 0x53, 0xd0, 0xae, 0x3d, 0xba, 0x71, 0xad, 0x14, 0xfd, 0xac, 0x49, 0x22, 0x0c,
- 0x59, 0x57, 0x4c, 0xe5, 0xa7, 0xa5, 0xe5, 0x99, 0xb3, 0x53, 0x88, 0x49, 0x99, 0x49, 0x6a, 0x6c,
- 0x46, 0xa1, 0xe1, 0x54, 0x75, 0x1d, 0xcf, 0x34, 0xa1, 0x51, 0x15, 0xf3, 0x8f, 0x9b, 0x58, 0x39,
- 0x1d, 0x5d, 0x20, 0x53, 0x68, 0x48, 0x15, 0xa6, 0x39, 0x80, 0x6d, 0x0b, 0x3c, 0xc3, 0xd1, 0x6c,
- 0x94, 0x63, 0x41, 0xb0, 0xc1, 0xb7, 0x7e, 0xcc, 0x72, 0xa4, 0xc6, 0x25, 0x8d, 0xd1, 0x91, 0xf7,
- 0x61, 0x0a, 0xc3, 0xc7, 0x47, 0xeb, 0x75, 0x0e, 0x57, 0x31, 0x86, 0x57, 0x15, 0x25, 0x31, 0xcf,
- 0xbb, 0x09, 0xdf, 0xdf, 0x8b, 0x56, 0xf4, 0xfb, 0x30, 0x85, 0xb6, 0x3a, 0x11, 0x83, 0x33, 0x11,
- 0x03, 0x51, 0x12, 0x67, 0x10, 0x34, 0xfd, 0x88, 0xc1, 0xcf, 0x64, 0xe0, 0x3c, 0xab, 0x28, 0x7d,
- 0x84, 0xce, 0x7e, 0x94, 0x11, 0xc2, 0x80, 0x93, 0x3d, 0x79, 0xaa, 0xe2, 0xa8, 0xef, 0xef, 0xa5,
- 0x71, 0xc0, 0x8f, 0x62, 0x1f, 0x9f, 0xfe, 0x51, 0xe7, 0x3e, 0xf2, 0x47, 0xf5, 0xe4, 0xa9, 0x7e,
- 0x54, 0xd0, 0xf4, 0xd3, 0x38, 0xe0, 0xb5, 0xb6, 0x56, 0xba, 0xbf, 0x1a, 0xdd, 0xcd, 0x3e, 0x59,
- 0x6e, 0x2b, 0x5a, 0xdb, 0xfa, 0xb8, 0xad, 0x6c, 0x72, 0x2f, 0x6a, 0xa5, 0x1b, 0xe4, 0xb5, 0x56,
- 0x03, 0xc7, 0xaf, 0xb5, 0x31, 0x1a, 0x33, 0x86, 0x6d, 0xfc, 0x32, 0xc4, 0xf8, 0x0a, 0x53, 0x55,
- 0x03, 0x46, 0xf8, 0xad, 0x55, 0x74, 0x32, 0xda, 0x2c, 0xf0, 0x3b, 0xad, 0x29, 0x4a, 0xc8, 0x79,
- 0xc8, 0xd5, 0x6a, 0x0f, 0x44, 0x27, 0xa3, 0xc1, 0xaa, 0xef, 0xbb, 0x26, 0x83, 0xb1, 0x11, 0x42,
- 0x2b, 0x54, 0x25, 0x1c, 0x3f, 0x3b, 0xef, 0x4c, 0x84, 0xb2, 0xfe, 0x96, 0x77, 0xc8, 0xa1, 0xa8,
- 0xbf, 0xc5, 0x1d, 0x32, 0xba, 0x39, 0x96, 0x61, 0xbe, 0xe4, 0xfb, 0xd4, 0x63, 0x13, 0x42, 0x18,
- 0x37, 0x7a, 0xe2, 0x9e, 0x23, 0x0e, 0x76, 0xac, 0xd4, 0xae, 0xfb, 0x66, 0x4f, 0x44, 0x72, 0x05,
- 0xf2, 0xa5, 0x6e, 0xc3, 0xa1, 0xed, 0xba, 0x16, 0x96, 0xcd, 0x16, 0x30, 0x33, 0x2c, 0x25, 0x5f,
- 0x84, 0x33, 0xb1, 0x08, 0x8c, 0xa2, 0x07, 0x46, 0xa3, 0xbd, 0x57, 0xde, 0xc3, 0x22, 0x83, 0x0c,
- 0xde, 0x25, 0xe9, 0x94, 0xa4, 0x04, 0x85, 0x65, 0x74, 0xd3, 0xaa, 0x50, 0xfe, 0x36, 0xe4, 0x7a,
- 0xdc, 0x3f, 0x8f, 0xdf, 0x9a, 0xb9, 0x0b, 0x97, 0xd5, 0x08, 0x0b, 0xcd, 0x04, 0x3a, 0xb9, 0x07,
- 0xb3, 0x71, 0x18, 0x3b, 0xc1, 0xf9, 0x05, 0x19, 0xf7, 0x9b, 0x04, 0x17, 0x3c, 0xc3, 0xd3, 0xa8,
- 0xc8, 0x36, 0xcc, 0x44, 0x06, 0x49, 0xfa, 0xb5, 0x59, 0xda, 0x39, 0x87, 0xe5, 0xf2, 0xea, 0xfc,
- 0xbc, 0x98, 0x8c, 0xb3, 0x91, 0x71, 0x53, 0x78, 0x7d, 0x36, 0x93, 0xec, 0x48, 0x03, 0xa6, 0x6a,
- 0xce, 0x6e, 0xdb, 0x69, 0xef, 0xde, 0xa3, 0x87, 0xeb, 0xb6, 0xe3, 0x09, 0x8b, 0x53, 0x69, 0x4f,
- 0x5e, 0xf2, 0x0f, 0x5b, 0x2d, 0x1a, 0x78, 0xb8, 0x11, 0xb2, 0x72, 0xf4, 0x41, 0x67, 0xd7, 0xa1,
- 0x05, 0x9f, 0xd3, 0xa1, 0xdb, 0x66, 0xc7, 0x76, 0x34, 0x21, 0x40, 0xe7, 0xa9, 0xa9, 0x2e, 0x26,
- 0x06, 0x54, 0x5d, 0x34, 0x61, 0x66, 0xb9, 0x5d, 0xf7, 0x0e, 0xf1, 0x89, 0x4e, 0x7e, 0xdc, 0xe4,
- 0x09, 0x1f, 0xf7, 0xb2, 0xf8, 0xb8, 0x17, 0x6c, 0x39, 0xc3, 0xd2, 0x3e, 0x2f, 0xc9, 0x98, 0xd4,
- 0x60, 0x06, 0x2f, 0x0e, 0xd5, 0xca, 0x7a, 0xb5, 0xed, 0x04, 0x8e, 0x1d, 0xd0, 0x86, 0x10, 0x2e,
- 0xc2, 0x24, 0x26, 0xfc, 0x8a, 0xea, 0x34, 0x3a, 0x96, 0x23, 0x51, 0x54, 0xa6, 0x09, 0xfa, 0x7e,
- 0xf7, 0xc4, 0xe9, 0xbf, 0xa4, 0x7b, 0x62, 0x15, 0xa6, 0xe3, 0xa1, 0x1c, 0x0a, 0xd1, 0x39, 0xec,
- 0x63, 0x11, 0x3b, 0xce, 0xdd, 0x2e, 0x0a, 0x93, 0x5a, 0xde, 0xd0, 0x58, 0x10, 0x87, 0xd8, 0x95,
- 0x73, 0x46, 0xbb, 0x72, 0x6a, 0xbb, 0xd2, 0x29, 0xae, 0x9c, 0x64, 0x1d, 0xe0, 0xb6, 0xeb, 0xd5,
- 0x69, 0x09, 0xfd, 0xa3, 0x89, 0x96, 0xea, 0x89, 0x31, 0x8d, 0x0a, 0xf9, 0xfa, 0xd9, 0x61, 0xbf,
- 0xad, 0xb8, 0x9b, 0xbb, 0xc2, 0xc3, 0xf8, 0xb1, 0x2c, 0xcc, 0xf7, 0xfa, 0x9c, 0x3e, 0xd7, 0xbd,
- 0x4f, 0x41, 0x72, 0x85, 0x8b, 0x6b, 0x5f, 0x81, 0xc6, 0xd7, 0xf9, 0x22, 0xa4, 0x2f, 0x64, 0x71,
- 0x0d, 0x9c, 0x8d, 0x13, 0x6c, 0x7a, 0x4d, 0x72, 0x0b, 0xc6, 0x95, 0x8f, 0xc7, 0xbd, 0xb4, 0x57,
- 0x53, 0x4d, 0xd8, 0x09, 0xff, 0x66, 0xd7, 0x44, 0xbe, 0x6f, 0xc9, 0x6b, 0x22, 0xff, 0x45, 0x0a,
- 0xdc, 0x45, 0x7c, 0x84, 0x5b, 0x01, 0xf8, 0xbe, 0x4b, 0x08, 0xe0, 0xbe, 0xcd, 0xb7, 0x40, 0x13,
- 0xff, 0x36, 0x7e, 0x73, 0x82, 0x9f, 0xc8, 0xea, 0x2d, 0xb1, 0x97, 0x7d, 0x70, 0xec, 0xf6, 0x98,
- 0x3d, 0xcd, 0xed, 0x31, 0x77, 0xf2, 0xed, 0x71, 0xe8, 0xa4, 0xdb, 0x63, 0xec, 0x7a, 0x37, 0x7c,
- 0xea, 0xeb, 0xdd, 0xc8, 0xa9, 0xae, 0x77, 0xa3, 0xa7, 0xba, 0xde, 0x69, 0x37, 0xd5, 0xfc, 0x49,
- 0x37, 0xd5, 0xbf, 0xbe, 0x0c, 0x3e, 0xab, 0x97, 0xc1, 0x34, 0x11, 0xef, 0x54, 0x97, 0xc1, 0x1f,
- 0xe9, 0x79, 0x97, 0x2b, 0x7c, 0x14, 0xa1, 0xfc, 0xa5, 0x01, 0xee, 0x72, 0x83, 0xde, 0xe4, 0x66,
- 0x9e, 0xce, 0x4d, 0x8e, 0x3c, 0xb5, 0x9b, 0xdc, 0xec, 0x93, 0xde, 0xe4, 0xe6, 0x9e, 0xe6, 0x4d,
- 0xee, 0xcc, 0x5f, 0xc5, 0x9b, 0xdc, 0xd9, 0x7f, 0x3b, 0x37, 0xb9, 0xbf, 0x01, 0x85, 0xb8, 0x70,
- 0x79, 0x72, 0xd4, 0xe3, 0xa7, 0x16, 0x72, 0x92, 0x89, 0xbe, 0x71, 0xe1, 0x8e, 0x5c, 0x07, 0x58,
- 0xf7, 0x9c, 0x47, 0x76, 0x40, 0xef, 0x49, 0xeb, 0x37, 0x11, 0xb1, 0x9b, 0x43, 0xd9, 0xc8, 0x9b,
- 0x0a, 0x4a, 0x78, 0xaf, 0xc9, 0xa6, 0xdd, 0x6b, 0x8c, 0x1f, 0xcd, 0xc2, 0x0c, 0x8f, 0xdb, 0xf6,
- 0xec, 0x3f, 0xc2, 0xbe, 0xa7, 0xdd, 0x56, 0x5f, 0x88, 0xc2, 0xe3, 0xab, 0xad, 0xeb, 0xf3, 0x0c,
- 0xfb, 0x55, 0x38, 0x93, 0xe8, 0x0a, 0xbc, 0xb1, 0x56, 0x64, 0xc4, 0xbc, 0xc4, 0x9d, 0x75, 0x3e,
- 0xbd, 0x92, 0x87, 0x37, 0xcd, 0x04, 0x85, 0xf1, 0xe7, 0x43, 0x09, 0xfe, 0xe2, 0x41, 0x56, 0x7d,
- 0x62, 0xcd, 0x9c, 0xee, 0x89, 0x35, 0x3b, 0xd8, 0x13, 0x6b, 0x4c, 0xa8, 0xc8, 0x0d, 0x22, 0x54,
- 0x7c, 0x11, 0x26, 0x37, 0xa8, 0xdd, 0xf2, 0x37, 0x5c, 0x91, 0x6b, 0x89, 0xfb, 0x5a, 0xc8, 0x80,
- 0x78, 0xac, 0x4c, 0x5e, 0xb8, 0x42, 0x9b, 0xd1, 0x80, 0x11, 0xb0, 0x63, 0x90, 0x27, 0x5f, 0x32,
- 0x75, 0x0e, 0xea, 0x2d, 0x7a, 0xb8, 0xcf, 0x2d, 0xba, 0x06, 0x13, 0x82, 0x2e, 0x0a, 0xf5, 0x1c,
- 0x5d, 0xf7, 0x58, 0x11, 0xc2, 0x65, 0xed, 0x61, 0x22, 0xf8, 0xb0, 0x76, 0x7e, 0xd3, 0xd3, 0x98,
- 0xb0, 0x2e, 0x58, 0x6e, 0x37, 0x3a, 0xae, 0xd3, 0xc6, 0x2e, 0x18, 0x8d, 0xba, 0x80, 0x0a, 0x30,
- 0xef, 0x02, 0x05, 0x89, 0xbc, 0x03, 0x53, 0xa5, 0xf5, 0xaa, 0x4a, 0x96, 0x8f, 0x5e, 0x79, 0xed,
- 0x8e, 0x63, 0x69, 0xa4, 0x31, 0xdc, 0x7e, 0x37, 0x9f, 0xb1, 0xbf, 0x9c, 0x9b, 0x8f, 0xf1, 0x4f,
- 0x27, 0xe5, 0xf2, 0xfe, 0x78, 0x1f, 0x48, 0xf4, 0x27, 0x8f, 0xdc, 0x29, 0x9f, 0x3c, 0x86, 0x4e,
- 0x12, 0x24, 0x35, 0xf9, 0x76, 0xf8, 0x54, 0xf2, 0xed, 0xc8, 0x13, 0x3f, 0x5f, 0x8c, 0x9e, 0x52,
- 0x62, 0x8d, 0xad, 0xb5, 0xfc, 0x20, 0x6b, 0x2d, 0x55, 0xca, 0x1d, 0x7b, 0x72, 0x29, 0x17, 0x4e,
- 0x2d, 0xe5, 0xd6, 0x22, 0xdf, 0xe5, 0xf1, 0x13, 0x5d, 0x42, 0x2e, 0x08, 0xad, 0xc0, 0x4c, 0x7a,
- 0x14, 0xbe, 0xd0, 0x8b, 0xf9, 0x13, 0x25, 0x3a, 0x7f, 0x3d, 0x5d, 0x74, 0xee, 0x7f, 0xde, 0x9c,
- 0x4a, 0x78, 0xfe, 0xd1, 0xa7, 0x2b, 0x3c, 0x3f, 0xdd, 0x87, 0x90, 0xbf, 0x16, 0x9f, 0xff, 0x5a,
- 0x7c, 0x1e, 0x4c, 0x7c, 0x26, 0x0f, 0x80, 0xd8, 0xdd, 0x60, 0x8f, 0xb6, 0x03, 0xa7, 0x8e, 0x51,
- 0x69, 0xd9, 0x10, 0xe3, 0xab, 0x8c, 0x58, 0xaf, 0xc9, 0x52, 0x75, 0xbd, 0x6a, 0xa5, 0xe8, 0xe7,
- 0xed, 0xe1, 0x7a, 0xdd, 0xb2, 0xbd, 0x36, 0xea, 0xb1, 0xae, 0xc3, 0xa8, 0x8c, 0x6b, 0x9a, 0x89,
- 0x54, 0xd4, 0xc9, 0x80, 0xa6, 0x12, 0x8b, 0x2c, 0x42, 0x5e, 0x12, 0xab, 0x89, 0x76, 0x0e, 0x04,
- 0x4c, 0x0b, 0x19, 0x29, 0x60, 0xc6, 0x7f, 0x34, 0x24, 0xcf, 0x04, 0xf6, 0x09, 0xeb, 0xb6, 0x67,
- 0xb7, 0x30, 0xfd, 0x5c, 0xb8, 0x64, 0x95, 0xdb, 0x40, 0x6c, 0x95, 0xc7, 0x7c, 0x05, 0x74, 0x92,
- 0x8f, 0x14, 0x98, 0x36, 0xca, 0xf0, 0x9b, 0x1b, 0x20, 0xc3, 0xef, 0x5b, 0x5a, 0x7a, 0xdc, 0xa1,
- 0x28, 0x1f, 0x23, 0xdb, 0x27, 0xfb, 0x27, 0xc6, 0xbd, 0xa5, 0xe6, 0xb1, 0x1d, 0x8e, 0xc2, 0x84,
- 0x21, 0x65, 0x9f, 0x0c, 0xb6, 0xe1, 0xf5, 0x66, 0xe4, 0x34, 0x21, 0x9f, 0x47, 0xff, 0xad, 0x86,
- 0x7c, 0x5e, 0x06, 0x10, 0x67, 0x77, 0x64, 0xef, 0xf0, 0x0a, 0x6e, 0x27, 0xc2, 0xee, 0x39, 0x08,
- 0x9a, 0x3d, 0x72, 0x82, 0x28, 0x84, 0xc6, 0x1f, 0x10, 0x98, 0xa9, 0xd5, 0x1e, 0x54, 0x1c, 0x7b,
- 0xb7, 0xed, 0xfa, 0x81, 0x53, 0xaf, 0xb6, 0x77, 0x5c, 0x26, 0xdb, 0x87, 0xe7, 0x8b, 0x12, 0xac,
- 0x37, 0x3a, 0x5b, 0xc2, 0x62, 0x76, 0x77, 0x5c, 0xf6, 0x3c, 0xa9, 0x70, 0xe5, 0x77, 0x47, 0xca,
- 0x00, 0x26, 0x87, 0x33, 0xf1, 0xb9, 0xd6, 0xc5, 0x50, 0x19, 0xc2, 0x08, 0x05, 0xc5, 0x67, 0x9f,
- 0x83, 0x4c, 0x59, 0x46, 0x68, 0x72, 0xc2, 0x8a, 0xeb, 0xd4, 0x39, 0x2d, 0x70, 0x74, 0x54, 0xcc,
- 0x57, 0xa3, 0x90, 0x6e, 0x70, 0x1f, 0xee, 0x20, 0x5c, 0x35, 0xb1, 0x4b, 0xac, 0x81, 0x43, 0x38,
- 0xa3, 0x39, 0x51, 0x0f, 0xfa, 0x3a, 0xf3, 0x9a, 0x10, 0xd7, 0x0d, 0x8c, 0xd9, 0x91, 0xf2, 0x44,
- 0xa3, 0xe6, 0x93, 0x4b, 0xad, 0x81, 0x1d, 0x90, 0x17, 0x52, 0x4b, 0xc2, 0xd5, 0x3d, 0xae, 0x05,
- 0xef, 0x56, 0x36, 0x0d, 0x9e, 0x39, 0xaf, 0x57, 0xd5, 0x56, 0xca, 0x56, 0xd0, 0xbf, 0x26, 0xf2,
- 0x5b, 0x19, 0x38, 0xa7, 0x61, 0x84, 0xfb, 0x9f, 0x1f, 0xc6, 0x17, 0x49, 0x9d, 0xd7, 0x1f, 0x3e,
- 0x9d, 0x79, 0xfd, 0x92, 0xde, 0x96, 0x68, 0x87, 0x56, 0xdb, 0xd0, 0xeb, 0x0b, 0xc9, 0x23, 0x98,
- 0xc1, 0x22, 0xf9, 0x52, 0xc4, 0xe6, 0xac, 0x78, 0x60, 0x9a, 0x8b, 0x3e, 0x9b, 0x07, 0x06, 0xc0,
- 0xec, 0xe7, 0x8b, 0xdf, 0x3e, 0x2a, 0x4e, 0x6a, 0xe8, 0x32, 0x1c, 0xb6, 0x15, 0x3d, 0x37, 0x39,
- 0xed, 0x1d, 0x57, 0x4b, 0x6d, 0x1f, 0xaf, 0x82, 0xfc, 0x37, 0x19, 0xfe, 0x3e, 0xc1, 0x9b, 0x71,
- 0xdb, 0x73, 0x5b, 0x61, 0xb9, 0xb4, 0xd5, 0xec, 0xd1, 0x6d, 0xcd, 0xa7, 0xd3, 0x6d, 0xaf, 0xe0,
- 0x27, 0xf3, 0x3d, 0xc1, 0xda, 0xf1, 0xdc, 0x56, 0xf4, 0xf9, 0x6a, 0xc7, 0xf5, 0xfc, 0x48, 0xf2,
- 0xfd, 0x19, 0x38, 0xaf, 0xa9, 0x49, 0xd5, 0xdc, 0x24, 0x22, 0xfc, 0xc2, 0x6c, 0x18, 0x98, 0x25,
- 0x2a, 0x5a, 0xba, 0x26, 0xe6, 0xff, 0x65, 0xfc, 0x02, 0x25, 0x0e, 0x28, 0x43, 0xb2, 0x5a, 0x1c,
- 0x4b, 0xf9, 0x84, 0xde, 0xb5, 0x10, 0x07, 0x66, 0xd0, 0x6c, 0x47, 0xb3, 0x29, 0x9e, 0xeb, 0x6d,
- 0x53, 0x1c, 0x66, 0x1d, 0xc2, 0x8c, 0x04, 0xbd, 0x0d, 0x8b, 0x93, 0x5c, 0xc9, 0xf7, 0xc0, 0xf9,
- 0x04, 0x30, 0x5c, 0x6d, 0x67, 0x7a, 0xae, 0xb6, 0x4f, 0x1d, 0x1f, 0x15, 0x5f, 0x4d, 0xab, 0x2d,
- 0x6d, 0xa5, 0xf5, 0xae, 0x81, 0xd8, 0x00, 0x51, 0xa1, 0x90, 0x67, 0xd2, 0x27, 0xe8, 0xa7, 0xc4,
- 0xfc, 0x50, 0xf0, 0xd9, 0x5e, 0xae, 0x7c, 0x83, 0x7a, 0xe4, 0x45, 0x48, 0x84, 0xc2, 0x84, 0x92,
- 0x8d, 0xe1, 0x50, 0x58, 0x8f, 0xf4, 0xa8, 0xe4, 0xdb, 0x47, 0x45, 0x0d, 0x9b, 0xdd, 0xb0, 0xd4,
- 0x34, 0x0f, 0x9a, 0xf8, 0xa8, 0x22, 0x92, 0xdf, 0xc8, 0xc0, 0x1c, 0x03, 0x44, 0x93, 0x4a, 0x34,
- 0x6a, 0xbe, 0xdf, 0xac, 0xdf, 0x7b, 0x3a, 0xb3, 0xfe, 0x45, 0xfc, 0x46, 0x75, 0xd6, 0x27, 0xba,
- 0x24, 0xf5, 0xe3, 0x70, 0xb6, 0x6b, 0x16, 0x62, 0xda, 0x6c, 0x3f, 0x3f, 0xc0, 0x6c, 0xe7, 0x03,
- 0x70, 0xf2, 0x6c, 0xef, 0x59, 0x0b, 0xd9, 0x80, 0x09, 0x71, 0xb9, 0xe2, 0x1d, 0x76, 0x51, 0x8b,
- 0x0b, 0xad, 0x16, 0xf1, 0x1b, 0xaf, 0x48, 0x56, 0x91, 0x68, 0xa1, 0xc6, 0x85, 0xb4, 0x61, 0x96,
- 0xff, 0xd6, 0x95, 0x5d, 0xc5, 0x9e, 0xca, 0xae, 0x2b, 0xa2, 0x45, 0x97, 0x04, 0xff, 0x98, 0xce,
- 0x4b, 0x8d, 0xe7, 0x94, 0xc2, 0x98, 0x74, 0x80, 0x68, 0x60, 0xbe, 0x68, 0x2f, 0xf5, 0x57, 0x71,
- 0xbd, 0x2a, 0xea, 0x2c, 0xc6, 0xeb, 0x8c, 0xaf, 0xdc, 0x14, 0xde, 0xc4, 0x86, 0x69, 0x01, 0x75,
- 0xf7, 0x29, 0xdf, 0xe1, 0x5f, 0xd4, 0x22, 0x6a, 0xc5, 0x4a, 0xf9, 0xad, 0x4c, 0xd6, 0x84, 0x11,
- 0xcf, 0x62, 0x1b, 0x7a, 0x9c, 0x1f, 0x79, 0x00, 0x33, 0xa5, 0x4e, 0xa7, 0xe9, 0xd0, 0x06, 0xb6,
- 0xd2, 0xec, 0xb2, 0x36, 0x19, 0x51, 0xbe, 0x37, 0x9b, 0x17, 0x8a, 0xab, 0xa2, 0xd7, 0x8d, 0x6d,
- 0x37, 0x09, 0x5a, 0xe3, 0x47, 0x32, 0x89, 0x8f, 0x26, 0xaf, 0xc3, 0x18, 0xfe, 0x50, 0x82, 0xb4,
- 0xa0, 0xce, 0x88, 0x7f, 0x22, 0x6a, 0xa3, 0x22, 0x04, 0x26, 0x2c, 0xa9, 0x81, 0x1a, 0x73, 0x5c,
- 0x58, 0x12, 0x8a, 0x8a, 0x48, 0x35, 0x51, 0x94, 0xbe, 0x1e, 0xb9, 0x48, 0xe8, 0x42, 0x5f, 0x0f,
- 0xe1, 0xe1, 0x61, 0xfc, 0xc3, 0xac, 0x3e, 0xed, 0xc8, 0x15, 0x45, 0x6e, 0x57, 0x42, 0x45, 0x4a,
- 0xb9, 0x5d, 0x91, 0xd6, 0xff, 0x7e, 0x06, 0x66, 0x1f, 0x28, 0x89, 0x42, 0x37, 0x5c, 0x1c, 0x97,
- 0xfe, 0xa9, 0x33, 0x9f, 0x56, 0x0a, 0x40, 0x35, 0x43, 0x29, 0x9b, 0x29, 0x38, 0x65, 0xcc, 0xb4,
- 0xef, 0x41, 0xef, 0x39, 0xfc, 0x30, 0x25, 0x13, 0x23, 0x47, 0xe7, 0xf0, 0x53, 0xa6, 0xae, 0x30,
- 0x7e, 0x22, 0x0b, 0xe3, 0xca, 0x8a, 0x21, 0x9f, 0x81, 0x09, 0xb5, 0x5a, 0x55, 0xe1, 0xa8, 0x7e,
- 0xa5, 0xa9, 0x61, 0xa1, 0xc6, 0x91, 0xda, 0x2d, 0x4d, 0xe3, 0xc8, 0xd6, 0x05, 0x42, 0x4f, 0x79,
- 0x13, 0x7a, 0x3f, 0xe5, 0x26, 0x84, 0xb3, 0x5c, 0xd1, 0x18, 0xf5, 0xbd, 0x0f, 0xbd, 0x93, 0xbc,
- 0x0f, 0xa1, 0xf2, 0x4a, 0xa1, 0xef, 0x7d, 0x2b, 0x32, 0x7e, 0x3a, 0x03, 0x85, 0xf8, 0x9a, 0xfe,
- 0x58, 0x7a, 0xe5, 0x14, 0xaf, 0x4b, 0x3f, 0x9e, 0x0d, 0x33, 0xb7, 0x48, 0x17, 0xe2, 0x67, 0xd5,
- 0x4c, 0xf1, 0x5d, 0xed, 0xe1, 0xe7, 0x79, 0x3d, 0x1a, 0x9e, 0x1a, 0x7c, 0x23, 0x3d, 0x04, 0xe6,
- 0xd0, 0xb7, 0x7e, 0xa9, 0xf8, 0x9c, 0xf1, 0x01, 0xcc, 0xc5, 0xbb, 0x03, 0x1f, 0x7f, 0x4a, 0x30,
- 0xad, 0xc3, 0xe3, 0x79, 0x9f, 0xe2, 0x54, 0x66, 0x1c, 0xdf, 0xf8, 0xa3, 0x6c, 0x9c, 0xb7, 0x30,
- 0x59, 0x64, 0x7b, 0x94, 0x6a, 0x88, 0x23, 0xf6, 0x28, 0x0e, 0x32, 0x65, 0xd9, 0x69, 0xf2, 0xad,
- 0x85, 0x8e, 0xb0, 0xb9, 0x74, 0x47, 0x58, 0x72, 0x2b, 0x66, 0xa5, 0xad, 0x44, 0x6d, 0x3a, 0xa0,
- 0xdb, 0x56, 0x64, 0xa9, 0x1d, 0x33, 0xce, 0x2e, 0xc3, 0x9c, 0x16, 0x82, 0x5c, 0xd2, 0x0f, 0x47,
- 0xba, 0xfe, 0x00, 0x0b, 0x38, 0x71, 0x2a, 0x32, 0x59, 0x81, 0x51, 0xf6, 0x99, 0xf7, 0xed, 0x8e,
- 0x78, 0xd3, 0x21, 0xa1, 0x5b, 0x7c, 0x33, 0xbc, 0x1f, 0x2a, 0x9e, 0xf1, 0x4d, 0xca, 0x24, 0x04,
- 0x75, 0x62, 0x09, 0x44, 0xe3, 0x5f, 0x66, 0xd8, 0xfa, 0xaf, 0xef, 0x7f, 0xc2, 0x92, 0xb6, 0xb1,
- 0x26, 0xf5, 0xb1, 0xa8, 0xfd, 0x93, 0x2c, 0xcf, 0xc5, 0x23, 0xa6, 0xcf, 0x5b, 0x30, 0xb2, 0x61,
- 0x7b, 0xbb, 0x22, 0x65, 0xb6, 0xce, 0x85, 0x17, 0x44, 0x31, 0xa5, 0x02, 0xfc, 0x6d, 0x0a, 0x02,
- 0x55, 0x75, 0x96, 0x1d, 0x48, 0x75, 0xa6, 0xbc, 0x0b, 0xe4, 0x9e, 0xda, 0xbb, 0xc0, 0x77, 0x85,
- 0x69, 0x77, 0x4a, 0xc1, 0x00, 0x11, 0xae, 0x2f, 0xc5, 0xb3, 0x5c, 0x25, 0x62, 0x91, 0x47, 0xec,
- 0xc8, 0x2d, 0x35, 0x6f, 0x96, 0xe2, 0x5b, 0x7a, 0x42, 0x86, 0x2c, 0xe3, 0x4f, 0x72, 0xbc, 0x8f,
- 0x45, 0x47, 0x5d, 0xd6, 0xfc, 0xce, 0x71, 0x9d, 0xc4, 0xf4, 0x94, 0xdc, 0x03, 0xfd, 0x32, 0x0c,
- 0xb1, 0xb9, 0x29, 0x7a, 0x13, 0xf1, 0xd8, 0xfc, 0x55, 0xf1, 0x58, 0x39, 0x5b, 0xcb, 0x78, 0x26,
- 0xa9, 0x09, 0x11, 0xf1, 0xd8, 0x52, 0xd7, 0x32, 0x62, 0x90, 0x2b, 0x30, 0xb4, 0xe6, 0x36, 0x64,
- 0x24, 0xf5, 0x39, 0x8c, 0x3e, 0xa2, 0x65, 0x5c, 0x9d, 0xcf, 0x98, 0x88, 0xc1, 0xda, 0x1a, 0xe6,
- 0x9f, 0x50, 0xdb, 0xda, 0xda, 0xb1, 0x93, 0x89, 0xee, 0x94, 0xa4, 0x37, 0xcb, 0x30, 0xb5, 0xe5,
- 0xb4, 0x1b, 0xee, 0x81, 0x5f, 0xa1, 0xfe, 0x7e, 0xe0, 0x76, 0x84, 0xbd, 0x31, 0x6a, 0xf7, 0x0f,
- 0x78, 0x89, 0xd5, 0xe0, 0x45, 0xea, 0xb3, 0x8c, 0x4e, 0x44, 0x96, 0x60, 0x52, 0x8b, 0xe0, 0x2a,
- 0x1e, 0x57, 0x51, 0x1b, 0xaa, 0xc7, 0x7f, 0x55, 0xb5, 0xa1, 0x1a, 0x09, 0x3b, 0xcf, 0xc5, 0xf7,
- 0x2b, 0x4f, 0xac, 0x89, 0x6f, 0x17, 0x38, 0xe4, 0x26, 0xe4, 0x79, 0x98, 0x8f, 0x6a, 0x45, 0x7d,
- 0x26, 0xf3, 0x11, 0x16, 0x0b, 0x93, 0x23, 0x11, 0x95, 0xb0, 0x0e, 0x9f, 0x86, 0x82, 0xd8, 0x92,
- 0xa2, 0x5c, 0xed, 0x2f, 0xc0, 0x50, 0xb9, 0x5a, 0x31, 0xd5, 0x6d, 0xa4, 0xee, 0x34, 0x3c, 0x13,
- 0xa1, 0xe8, 0xd5, 0xb7, 0x46, 0x83, 0x03, 0xd7, 0xdb, 0x37, 0xa9, 0x1f, 0x78, 0x0e, 0xcf, 0xa7,
- 0x89, 0x0b, 0xf1, 0x33, 0xe4, 0x1d, 0x18, 0x46, 0xc3, 0xd7, 0xd8, 0xc9, 0x10, 0xaf, 0x63, 0x69,
- 0x52, 0x4c, 0xe0, 0x61, 0xb4, 0xa2, 0x35, 0x39, 0x11, 0x79, 0x0b, 0x86, 0x2a, 0xb4, 0x7d, 0x18,
- 0x4b, 0xf5, 0x97, 0x20, 0x0e, 0x37, 0x84, 0x06, 0x6d, 0x1f, 0x9a, 0x48, 0x62, 0xfc, 0x74, 0x16,
- 0xce, 0xa4, 0x7c, 0xd6, 0xc3, 0xcf, 0x3c, 0xa3, 0xbb, 0xe2, 0x92, 0xb6, 0x2b, 0xca, 0xf7, 0xf1,
- 0x9e, 0x1d, 0x9f, 0xba, 0x49, 0xfe, 0x42, 0x06, 0xce, 0xe9, 0x13, 0x54, 0x58, 0xba, 0x3f, 0xbc,
- 0x49, 0xde, 0x86, 0x91, 0x15, 0x6a, 0x37, 0xa8, 0xcc, 0xeb, 0x75, 0x26, 0x0c, 0xc8, 0xc7, 0x63,
- 0x18, 0xf0, 0x42, 0xce, 0x36, 0xf2, 0x78, 0xe5, 0x50, 0x52, 0x11, 0x1f, 0xc7, 0xc5, 0x77, 0x43,
- 0xc6, 0x13, 0x49, 0xab, 0xaa, 0x8f, 0x95, 0xc9, 0xb7, 0x33, 0xf0, 0x7c, 0x1f, 0x1a, 0x36, 0x70,
- 0x6c, 0xe8, 0xd5, 0x81, 0xc3, 0x13, 0x15, 0xa1, 0xe4, 0x3d, 0x98, 0xde, 0x10, 0xe2, 0xbf, 0x1c,
- 0x8e, 0x6c, 0xb4, 0x5e, 0xe4, 0xcd, 0xc0, 0x92, 0xe3, 0x12, 0x47, 0xd6, 0x02, 0xdd, 0xe4, 0xfa,
- 0x06, 0xba, 0x51, 0xe3, 0xc6, 0x0c, 0x0d, 0x1a, 0x37, 0xe6, 0x03, 0x98, 0xd3, 0xdb, 0x26, 0xc2,
- 0xf7, 0x46, 0x51, 0x73, 0x32, 0xbd, 0xa3, 0xe6, 0xf4, 0x0d, 0x12, 0x6a, 0xfc, 0x44, 0x06, 0x0a,
- 0x3a, 0xef, 0x27, 0x1d, 0xcf, 0x77, 0xb5, 0xf1, 0x7c, 0x3e, 0x7d, 0x3c, 0x7b, 0x0f, 0xe4, 0xff,
- 0x9d, 0x89, 0x37, 0x76, 0xa0, 0x11, 0x34, 0x60, 0xa4, 0xe2, 0xb6, 0x6c, 0xa7, 0xad, 0xa6, 0xfe,
- 0x6f, 0x20, 0xc4, 0x14, 0x25, 0x83, 0x05, 0x19, 0xba, 0x04, 0xc3, 0x6b, 0x6e, 0xbb, 0x54, 0x11,
- 0x26, 0xc5, 0xc8, 0xa7, 0xed, 0xb6, 0x2d, 0xbb, 0x61, 0xf2, 0x02, 0xb2, 0x0a, 0x50, 0xab, 0x7b,
- 0x94, 0xb6, 0x6b, 0xce, 0x77, 0xd3, 0x98, 0xa4, 0xc1, 0x7a, 0xa8, 0xd9, 0xc5, 0x8d, 0x85, 0x3f,
- 0x9d, 0x22, 0xa2, 0xe5, 0x3b, 0xdf, 0xad, 0xee, 0xb7, 0x0a, 0x3d, 0xae, 0x2b, 0x11, 0x87, 0x2d,
- 0x36, 0x0e, 0x37, 0x3e, 0x8e, 0x75, 0x95, 0x5a, 0x15, 0xf6, 0xf0, 0x8d, 0xd4, 0xe1, 0xf8, 0xc3,
- 0x0c, 0x3c, 0xdf, 0x87, 0xe6, 0x29, 0x8c, 0xca, 0x5f, 0x76, 0x87, 0x53, 0x80, 0x88, 0x08, 0x33,
- 0x29, 0x3b, 0x8d, 0x80, 0xe7, 0xea, 0x9b, 0x14, 0x99, 0x94, 0x19, 0x40, 0xcb, 0xa4, 0xcc, 0x00,
- 0xec, 0x2c, 0x5d, 0xa1, 0xce, 0xee, 0x1e, 0x37, 0x0f, 0x9b, 0xe4, 0x7b, 0xc3, 0x1e, 0x42, 0xd4,
- 0xb3, 0x94, 0xe3, 0x18, 0xff, 0x6a, 0x18, 0xce, 0x9b, 0x74, 0xd7, 0x61, 0xf7, 0x92, 0x4d, 0xdf,
- 0x69, 0xef, 0x6a, 0x71, 0x77, 0x8c, 0xd8, 0xca, 0x15, 0x49, 0x2a, 0x18, 0x24, 0x9c, 0x89, 0x57,
- 0x21, 0xcf, 0xc4, 0x10, 0x65, 0xf1, 0xe2, 0x1b, 0x17, 0x13, 0x56, 0x44, 0x60, 0x67, 0x59, 0x4c,
- 0x5e, 0x13, 0x62, 0x92, 0x92, 0x46, 0x88, 0x89, 0x49, 0xdf, 0x39, 0x2a, 0x42, 0xed, 0xd0, 0x0f,
- 0x28, 0x5e, 0x91, 0x85, 0xa8, 0x14, 0xde, 0x65, 0x86, 0x7a, 0xdc, 0x65, 0xee, 0xc3, 0x5c, 0xa9,
- 0xc1, 0x4f, 0x47, 0xbb, 0xb9, 0xee, 0x39, 0xed, 0xba, 0xd3, 0xb1, 0x9b, 0xf2, 0x7e, 0x8e, 0xbd,
- 0x6c, 0x87, 0xe5, 0x56, 0x27, 0x44, 0x30, 0x53, 0xc9, 0x58, 0x33, 0x2a, 0x6b, 0x35, 0x0c, 0x4f,
- 0x23, 0x9e, 0x2f, 0xb1, 0x19, 0x8d, 0xb6, 0x8f, 0xad, 0xf0, 0xcd, 0xb0, 0x18, 0x6f, 0x51, 0x68,
- 0x10, 0xb0, 0xb1, 0x5a, 0x8b, 0x5c, 0xaa, 0x79, 0x96, 0x03, 0x6e, 0x58, 0x10, 0x34, 0x7d, 0x34,
- 0xc5, 0xd4, 0xf0, 0x22, 0xba, 0x5a, 0x6d, 0x85, 0xd1, 0xe5, 0x13, 0x74, 0xbe, 0xbf, 0xa7, 0xd2,
- 0x71, 0x3c, 0x72, 0x9d, 0x4d, 0x85, 0x96, 0x1b, 0x50, 0x9c, 0xc2, 0x63, 0xd1, 0x9d, 0xcb, 0x43,
- 0x28, 0xbf, 0x73, 0x29, 0x28, 0xe4, 0x1d, 0x98, 0x5d, 0x2e, 0x2f, 0x4a, 0xa5, 0x73, 0xc5, 0xad,
- 0x77, 0xd1, 0x10, 0x00, 0xb0, 0x3e, 0x1c, 0x43, 0x5a, 0x5f, 0x64, 0xbb, 0x49, 0x1a, 0x1a, 0xb9,
- 0x0c, 0xa3, 0xd5, 0x0a, 0xef, 0xfb, 0x71, 0x35, 0x95, 0x97, 0xb0, 0xcc, 0x92, 0x85, 0xe4, 0x41,
- 0x74, 0x29, 0x98, 0x38, 0x51, 0x7a, 0x3f, 0x3f, 0xc0, 0x85, 0xe0, 0x2d, 0x98, 0x5c, 0x72, 0x83,
- 0x6a, 0xdb, 0x0f, 0xec, 0x76, 0x9d, 0x56, 0x2b, 0x6a, 0x5c, 0xed, 0x6d, 0x37, 0xb0, 0x1c, 0x51,
- 0xc2, 0xbe, 0x5c, 0xc7, 0x24, 0x9f, 0x43, 0xd2, 0x3b, 0xb4, 0x4d, 0xbd, 0x28, 0x9e, 0xf6, 0x30,
- 0xef, 0x5b, 0x46, 0xba, 0x1b, 0x96, 0x98, 0x3a, 0xa2, 0x48, 0x33, 0xc6, 0x93, 0x83, 0x96, 0xdd,
- 0x06, 0xf5, 0xf9, 0x6e, 0xf1, 0x09, 0x4a, 0x33, 0xa6, 0xb4, 0xad, 0xcf, 0x0e, 0xfa, 0xef, 0x63,
- 0x9a, 0xb1, 0x04, 0x2e, 0xf9, 0x1c, 0x0c, 0xe3, 0x4f, 0x21, 0xdd, 0xce, 0xa6, 0xb0, 0x8d, 0x24,
- 0xdb, 0x3a, 0xc3, 0x34, 0x39, 0x01, 0xa9, 0xc2, 0xa8, 0xb8, 0x58, 0x9d, 0x26, 0x59, 0x8e, 0xb8,
- 0xa1, 0xf1, 0x99, 0x21, 0xe8, 0x8d, 0x06, 0x4c, 0xa8, 0x15, 0xb2, 0x15, 0xb1, 0x62, 0xfb, 0x7b,
- 0xb4, 0xc1, 0x7e, 0x89, 0x3c, 0x77, 0xb8, 0x22, 0xf6, 0x10, 0x6a, 0xb1, 0xef, 0x30, 0x15, 0x14,
- 0x76, 0xa6, 0x56, 0xfd, 0x4d, 0x5f, 0x7c, 0x8a, 0x50, 0xb5, 0x38, 0xa8, 0xb6, 0x6b, 0x98, 0xa2,
- 0xc8, 0xf8, 0x2e, 0x98, 0x5b, 0xeb, 0x36, 0x9b, 0xf6, 0x76, 0x93, 0xca, 0x3c, 0x28, 0x98, 0x70,
- 0x7c, 0x09, 0x86, 0x6b, 0x4a, 0x0a, 0xf3, 0x30, 0x17, 0xa5, 0x82, 0x83, 0x46, 0xb0, 0x19, 0x0c,
- 0x15, 0x14, 0x4b, 0x5e, 0xce, 0x49, 0x8d, 0xdf, 0xcf, 0xc0, 0x9c, 0x34, 0x17, 0xf0, 0xec, 0xfa,
- 0x7e, 0x98, 0xc7, 0xfe, 0xb2, 0x36, 0xd7, 0x70, 0xc2, 0xc6, 0xa6, 0x11, 0x9f, 0x75, 0x77, 0xe5,
- 0x47, 0xe8, 0x02, 0x4b, 0xda, 0x07, 0x9f, 0xf4, 0x31, 0xe4, 0x1d, 0x18, 0x17, 0xc7, 0xa3, 0x12,
- 0xe0, 0x12, 0xa3, 0x88, 0x89, 0xeb, 0x5e, 0xdc, 0x78, 0x45, 0x45, 0x47, 0x59, 0x4c, 0x6f, 0xca,
- 0x93, 0xca, 0x00, 0xe9, 0xb2, 0x98, 0x5e, 0x47, 0x9f, 0xa9, 0xfb, 0x3b, 0xe3, 0xf1, 0xbe, 0x15,
- 0x73, 0xf7, 0x96, 0x1a, 0xd2, 0x2e, 0x13, 0xdd, 0x8c, 0xa3, 0x90, 0x76, 0xea, 0xcd, 0x38, 0x44,
- 0x0d, 0xc7, 0x24, 0x7b, 0xc2, 0x98, 0xbc, 0x27, 0xc7, 0x24, 0xd7, 0x7b, 0x62, 0xcc, 0xf6, 0x19,
- 0x87, 0x5a, 0xb4, 0x42, 0x86, 0x06, 0x52, 0xab, 0x3c, 0x87, 0xb1, 0xfb, 0x39, 0x49, 0x7c, 0x17,
- 0x15, 0x9c, 0x54, 0x5d, 0xcd, 0xf0, 0xe0, 0x4c, 0x4f, 0xd8, 0x9a, 0x3f, 0x0f, 0x13, 0xa5, 0x20,
- 0xb0, 0xeb, 0x7b, 0xb4, 0x51, 0x61, 0xdb, 0x93, 0x12, 0x7d, 0xcb, 0x16, 0x70, 0xf5, 0x8d, 0x4d,
- 0xc5, 0xe5, 0xd1, 0x64, 0x6d, 0x5f, 0x18, 0xd3, 0x86, 0xd1, 0x64, 0x19, 0x44, 0x8f, 0x26, 0xcb,
- 0x20, 0xe4, 0x3a, 0x8c, 0x56, 0xdb, 0x8f, 0x1c, 0xd6, 0x27, 0x3c, 0x00, 0x17, 0xea, 0xa6, 0x1c,
- 0x0e, 0x52, 0x37, 0x57, 0x81, 0x45, 0xde, 0x52, 0x2e, 0x35, 0x63, 0x91, 0x02, 0x83, 0xab, 0xbc,
- 0xc2, 0x08, 0x3b, 0xea, 0x85, 0x25, 0xbc, 0xe5, 0xdc, 0x82, 0x51, 0xa9, 0xc9, 0x84, 0x48, 0x69,
- 0x21, 0x28, 0x93, 0x01, 0x2b, 0x24, 0x32, 0xe6, 0x24, 0x57, 0xf2, 0xf5, 0x8d, 0x2b, 0x39, 0xc9,
- 0x95, 0x7c, 0x7d, 0x5a, 0x4e, 0x72, 0x25, 0x73, 0x5f, 0xa8, 0x04, 0x9a, 0x38, 0x51, 0x09, 0xf4,
- 0x10, 0x26, 0xd6, 0x6d, 0x2f, 0x70, 0x98, 0x8c, 0xd2, 0x0e, 0xfc, 0xf9, 0x49, 0x4d, 0x6f, 0xaa,
- 0x14, 0x2d, 0x5d, 0x94, 0x79, 0xb1, 0x3b, 0x0a, 0xbe, 0x9e, 0xc0, 0x39, 0x82, 0xa7, 0x9b, 0xd2,
- 0x4e, 0x3d, 0x89, 0x29, 0x2d, 0x76, 0x2a, 0xea, 0xca, 0xa6, 0x23, 0x8d, 0x0c, 0x5e, 0x5a, 0x62,
- 0x0a, 0xb3, 0x10, 0x91, 0x7c, 0x05, 0x26, 0xd8, 0xdf, 0xeb, 0x6e, 0xd3, 0xa9, 0x3b, 0xd4, 0x9f,
- 0x2f, 0x60, 0xe3, 0x2e, 0xa6, 0xae, 0x7e, 0x44, 0x3a, 0xac, 0xd1, 0x80, 0x2f, 0x60, 0x64, 0x1c,
- 0x57, 0x82, 0x6b, 0xdc, 0xc8, 0xfb, 0x30, 0xc1, 0x66, 0xdf, 0xb6, 0xed, 0x73, 0xd1, 0x74, 0x26,
- 0x32, 0x86, 0x6e, 0x08, 0x78, 0x22, 0xa0, 0xb3, 0x4a, 0xc0, 0x8e, 0xf9, 0x52, 0x87, 0x6f, 0x90,
- 0x44, 0x99, 0xed, 0x9d, 0xc4, 0xe6, 0x28, 0xd1, 0xc8, 0x17, 0x60, 0xa2, 0xd4, 0xe9, 0x44, 0x3b,
- 0xce, 0xac, 0xa2, 0x08, 0xeb, 0x74, 0xac, 0xd4, 0x5d, 0x47, 0xa3, 0x88, 0x6f, 0xcc, 0x73, 0xa7,
- 0xda, 0x98, 0xc9, 0x1b, 0xa1, 0xb4, 0x7e, 0x26, 0xd2, 0xea, 0x8a, 0x8b, 0xa3, 0x26, 0xfa, 0x73,
- 0xc1, 0xbd, 0x0c, 0x93, 0x5c, 0xcd, 0x29, 0xa5, 0x99, 0xb3, 0x89, 0xd5, 0x93, 0x22, 0xd4, 0xe8,
- 0x34, 0x64, 0x19, 0xa6, 0xb8, 0xb7, 0x77, 0x53, 0x44, 0xda, 0x9e, 0x3f, 0x87, 0xab, 0x16, 0xb9,
- 0x70, 0x27, 0xf1, 0x26, 0x26, 0x60, 0xb1, 0x35, 0x2e, 0x31, 0x22, 0xe3, 0x4f, 0x33, 0x70, 0xae,
- 0xc7, 0x88, 0x87, 0x71, 0x98, 0x33, 0xfd, 0xe3, 0x30, 0xb3, 0x9d, 0x43, 0xd7, 0x8a, 0x60, 0xfb,
- 0x85, 0x94, 0xa5, 0x8e, 0x97, 0x94, 0xb7, 0x5c, 0x20, 0x22, 0xc7, 0x91, 0xa8, 0xfa, 0xae, 0x8b,
- 0xaa, 0xd9, 0x5c, 0xf2, 0x10, 0x12, 0x78, 0xfc, 0xa3, 0x96, 0x8c, 0xe3, 0xa3, 0xe2, 0x45, 0x91,
- 0x42, 0x29, 0x1c, 0xd6, 0x0f, 0x5d, 0x6d, 0x05, 0xa7, 0xb0, 0x36, 0x8e, 0x32, 0x30, 0xae, 0xac,
- 0x43, 0x72, 0x49, 0xf1, 0x42, 0x2e, 0xf0, 0x24, 0x5c, 0x0a, 0x87, 0x2c, 0x3f, 0x89, 0x70, 0x51,
- 0x65, 0x4f, 0x56, 0x40, 0xdf, 0x67, 0xa2, 0x90, 0x12, 0xab, 0xba, 0xa5, 0x69, 0x8b, 0x4d, 0x2c,
- 0xc7, 0x74, 0xfe, 0xb6, 0x1f, 0x94, 0xea, 0x81, 0xf3, 0x88, 0x0e, 0x70, 0xe8, 0x44, 0xe9, 0xfc,
- 0x6d, 0x3f, 0xb0, 0x6c, 0x24, 0x4b, 0xa4, 0xf3, 0x0f, 0x19, 0x1a, 0x3f, 0x90, 0x01, 0xd8, 0xac,
- 0x96, 0x31, 0xd8, 0xfc, 0x93, 0x0a, 0x05, 0xe9, 0x01, 0x7c, 0x25, 0xf7, 0x3e, 0xe2, 0xc0, 0xff,
- 0x9c, 0x81, 0x29, 0x1d, 0x8d, 0xbc, 0x07, 0xd3, 0xb5, 0xba, 0xe7, 0x36, 0x9b, 0xdb, 0x76, 0x7d,
- 0x7f, 0xd5, 0x69, 0x53, 0x1e, 0x3a, 0x75, 0x98, 0x9f, 0x45, 0x7e, 0x58, 0x64, 0x35, 0x59, 0x99,
- 0x19, 0x47, 0x26, 0x3f, 0x98, 0x81, 0xc9, 0xda, 0x9e, 0x7b, 0x10, 0x46, 0x3b, 0x15, 0x03, 0xf2,
- 0x55, 0xb6, 0xb6, 0xfd, 0x3d, 0xf7, 0x20, 0xca, 0xe0, 0xa9, 0xd9, 0x8a, 0xbe, 0x3b, 0xd8, 0x33,
- 0x7e, 0xdd, 0xc5, 0x9b, 0x4c, 0xe0, 0x5f, 0xd3, 0x2a, 0x31, 0xf5, 0x3a, 0x8d, 0xbf, 0xc8, 0xc0,
- 0x38, 0xde, 0x79, 0x9a, 0x4d, 0x94, 0xb9, 0x3e, 0x49, 0xe9, 0x20, 0xc3, 0x76, 0xf5, 0x19, 0xd8,
- 0x37, 0x61, 0x3a, 0x86, 0x46, 0x0c, 0x18, 0xa9, 0x61, 0x80, 0x01, 0x55, 0x41, 0xc1, 0x43, 0x0e,
- 0x98, 0xa2, 0xc4, 0x58, 0x56, 0xc8, 0x1e, 0xde, 0xc0, 0x67, 0xdd, 0x45, 0x00, 0x47, 0x82, 0xe4,
- 0xcd, 0x86, 0xc4, 0xbf, 0xe4, 0xe1, 0x0d, 0x53, 0xc1, 0x32, 0xd6, 0x60, 0xa4, 0xe6, 0x7a, 0xc1,
- 0xd2, 0x21, 0xbf, 0x4c, 0x54, 0xa8, 0x5f, 0x57, 0xdf, 0x6d, 0x1d, 0x7c, 0x2b, 0xa9, 0x9b, 0xa2,
- 0x88, 0x14, 0x61, 0xf8, 0xb6, 0x43, 0x9b, 0x0d, 0xd5, 0x9e, 0x77, 0x87, 0x01, 0x4c, 0x0e, 0x67,
- 0x17, 0xae, 0xb3, 0x51, 0x4e, 0x96, 0xc8, 0x70, 0xf8, 0x49, 0xd7, 0x4d, 0x59, 0xeb, 0xdf, 0x17,
- 0xc3, 0x3c, 0x08, 0xc9, 0x9a, 0xfa, 0x74, 0xf5, 0x3f, 0xcc, 0xc0, 0x42, 0x6f, 0x12, 0xd5, 0x16,
- 0x39, 0xd3, 0xc7, 0x16, 0xf9, 0x95, 0xf8, 0x3b, 0x23, 0xa2, 0x89, 0x77, 0xc6, 0xe8, 0x75, 0xb1,
- 0x82, 0xa6, 0xe0, 0x75, 0x2a, 0x13, 0xb1, 0x5c, 0xea, 0xf3, 0xcd, 0x88, 0xc8, 0x87, 0x39, 0x40,
- 0x1a, 0x53, 0xd0, 0x1a, 0xbf, 0x3d, 0x04, 0xe7, 0x7b, 0x52, 0x90, 0x15, 0x25, 0xbd, 0xd3, 0x54,
- 0x98, 0x58, 0xa6, 0x27, 0xfe, 0x35, 0xfc, 0x17, 0xad, 0xfd, 0xe2, 0xde, 0x6e, 0x0f, 0xc2, 0xb4,
- 0x3e, 0x59, 0xe4, 0xf5, 0xa9, 0x13, 0x79, 0x71, 0x74, 0x64, 0x06, 0xc9, 0x0c, 0x3f, 0xe8, 0x17,
- 0x49, 0x03, 0xdb, 0x69, 0xfa, 0xea, 0xb2, 0x6b, 0x70, 0x90, 0x29, 0xcb, 0x22, 0x03, 0xf1, 0xa1,
- 0x74, 0x03, 0x71, 0xe3, 0x5f, 0x65, 0x60, 0x2c, 0xfc, 0x6c, 0xb2, 0x00, 0x67, 0x37, 0xcc, 0x52,
- 0x79, 0xd9, 0xda, 0xf8, 0x60, 0x7d, 0xd9, 0xda, 0x5c, 0xab, 0xad, 0x2f, 0x97, 0xab, 0xb7, 0xab,
- 0xcb, 0x95, 0xc2, 0x73, 0x64, 0x06, 0x26, 0x37, 0xd7, 0xee, 0xad, 0x3d, 0xd8, 0x5a, 0xb3, 0x96,
- 0x4d, 0xf3, 0x81, 0x59, 0xc8, 0x90, 0x49, 0x18, 0x33, 0x97, 0x4a, 0x65, 0x6b, 0xed, 0x41, 0x65,
- 0xb9, 0x90, 0x25, 0x05, 0x98, 0x28, 0x3f, 0x58, 0x5b, 0x5b, 0x2e, 0x6f, 0x54, 0x1f, 0x56, 0x37,
- 0x3e, 0x28, 0xe4, 0x08, 0x81, 0x29, 0x44, 0x58, 0x37, 0xab, 0x6b, 0xe5, 0xea, 0x7a, 0x69, 0xb5,
- 0x30, 0xc4, 0x60, 0x0c, 0x5f, 0x81, 0x0d, 0x87, 0x8c, 0xee, 0x6d, 0x2e, 0x2d, 0x17, 0x46, 0x18,
- 0x0a, 0xfb, 0x4b, 0x41, 0x19, 0x65, 0xd5, 0x23, 0x4a, 0xa5, 0xb4, 0x51, 0x5a, 0x2a, 0xd5, 0x96,
- 0x0b, 0x79, 0x72, 0x0e, 0x66, 0x35, 0x90, 0xb5, 0xfa, 0xe0, 0x4e, 0x75, 0xad, 0x30, 0x46, 0xe6,
- 0xa0, 0x10, 0xc2, 0x2a, 0x4b, 0xd6, 0x66, 0x6d, 0xd9, 0x2c, 0x40, 0x1c, 0xba, 0x56, 0xba, 0xbf,
- 0x5c, 0x18, 0x37, 0xde, 0xe5, 0x7e, 0x88, 0xbc, 0xab, 0xc9, 0x59, 0x20, 0xb5, 0x8d, 0xd2, 0xc6,
- 0x66, 0x2d, 0xd6, 0xf8, 0x71, 0x18, 0xad, 0x6d, 0x96, 0xcb, 0xcb, 0xb5, 0x5a, 0x21, 0x43, 0x00,
- 0x46, 0x6e, 0x97, 0xaa, 0xab, 0xcb, 0x95, 0x42, 0xd6, 0xf8, 0xa9, 0x0c, 0xcc, 0x48, 0x09, 0x50,
- 0x3e, 0x1a, 0x3d, 0xe1, 0x5a, 0x7c, 0x4f, 0xbb, 0xd8, 0x4a, 0x27, 0xb1, 0x58, 0x25, 0x7d, 0x96,
- 0xe1, 0x2f, 0x64, 0xe0, 0x4c, 0x2a, 0x36, 0xf9, 0x00, 0x0a, 0xf2, 0x0b, 0xee, 0xdb, 0x41, 0x7d,
- 0x2f, 0xda, 0xc7, 0x2e, 0xc6, 0x6a, 0x89, 0xa1, 0x71, 0xb5, 0x66, 0x94, 0x70, 0x3a, 0xc1, 0x66,
- 0xf0, 0x74, 0x08, 0xc6, 0xb7, 0x32, 0x70, 0xae, 0x47, 0x35, 0xa4, 0x0c, 0x23, 0x61, 0x62, 0x9c,
- 0x3e, 0x06, 0x6f, 0x73, 0xdf, 0x3e, 0x2a, 0x0a, 0x44, 0xcc, 0xd0, 0x8b, 0x7f, 0x99, 0x23, 0x61,
- 0xa6, 0x1b, 0x4c, 0x37, 0xc3, 0xbb, 0xef, 0x7c, 0xac, 0xe7, 0x45, 0x4d, 0xa5, 0xad, 0xda, 0xd2,
- 0xb8, 0xe8, 0xbb, 0x9c, 0x7d, 0xe0, 0x63, 0xbe, 0x19, 0xe3, 0x67, 0x33, 0x4c, 0xb8, 0x8b, 0x23,
- 0x32, 0x99, 0xb7, 0xe4, 0xfb, 0xdd, 0x16, 0x35, 0xdd, 0x26, 0x2d, 0x99, 0x6b, 0xe2, 0xd8, 0x40,
- 0x69, 0xd5, 0xc6, 0x02, 0xbc, 0x56, 0x58, 0xb6, 0xd7, 0xd6, 0x5e, 0xab, 0x55, 0x1a, 0xf2, 0x16,
- 0xc0, 0xf2, 0xe3, 0x80, 0x7a, 0x6d, 0xbb, 0x19, 0xc6, 0x88, 0xe1, 0x91, 0xad, 0x04, 0x54, 0x97,
- 0xb7, 0x15, 0x64, 0xe3, 0x6f, 0x66, 0x60, 0x42, 0x5c, 0x9a, 0x4a, 0x4d, 0xea, 0x05, 0x4f, 0x36,
- 0xbd, 0xde, 0xd2, 0xa6, 0x57, 0xe8, 0xdf, 0xa1, 0xf0, 0x67, 0xc5, 0xa9, 0x33, 0xeb, 0x9f, 0x65,
- 0xa0, 0x10, 0x47, 0x24, 0xef, 0x41, 0xbe, 0x46, 0x1f, 0x51, 0xcf, 0x09, 0x0e, 0xc5, 0x46, 0x29,
- 0x53, 0x08, 0x72, 0x1c, 0x51, 0xc6, 0xe7, 0x83, 0x2f, 0x7e, 0x99, 0x21, 0xcd, 0xa0, 0xfb, 0xbd,
- 0xa2, 0xf6, 0xc8, 0x3d, 0x2d, 0xb5, 0x87, 0xf1, 0xbf, 0x67, 0xe1, 0xdc, 0x1d, 0x1a, 0xa8, 0x6d,
- 0x0a, 0xcd, 0x0b, 0x3e, 0x3d, 0x58, 0xbb, 0x94, 0x96, 0xcc, 0xc3, 0x28, 0x16, 0xc9, 0xf1, 0x35,
- 0xe5, 0x4f, 0xb2, 0x14, 0xce, 0xeb, 0x9c, 0x96, 0xa3, 0xac, 0x47, 0xdd, 0xd7, 0x94, 0xac, 0x45,
- 0xe1, 0xb4, 0xbe, 0x0c, 0x53, 0x18, 0x96, 0xbf, 0xcb, 0x96, 0x03, 0x6d, 0x08, 0xf5, 0x4f, 0xde,
- 0x8c, 0x41, 0xc9, 0x6b, 0x50, 0x60, 0x90, 0x52, 0x7d, 0xbf, 0xed, 0x1e, 0x34, 0x69, 0x63, 0x97,
- 0x36, 0xf0, 0x58, 0xcf, 0x9b, 0x09, 0xb8, 0xe4, 0xb9, 0xd9, 0xe6, 0x57, 0x37, 0xda, 0x40, 0x1d,
- 0x8d, 0xe0, 0x19, 0x41, 0x17, 0xde, 0x82, 0xf1, 0x8f, 0x98, 0x81, 0xcc, 0xf8, 0xdf, 0x32, 0x30,
- 0x87, 0x8d, 0x53, 0x2a, 0x96, 0xd9, 0x61, 0x65, 0x6f, 0x29, 0x49, 0x79, 0x6c, 0x06, 0xd2, 0x97,
- 0x42, 0xd8, 0x8b, 0x91, 0x4e, 0x28, 0x3b, 0x80, 0x4e, 0xa8, 0x76, 0x9a, 0x4c, 0xf8, 0x03, 0xaa,
- 0xb4, 0xee, 0x0e, 0xe5, 0x73, 0x85, 0xa1, 0x68, 0xc8, 0x8d, 0x1f, 0xcc, 0xc2, 0xa8, 0x49, 0x31,
- 0x45, 0x38, 0xb9, 0x0c, 0xa3, 0x6b, 0x6e, 0x40, 0xfd, 0xfb, 0x5a, 0x3e, 0xf8, 0x36, 0x03, 0x59,
- 0xad, 0x86, 0x29, 0x0b, 0xd9, 0x84, 0x5f, 0xf7, 0xdc, 0x46, 0xb7, 0x1e, 0xa8, 0x13, 0xbe, 0xc3,
- 0x41, 0xa6, 0x2c, 0x23, 0xaf, 0xc3, 0x98, 0xe0, 0x1c, 0x3e, 0xea, 0xa2, 0xed, 0xb2, 0x47, 0xc3,
- 0x14, 0xf3, 0x11, 0x02, 0xca, 0xb4, 0x5c, 0xc0, 0x18, 0x52, 0x64, 0xda, 0x84, 0xcc, 0x20, 0x45,
- 0xf5, 0xe1, 0x3e, 0xa2, 0xfa, 0xa7, 0x61, 0xa4, 0xe4, 0xfb, 0x34, 0x90, 0x51, 0x14, 0x26, 0xc2,
- 0xb0, 0x71, 0x3e, 0x0d, 0x38, 0x63, 0x1b, 0xcb, 0x4d, 0x81, 0x67, 0xfc, 0xcb, 0x2c, 0x0c, 0xe3,
- 0x9f, 0xf8, 0x64, 0xea, 0xd5, 0xf7, 0xb4, 0x27, 0x53, 0xaf, 0xbe, 0x67, 0x22, 0x94, 0xdc, 0x40,
- 0x4d, 0x85, 0xcc, 0x1f, 0x25, 0x5a, 0x8f, 0x2a, 0xf8, 0x46, 0x04, 0x36, 0x55, 0x9c, 0xf0, 0x85,
- 0x3f, 0x97, 0x1a, 0x3b, 0xe5, 0x2c, 0x64, 0x1f, 0xd4, 0x44, 0x8b, 0x31, 0x22, 0x97, 0xeb, 0x9b,
- 0xd9, 0x07, 0x35, 0xec, 0x8d, 0x95, 0xd2, 0xe2, 0x9b, 0xb7, 0x44, 0x43, 0x79, 0x6f, 0xec, 0xd9,
- 0x8b, 0x6f, 0xde, 0x32, 0x45, 0x09, 0xeb, 0x5f, 0xfc, 0x66, 0x7c, 0x78, 0xe5, 0x3e, 0xff, 0xd8,
- 0xbf, 0xd8, 0x36, 0x7c, 0x64, 0x35, 0x23, 0x04, 0xb2, 0x08, 0xe3, 0x22, 0xd6, 0x04, 0xe2, 0x2b,
- 0xb1, 0x20, 0x44, 0x2c, 0x0a, 0x4e, 0xa1, 0x22, 0xf1, 0x27, 0x38, 0x31, 0x40, 0x32, 0xcb, 0xad,
- 0x78, 0x82, 0x93, 0x43, 0xe8, 0x9b, 0x0a, 0x0a, 0xfb, 0x24, 0xfe, 0x86, 0x17, 0xf9, 0xf2, 0x4f,
- 0x29, 0x41, 0x0b, 0x30, 0xcd, 0x42, 0x88, 0x60, 0xfc, 0x4a, 0x16, 0xf2, 0xeb, 0xcd, 0xee, 0xae,
- 0xd3, 0x7e, 0x78, 0x83, 0x10, 0xc0, 0x6b, 0x9c, 0xcc, 0xc3, 0xc1, 0xfe, 0x26, 0xe7, 0x21, 0x2f,
- 0x6f, 0x6e, 0x72, 0x43, 0xf2, 0xc5, 0xad, 0x6d, 0x1e, 0xe4, 0xb8, 0x8b, 0xd0, 0x6b, 0xf2, 0x27,
- 0xb9, 0x01, 0xe1, 0xfd, 0xab, 0xd7, 0x45, 0x6d, 0x88, 0x2d, 0x16, 0x33, 0x44, 0x23, 0x6f, 0x00,
- 0x1e, 0x12, 0xe2, 0xf2, 0x20, 0x15, 0xda, 0xfc, 0xd3, 0x84, 0x9c, 0xc2, 0x49, 0x10, 0x8d, 0xdc,
- 0x04, 0x31, 0x31, 0x45, 0x36, 0xf5, 0x33, 0x3a, 0x01, 0xcf, 0x4f, 0x29, 0x49, 0x04, 0x2a, 0x79,
- 0x07, 0xc6, 0xeb, 0x1e, 0xc5, 0x57, 0x47, 0xbb, 0x19, 0x25, 0x49, 0x57, 0x29, 0xcb, 0x51, 0xf9,
- 0xc3, 0x1b, 0xa6, 0x8a, 0x6e, 0xfc, 0x4a, 0x1e, 0x26, 0xd4, 0xef, 0x21, 0x26, 0xcc, 0xfa, 0x4d,
- 0x76, 0x77, 0x17, 0xc6, 0x66, 0x1d, 0x2c, 0x14, 0xc7, 0xe9, 0x25, 0xfd, 0x83, 0x18, 0x1e, 0xb7,
- 0x3c, 0x93, 0x41, 0x32, 0x56, 0x9e, 0x33, 0x67, 0xfc, 0x08, 0xcc, 0xf1, 0x48, 0x09, 0xf2, 0x6e,
- 0xc7, 0xdf, 0xa5, 0x6d, 0x47, 0xbe, 0xb7, 0xbc, 0xa4, 0x31, 0x7a, 0x20, 0x0a, 0x13, 0xbc, 0x42,
- 0x32, 0xf2, 0x26, 0x8c, 0xb8, 0x1d, 0xda, 0xb6, 0x1d, 0x71, 0xc6, 0x3d, 0x1f, 0x63, 0x40, 0xdb,
- 0xa5, 0xaa, 0x42, 0x28, 0x90, 0xc9, 0x75, 0x18, 0x72, 0xf7, 0xc3, 0xf1, 0x3a, 0xaf, 0x13, 0xed,
- 0x07, 0xb6, 0x42, 0x82, 0x88, 0x8c, 0xe0, 0x43, 0xbb, 0xb5, 0x23, 0x46, 0x4c, 0x27, 0xb8, 0x6b,
- 0xb7, 0x76, 0x54, 0x02, 0x86, 0x48, 0xde, 0x07, 0xe8, 0xd8, 0xbb, 0xd4, 0xb3, 0x1a, 0xdd, 0xe0,
- 0x50, 0x8c, 0xdb, 0x45, 0x8d, 0x6c, 0x9d, 0x15, 0x57, 0xba, 0xc1, 0xa1, 0x42, 0x3b, 0xd6, 0x91,
- 0x40, 0x52, 0x02, 0x68, 0xd9, 0x41, 0x40, 0xbd, 0x96, 0x2b, 0xac, 0xfd, 0xa2, 0x20, 0x88, 0x9c,
- 0xc1, 0xfd, 0xb0, 0x58, 0xe1, 0xa0, 0x10, 0xe1, 0x47, 0x3b, 0x9e, 0x2d, 0x72, 0xda, 0xc7, 0x3e,
- 0xda, 0xf1, 0xb4, 0x56, 0x32, 0x44, 0xf2, 0x39, 0x18, 0x6d, 0x38, 0x7e, 0xdd, 0xf5, 0x1a, 0x22,
- 0x7a, 0xca, 0x0b, 0x1a, 0x4d, 0x85, 0x97, 0x29, 0x64, 0x12, 0x9d, 0x7d, 0xad, 0x08, 0x82, 0xba,
- 0xe6, 0x1e, 0xa0, 0x9a, 0x3f, 0xfe, 0xb5, 0xb5, 0xb0, 0x58, 0xfd, 0xda, 0x88, 0x88, 0x0d, 0xe5,
- 0xae, 0x13, 0x34, 0xed, 0x6d, 0xf1, 0xce, 0xad, 0x0f, 0xe5, 0x1d, 0x2c, 0x52, 0x87, 0x92, 0x23,
- 0x93, 0xb7, 0x20, 0x4f, 0xdb, 0x81, 0x67, 0x5b, 0x4e, 0x43, 0x38, 0x55, 0xea, 0x1f, 0xcd, 0x0e,
- 0x60, 0xbb, 0x5a, 0x51, 0x3f, 0x1a, 0xf1, 0xab, 0x0d, 0xd6, 0x3f, 0x7e, 0xdd, 0x69, 0x09, 0x5f,
- 0x48, 0xbd, 0x7f, 0x6a, 0xe5, 0xea, 0x7d, 0xb5, 0x7f, 0x18, 0x22, 0x79, 0x0f, 0x46, 0xd9, 0xfa,
- 0x6d, 0xb8, 0xbb, 0x22, 0x20, 0x85, 0xa1, 0xf7, 0x0f, 0x2f, 0x4b, 0x4c, 0x57, 0x49, 0xc4, 0x16,
- 0xb2, 0x7d, 0xe0, 0x5b, 0x4e, 0x5d, 0x04, 0x99, 0xd0, 0x97, 0x63, 0x69, 0xab, 0x56, 0x2d, 0x2b,
- 0x64, 0xc3, 0xf6, 0x81, 0x5f, 0xad, 0x93, 0x45, 0x18, 0xc6, 0x14, 0x15, 0x22, 0x10, 0xa6, 0x4e,
- 0x83, 0xc9, 0x29, 0x54, 0x1a, 0x44, 0x65, 0x03, 0xd9, 0xf2, 0xd1, 0xbd, 0x44, 0x24, 0x8a, 0xd0,
- 0xfb, 0xe4, 0x7e, 0x0d, 0x7d, 0x4e, 0xd4, 0x4f, 0x14, 0xe8, 0xe4, 0x22, 0x40, 0xf4, 0x8a, 0xcf,
- 0xdf, 0x5c, 0x4c, 0x05, 0xf2, 0xf9, 0xa1, 0xff, 0xeb, 0x97, 0x8a, 0x99, 0x25, 0x80, 0xbc, 0x8c,
- 0x90, 0x63, 0xac, 0xc2, 0xf9, 0x9e, 0xeb, 0x9e, 0x5c, 0x85, 0xc2, 0x8e, 0x2d, 0xb4, 0x7e, 0xf5,
- 0x3d, 0xbb, 0xdd, 0xa6, 0x4d, 0xb1, 0xe3, 0x4e, 0x4b, 0x78, 0x99, 0x83, 0x39, 0x67, 0xe3, 0x7d,
- 0x98, 0x4b, 0x1b, 0x70, 0xf2, 0x22, 0x4c, 0xa8, 0xc1, 0x80, 0x04, 0x93, 0x71, 0xbb, 0xe3, 0xc8,
- 0x70, 0x40, 0x82, 0xc1, 0x6f, 0x65, 0xe0, 0x85, 0x7e, 0xdb, 0x07, 0x59, 0x80, 0x7c, 0xc7, 0x73,
- 0x5c, 0x14, 0x53, 0x45, 0xb6, 0x05, 0xf9, 0x1b, 0x13, 0x29, 0xa0, 0x3c, 0x15, 0xd8, 0xbb, 0xff,
- 0x86, 0xbd, 0x67, 0x89, 0x71, 0x23, 0xb9, 0x4e, 0x4d, 0x72, 0x66, 0x38, 0x8f, 0xf3, 0xe9, 0x29,
- 0x7d, 0x66, 0x56, 0xdf, 0x55, 0xaf, 0x24, 0x4b, 0x5c, 0xef, 0xda, 0xd2, 0x66, 0xbd, 0xbb, 0xb6,
- 0xd7, 0x76, 0x0f, 0xa7, 0x67, 0x48, 0x89, 0x3f, 0x77, 0x93, 0x23, 0xcb, 0xb2, 0xdd, 0x6e, 0x91,
- 0x3d, 0x33, 0x6d, 0x73, 0xd8, 0x34, 0x9b, 0x5c, 0x59, 0x46, 0x80, 0xd8, 0x08, 0x60, 0x03, 0xf9,
- 0x39, 0x71, 0x12, 0x64, 0x91, 0x8b, 0x0f, 0x31, 0x82, 0x1c, 0x72, 0x0d, 0x12, 0x24, 0xb9, 0xf8,
- 0x66, 0xc0, 0x30, 0x60, 0x20, 0x37, 0x27, 0x58, 0x24, 0x0b, 0x24, 0x40, 0x3e, 0xb7, 0x20, 0x39,
- 0xf8, 0x14, 0xd4, 0xab, 0xaa, 0xee, 0xea, 0x0f, 0xa9, 0x91, 0x77, 0x9d, 0xc4, 0x80, 0x4f, 0x33,
- 0x7c, 0xf5, 0xde, 0xeb, 0xfa, 0xd7, 0xab, 0x57, 0xef, 0xc3, 0x1d, 0x3c, 0xcc, 0x65, 0x84, 0x74,
- 0x9c, 0xc3, 0x80, 0xbc, 0x08, 0x1b, 0x7d, 0xf7, 0xc0, 0x99, 0x0e, 0x26, 0x76, 0xd0, 0x3b, 0x72,
- 0xfb, 0xe8, 0x82, 0x85, 0x86, 0x7b, 0xa6, 0xca, 0x0b, 0x2c, 0x01, 0x4f, 0xd5, 0x78, 0x61, 0x46,
- 0x8d, 0xef, 0x16, 0x8a, 0x8a, 0x9a, 0x33, 0xd1, 0x52, 0x4a, 0xfb, 0x7a, 0x0e, 0xb6, 0x66, 0xad,
- 0x17, 0xf2, 0x66, 0x56, 0x1f, 0xb0, 0x87, 0x0b, 0x19, 0x2e, 0x3f, 0x5c, 0x48, 0x5f, 0x23, 0x77,
- 0x20, 0x74, 0xa0, 0x7a, 0x5a, 0x30, 0x04, 0x01, 0xa3, 0x34, 0x23, 0x27, 0x08, 0x1e, 0xd3, 0x2d,
- 0x21, 0x2f, 0x05, 0xd4, 0xe5, 0x30, 0x99, 0x46, 0xc0, 0xc8, 0x6b, 0x00, 0xbd, 0x81, 0x1f, 0xb8,
- 0x68, 0x1f, 0xc0, 0x65, 0x0d, 0x66, 0x16, 0x1e, 0x42, 0xe5, 0x07, 0x61, 0x84, 0x56, 0xfc, 0xbe,
- 0xcb, 0x07, 0xd0, 0x81, 0xcd, 0x19, 0x1b, 0x24, 0x1d, 0x9e, 0x28, 0x3b, 0xbd, 0xc8, 0x75, 0x35,
- 0x0d, 0x73, 0xd4, 0x27, 0x7b, 0x3c, 0x37, 0x6b, 0x8e, 0x3c, 0x01, 0x92, 0xde, 0x05, 0x29, 0x77,
- 0x6e, 0xdc, 0x3c, 0x1d, 0x87, 0xdc, 0x19, 0xa4, 0x3b, 0x1e, 0x90, 0x2b, 0x50, 0x12, 0xb9, 0x2c,
- 0xa9, 0x2c, 0xcf, 0x98, 0x03, 0x07, 0xdd, 0x73, 0x71, 0xf2, 0x60, 0xc4, 0x54, 0x74, 0x93, 0xe3,
- 0x52, 0xc2, 0x32, 0x42, 0x3a, 0x4f, 0x46, 0xa2, 0x75, 0x17, 0xc5, 0xfc, 0x8e, 0x9f, 0x4d, 0xbc,
- 0xf4, 0x0f, 0x15, 0x31, 0xfc, 0xe9, 0xcd, 0xfd, 0x69, 0xf5, 0x23, 0x80, 0x5e, 0x4a, 0xbc, 0x62,
- 0xf8, 0x3f, 0x95, 0x5a, 0xc4, 0xaa, 0xe3, 0x52, 0x0b, 0xff, 0x49, 0x6e, 0xc0, 0xfa, 0x98, 0xd9,
- 0xb1, 0x4e, 0x7c, 0xde, 0x9f, 0x2c, 0x6f, 0xc8, 0x2a, 0x03, 0x77, 0x7c, 0xec, 0x53, 0x5e, 0xaf,
- 0xbb, 0x61, 0x87, 0x49, 0x67, 0x1d, 0x79, 0x19, 0x96, 0xe9, 0x59, 0x87, 0x91, 0x76, 0x12, 0xee,
- 0x11, 0x88, 0x87, 0x92, 0x83, 0x59, 0xfc, 0x12, 0xff, 0x9f, 0xf3, 0x7a, 0x3b, 0x27, 0x98, 0xc9,
- 0x27, 0x2d, 0xd9, 0x84, 0x25, 0x7f, 0x7c, 0x28, 0x35, 0x6d, 0xd1, 0x1f, 0x1f, 0xd2, 0x76, 0xdd,
- 0x04, 0x95, 0x79, 0xeb, 0xb0, 0xa8, 0x09, 0xc1, 0x93, 0x21, 0xbb, 0x8a, 0x17, 0xcd, 0x35, 0x06,
- 0xc7, 0x84, 0xfd, 0x4f, 0x86, 0x3d, 0x8a, 0x19, 0x04, 0xbe, 0x2d, 0x07, 0xd8, 0xe2, 0xcd, 0x5e,
- 0x0b, 0x02, 0x3f, 0x8a, 0xb4, 0xd5, 0x27, 0xdb, 0xb0, 0x4a, 0xf9, 0x84, 0x61, 0xbe, 0xb8, 0x20,
- 0x70, 0x29, 0x2d, 0x08, 0x3c, 0x19, 0xf6, 0x44, 0x15, 0xcd, 0x95, 0x40, 0xfa, 0x45, 0xee, 0x81,
- 0x2a, 0x49, 0x4c, 0xe8, 0xbe, 0x99, 0xb0, 0xa9, 0x8e, 0xd8, 0x48, 0x92, 0x56, 0x6d, 0x78, 0xe0,
- 0x9b, 0xeb, 0xbd, 0x38, 0x80, 0x77, 0xcd, 0x77, 0x15, 0xb1, 0x97, 0x66, 0x10, 0x11, 0x0d, 0x56,
- 0x8f, 0x9c, 0xc0, 0x0e, 0x82, 0x63, 0x66, 0x23, 0xc6, 0x03, 0x0b, 0x97, 0x8e, 0x9c, 0xc0, 0x0a,
- 0x8e, 0x45, 0xe2, 0x92, 0xb3, 0x14, 0xc7, 0x77, 0xa6, 0x93, 0x23, 0x5b, 0x96, 0xff, 0x58, 0x8f,
- 0x9d, 0x3e, 0x72, 0x82, 0x16, 0x2d, 0x93, 0x78, 0x93, 0x6b, 0xb0, 0x86, 0x7c, 0x7b, 0x9e, 0x60,
- 0x8c, 0x91, 0x2f, 0xcc, 0x15, 0xca, 0xb8, 0xe7, 0x31, 0xce, 0xbc, 0x86, 0xff, 0x9a, 0x83, 0x73,
- 0xd9, 0xbd, 0x83, 0xd3, 0x93, 0xf6, 0x29, 0xfa, 0xe8, 0xf1, 0xba, 0x2d, 0x53, 0x08, 0x8b, 0x5a,
- 0x92, 0x35, 0x38, 0xb9, 0xcc, 0xc1, 0x29, 0xc3, 0x06, 0x32, 0xe2, 0x92, 0xe6, 0xc0, 0x0b, 0x26,
- 0x3c, 0x18, 0x87, 0xb9, 0x4e, 0x0b, 0xd8, 0x7e, 0x5e, 0xa7, 0x60, 0x72, 0x1d, 0xd6, 0xc4, 0x8e,
- 0xec, 0x3f, 0x1e, 0xd2, 0x0f, 0xb3, 0xed, 0x78, 0x95, 0x43, 0x5b, 0x08, 0x24, 0x67, 0x61, 0xd1,
- 0x19, 0x8d, 0xe8, 0x27, 0xd9, 0x2e, 0xbc, 0xe0, 0x8c, 0x46, 0x2c, 0xb9, 0x0e, 0x7a, 0x24, 0xda,
- 0x07, 0x68, 0x25, 0xc4, 0x4d, 0x12, 0xcd, 0x15, 0x04, 0x32, 0xcb, 0xa1, 0x80, 0xae, 0x7b, 0x4a,
- 0x2b, 0x50, 0x96, 0x10, 0x05, 0x9c, 0x51, 0x88, 0xf0, 0x1c, 0x14, 0xc5, 0x7b, 0x35, 0x73, 0xac,
- 0x30, 0x97, 0x1c, 0xfe, 0x56, 0xfd, 0x2a, 0x6c, 0xf6, 0xbd, 0x00, 0x27, 0x2f, 0x6b, 0xd2, 0x68,
- 0xc4, 0x7d, 0x20, 0x59, 0x90, 0x5e, 0xf3, 0x0c, 0x2f, 0xa6, 0x3d, 0xa9, 0x8f, 0x46, 0xcc, 0x13,
- 0x92, 0xf7, 0xf5, 0xeb, 0xb0, 0xce, 0x25, 0x2e, 0x7e, 0x44, 0x62, 0x5d, 0xf8, 0x02, 0xa6, 0x57,
- 0x21, 0x9e, 0xce, 0x08, 0x38, 0xa8, 0xd6, 0x17, 0x94, 0xff, 0xa0, 0xc0, 0xd9, 0x4c, 0x91, 0x8d,
- 0x7c, 0x11, 0x98, 0xcb, 0xd7, 0xc4, 0xb7, 0xc7, 0x6e, 0xcf, 0x1b, 0x79, 0x18, 0x43, 0x83, 0xa9,
- 0x34, 0xef, 0xcc, 0x13, 0xf6, 0xd0, 0x7d, 0xac, 0xe3, 0x9b, 0x21, 0x11, 0xd3, 0xb5, 0xa8, 0xe3,
- 0x04, 0xf8, 0xfc, 0x43, 0x38, 0x9b, 0x89, 0x9a, 0xa1, 0x03, 0xf9, 0x60, 0x3c, 0x99, 0xb4, 0x78,
- 0xa4, 0x4a, 0x34, 0x5a, 0xd2, 0x8d, 0xf0, 0xe6, 0x7d, 0x3f, 0x6c, 0x5e, 0x42, 0xb8, 0x23, 0x46,
- 0x72, 0x5d, 0x67, 0xdd, 0x4f, 0x04, 0xd1, 0xec, 0xa5, 0xfd, 0x10, 0xce, 0xf2, 0xc9, 0x77, 0x38,
- 0x76, 0x46, 0x47, 0x11, 0x3b, 0x56, 0xd1, 0x0f, 0x64, 0xb1, 0x63, 0xb3, 0x72, 0x8f, 0xe2, 0x87,
- 0x5c, 0x4f, 0x3b, 0x69, 0x20, 0x6f, 0xc3, 0x37, 0x72, 0x62, 0xa9, 0x67, 0x54, 0x27, 0x63, 0x5a,
- 0x2b, 0x59, 0xd3, 0xfa, 0xe4, 0x6b, 0xaa, 0x09, 0x44, 0xde, 0xac, 0x98, 0xd6, 0x93, 0x1b, 0x54,
- 0x09, 0x39, 0x9d, 0x57, 0x44, 0xda, 0x1a, 0x2c, 0x96, 0xcc, 0x73, 0xa3, 0x97, 0x04, 0x91, 0x0b,
- 0xb0, 0x1c, 0xe6, 0xcb, 0xe6, 0x07, 0x47, 0x91, 0x01, 0x6a, 0x7d, 0xf2, 0x3c, 0xac, 0x30, 0x91,
- 0x3c, 0xb6, 0xe6, 0x00, 0x61, 0x3a, 0x5d, 0x78, 0xa2, 0x0f, 0x14, 0x78, 0xfe, 0x69, 0x7d, 0x48,
- 0xee, 0xc3, 0x39, 0x34, 0xeb, 0x08, 0xfc, 0x70, 0x18, 0xec, 0x9e, 0xd3, 0x3b, 0x72, 0xf9, 0xac,
- 0xd5, 0x32, 0x07, 0x63, 0x34, 0xb2, 0xac, 0x96, 0x34, 0x0e, 0xa3, 0x91, 0x15, 0xf8, 0xe2, 0x77,
- 0x85, 0x92, 0xf3, 0x3a, 0xf4, 0xe1, 0xc2, 0x1c, 0x4a, 0x69, 0xe3, 0x50, 0xe4, 0x8d, 0xe3, 0x26,
- 0xa8, 0x07, 0x6e, 0x9f, 0xca, 0xc4, 0x6e, 0x1f, 0xab, 0xf6, 0xd6, 0x1d, 0x96, 0x21, 0xde, 0x5c,
- 0x0b, 0xe1, 0x56, 0xe0, 0xef, 0xdf, 0xe1, 0x5f, 0x39, 0x16, 0x47, 0x9e, 0x7c, 0xad, 0x20, 0x2f,
- 0xc3, 0xe9, 0x44, 0x7c, 0x92, 0xc8, 0xe1, 0xdd, 0xdc, 0xa0, 0x45, 0xf1, 0x68, 0x56, 0x57, 0x61,
- 0x45, 0xcc, 0x8a, 0x71, 0xe8, 0x07, 0x67, 0x96, 0x38, 0x8c, 0xae, 0x3a, 0xfe, 0xb9, 0xa9, 0x68,
- 0x54, 0xe6, 0x8d, 0xe4, 0x04, 0xb2, 0x34, 0x79, 0x09, 0x48, 0x28, 0xb7, 0x87, 0x1b, 0x05, 0xff,
- 0xe0, 0x86, 0x28, 0x09, 0x57, 0x38, 0xff, 0xec, 0xdf, 0xe6, 0xe0, 0x74, 0xc6, 0x55, 0x86, 0x5e,
- 0x02, 0xbc, 0xe1, 0xc4, 0x3d, 0x64, 0x57, 0x08, 0xb9, 0x91, 0xeb, 0x12, 0x9c, 0xeb, 0xa7, 0x16,
- 0x59, 0x06, 0x74, 0xfe, 0x2d, 0xfe, 0x8b, 0x6e, 0x1e, 0xce, 0x58, 0xa8, 0x5e, 0xe8, 0xbf, 0xa4,
- 0x06, 0x1b, 0x98, 0xd6, 0x21, 0xf0, 0x7c, 0xcc, 0x0e, 0x81, 0x42, 0x48, 0x21, 0x76, 0xd9, 0xc1,
- 0x5a, 0xb4, 0x25, 0x24, 0x2a, 0x85, 0x98, 0xea, 0x28, 0x01, 0x21, 0x1f, 0x83, 0xf3, 0xd2, 0x59,
- 0x63, 0x27, 0x56, 0x1e, 0x5a, 0xba, 0x9b, 0x9b, 0x4e, 0x78, 0xea, 0xec, 0xc4, 0xd6, 0xe0, 0x36,
- 0x5c, 0xc6, 0x41, 0xf4, 0xfa, 0x23, 0x3b, 0x95, 0x07, 0x04, 0x9b, 0xca, 0x02, 0xe7, 0x9f, 0xa7,
- 0x58, 0xb5, 0xfe, 0x28, 0x91, 0x12, 0x84, 0xb6, 0x9a, 0x77, 0xdf, 0x43, 0x38, 0x9b, 0x59, 0x63,
- 0x7a, 0xc0, 0xa0, 0x21, 0x55, 0x24, 0x1b, 0x2d, 0xd1, 0xdf, 0x54, 0x38, 0xba, 0x0a, 0x2b, 0x8f,
- 0x5c, 0x67, 0xec, 0x8e, 0xf9, 0xc9, 0xcd, 0xa7, 0x04, 0x83, 0xc9, 0x07, 0x77, 0x3f, 0x3e, 0x34,
- 0x5c, 0x67, 0x44, 0x1a, 0x70, 0x9a, 0x9d, 0x80, 0xde, 0x31, 0x0a, 0x83, 0x5c, 0xcf, 0xa4, 0xc4,
- 0xc4, 0x21, 0x24, 0xc1, 0xa3, 0xa9, 0x86, 0x58, 0x8c, 0xda, 0xdc, 0x38, 0x4c, 0x82, 0xe8, 0x8a,
- 0x3e, 0x97, 0x8d, 0x4d, 0xb6, 0xa1, 0xc4, 0x98, 0xb3, 0x6b, 0x01, 0x7b, 0x20, 0xb8, 0x3a, 0xf7,
- 0x0b, 0x15, 0xb4, 0x2f, 0x0e, 0xc2, 0xff, 0xe9, 0x79, 0x8d, 0x6f, 0xb1, 0xf6, 0xb1, 0xfc, 0xfe,
- 0x61, 0xae, 0x20, 0x90, 0xbf, 0x7b, 0x68, 0x7f, 0xa7, 0x88, 0xa6, 0xc6, 0x2e, 0xc7, 0x74, 0x6a,
- 0x05, 0xee, 0x50, 0xbc, 0x01, 0x2d, 0x9b, 0xfc, 0xd7, 0x33, 0x4e, 0x75, 0xf2, 0x1a, 0xac, 0x50,
- 0xb6, 0x87, 0xd3, 0x21, 0x9b, 0x72, 0xf9, 0x58, 0x5c, 0x9e, 0x06, 0x2b, 0xa2, 0xc3, 0x56, 0x3d,
- 0x65, 0x96, 0x8e, 0xa3, 0x9f, 0x54, 0x5a, 0x0e, 0x8e, 0x27, 0x23, 0x79, 0xa2, 0x0a, 0x45, 0xa1,
- 0xd5, 0xe8, 0xb4, 0x39, 0x49, 0x91, 0xe2, 0x44, 0xd2, 0xf2, 0xf6, 0x22, 0x53, 0x15, 0x6a, 0x2f,
- 0x42, 0x49, 0xe2, 0x4d, 0x1b, 0xc3, 0x3c, 0x67, 0x44, 0x63, 0xd8, 0x2f, 0x3e, 0xd8, 0x8f, 0xa0,
- 0x28, 0x58, 0xd2, 0x6b, 0xc1, 0x91, 0x1f, 0x88, 0x45, 0x8e, 0xff, 0x53, 0x18, 0xed, 0x65, 0x6c,
- 0xe4, 0x82, 0x89, 0xff, 0xe3, 0x59, 0x32, 0x71, 0xe8, 0x7d, 0x60, 0x10, 0xd8, 0x23, 0xb4, 0xc0,
- 0x0a, 0x85, 0x67, 0x0a, 0xef, 0x0c, 0x02, 0x66, 0x97, 0xc5, 0xbf, 0xf1, 0x57, 0xe1, 0x21, 0x9c,
- 0xd0, 0x26, 0xcc, 0xda, 0x33, 0x63, 0x47, 0x46, 0x2e, 0x7d, 0x64, 0xb0, 0x78, 0x2b, 0x9c, 0x92,
- 0x7d, 0x19, 0x10, 0x86, 0x47, 0x86, 0xb4, 0x33, 0x14, 0x62, 0x3b, 0x83, 0x74, 0x27, 0x8f, 0x46,
- 0x8f, 0x9d, 0x38, 0xe2, 0x4e, 0x9e, 0xdc, 0xa7, 0xfe, 0x34, 0x27, 0x54, 0x04, 0xdb, 0xbe, 0x3f,
- 0x09, 0x26, 0x63, 0x67, 0x14, 0x53, 0x85, 0x92, 0x63, 0x78, 0x0e, 0x25, 0xe8, 0x3b, 0x98, 0x42,
- 0xc3, 0x1f, 0x8b, 0x10, 0x1f, 0xe1, 0xcc, 0x2d, 0xdd, 0xf9, 0x50, 0x5c, 0xc6, 0xd7, 0x29, 0xb6,
- 0x2e, 0x23, 0xd3, 0x09, 0x2b, 0x71, 0xad, 0x9e, 0x32, 0x37, 0x19, 0xcf, 0x14, 0x16, 0xa9, 0x66,
- 0x2c, 0xe2, 0xa4, 0x2e, 0x74, 0x3b, 0x5a, 0xd1, 0x71, 0xae, 0xf2, 0x5a, 0x27, 0x9f, 0x80, 0x65,
- 0xaf, 0x2f, 0x67, 0x8a, 0x4c, 0x6a, 0xe1, 0x6a, 0x7d, 0x16, 0xad, 0x3a, 0xe2, 0x41, 0xe7, 0x9c,
- 0xc7, 0xa1, 0xdb, 0xab, 0x31, 0xa5, 0xb1, 0xb6, 0x2d, 0x6e, 0xa3, 0x69, 0x32, 0xb2, 0x06, 0xb9,
- 0x70, 0x84, 0x73, 0x5e, 0x9f, 0x2d, 0xaf, 0x28, 0x5e, 0xb6, 0xc9, 0x7f, 0x69, 0xbf, 0x0a, 0x37,
- 0x4f, 0xda, 0x47, 0x74, 0x29, 0xce, 0xe8, 0xf0, 0x65, 0x16, 0xaa, 0x32, 0xde, 0x6f, 0x57, 0x41,
- 0x0e, 0xf7, 0xeb, 0x89, 0xcd, 0x4f, 0xc0, 0xba, 0x63, 0x4f, 0xfb, 0xcb, 0x3c, 0xac, 0xc5, 0xd5,
- 0xe4, 0xe4, 0x45, 0x28, 0x48, 0x3b, 0xd0, 0x66, 0x86, 0x2e, 0x1d, 0xf7, 0x1d, 0x44, 0x3a, 0xd1,
- 0x8e, 0x43, 0xee, 0xc2, 0x1a, 0x1a, 0xee, 0xa1, 0xe8, 0x39, 0xf1, 0xf8, 0xe3, 0xcb, 0xfc, 0xf7,
- 0xb3, 0xe2, 0x0f, 0xde, 0xb9, 0x72, 0x0a, 0x9f, 0xca, 0x56, 0x28, 0x2d, 0x95, 0xfe, 0x68, 0xa1,
- 0xa4, 0x05, 0x2d, 0xcc, 0xd6, 0x82, 0xf2, 0xa6, 0xcc, 0xd0, 0x82, 0x2e, 0xcc, 0xd1, 0x82, 0x46,
- 0x94, 0xb2, 0x16, 0x14, 0x75, 0xe1, 0x4b, 0xb3, 0x74, 0xe1, 0x11, 0x0d, 0xd3, 0x85, 0x47, 0x5a,
- 0xcc, 0xe2, 0x4c, 0x2d, 0x66, 0x44, 0xc3, 0xb5, 0x98, 0xd7, 0x78, 0x1f, 0x8d, 0x9d, 0xc7, 0x36,
- 0x76, 0x1e, 0x3f, 0x16, 0xb1, 0xf5, 0xa6, 0xf3, 0x18, 0x8d, 0x6b, 0xb6, 0x97, 0x41, 0x58, 0xe4,
- 0x68, 0xbf, 0xaf, 0x24, 0x34, 0x81, 0x62, 0xfc, 0xae, 0xc3, 0x1a, 0x3b, 0xac, 0x78, 0x38, 0x53,
- 0x76, 0x5a, 0xad, 0x9a, 0xab, 0x02, 0xca, 0xee, 0x9b, 0x1f, 0x80, 0xf5, 0x10, 0x8d, 0x5f, 0xb9,
- 0xd0, 0x53, 0xcf, 0x0c, 0xa9, 0x79, 0xd8, 0x99, 0x17, 0x61, 0x23, 0x44, 0xe4, 0xda, 0x1c, 0x76,
- 0xdd, 0x5c, 0x35, 0x55, 0x51, 0xd0, 0xe6, 0x70, 0xed, 0x30, 0x79, 0xf3, 0xf8, 0x39, 0xd5, 0x4a,
- 0xfb, 0x7e, 0x3e, 0xa6, 0x25, 0x11, 0x9f, 0xa1, 0xa7, 0x68, 0xe0, 0xdb, 0xbc, 0x93, 0xf8, 0x5e,
- 0x74, 0x75, 0xc6, 0x98, 0x71, 0x9b, 0x26, 0xcb, 0x6a, 0x99, 0x10, 0x04, 0xbe, 0x30, 0x71, 0xb2,
- 0x99, 0x44, 0xcd, 0xce, 0x7d, 0x9c, 0xb3, 0x82, 0x1d, 0xdb, 0x78, 0xca, 0xf3, 0xd9, 0x89, 0x6b,
- 0x2a, 0x9d, 0xb2, 0x28, 0x59, 0x87, 0xbf, 0xc4, 0x07, 0xba, 0x80, 0x4a, 0xc5, 0x20, 0xce, 0x3c,
- 0x9f, 0x71, 0x77, 0x4a, 0x31, 0xc7, 0x5e, 0x42, 0xce, 0xea, 0x54, 0xfc, 0x2b, 0xd8, 0x1a, 0xb0,
- 0x82, 0x3a, 0x0a, 0xc1, 0xb0, 0x90, 0xa1, 0x82, 0x4f, 0x37, 0xbe, 0x52, 0x6b, 0x98, 0x25, 0x4a,
- 0x27, 0xd8, 0x1c, 0xc1, 0x73, 0xb2, 0x66, 0x21, 0x5e, 0xc9, 0x05, 0x11, 0xc5, 0x77, 0x6e, 0x0f,
- 0x44, 0x0a, 0x08, 0xac, 0xea, 0x39, 0x27, 0x0e, 0xe0, 0x68, 0xda, 0x11, 0x9c, 0x9f, 0x3d, 0x24,
- 0x73, 0x32, 0x44, 0x45, 0x07, 0x68, 0x4e, 0x3e, 0x40, 0x65, 0x3d, 0x43, 0x3e, 0xa6, 0x67, 0xd0,
- 0xfe, 0x24, 0x0f, 0x2f, 0x9c, 0x60, 0xb8, 0xe6, 0x7c, 0xf3, 0x53, 0x71, 0xf1, 0x2c, 0x17, 0xbb,
- 0x19, 0x52, 0xa6, 0x7c, 0x83, 0xa4, 0xb7, 0xd4, 0x6c, 0xe1, 0xec, 0x8b, 0xb0, 0xce, 0x76, 0x41,
- 0x66, 0x96, 0x78, 0x30, 0x1d, 0x9c, 0x60, 0x1b, 0xbc, 0x20, 0x7c, 0xa8, 0x12, 0xa4, 0xb8, 0x33,
- 0xe2, 0x8e, 0x61, 0x85, 0x30, 0xd2, 0x81, 0x12, 0xa2, 0x1d, 0x38, 0xde, 0xe0, 0x44, 0xce, 0x3c,
- 0xc2, 0x43, 0x4b, 0x26, 0x63, 0xd6, 0xd4, 0x14, 0xb0, 0x8b, 0xbf, 0xc9, 0x0d, 0x58, 0x1f, 0x4e,
- 0x8f, 0xa9, 0xe0, 0xc1, 0xe6, 0x02, 0xb7, 0xfe, 0x58, 0x30, 0x57, 0x87, 0xd3, 0x63, 0x7d, 0x34,
- 0xc2, 0x21, 0x45, 0x33, 0x91, 0x0d, 0x8a, 0xc7, 0x56, 0xad, 0xc0, 0x5c, 0x44, 0x4c, 0xca, 0x80,
- 0xad, 0x5b, 0x8e, 0x7b, 0x06, 0x98, 0xd1, 0x20, 0xcf, 0x90, 0xc5, 0x7e, 0x68, 0xff, 0x9d, 0x13,
- 0xf7, 0xdd, 0xd9, 0xf3, 0xfe, 0x97, 0x43, 0x94, 0x31, 0x44, 0x37, 0x41, 0xa5, 0x5d, 0x1f, 0x6d,
- 0x2a, 0xe1, 0x18, 0xad, 0x0d, 0xa7, 0xc7, 0x61, 0xdf, 0xc9, 0x1d, 0xbf, 0x28, 0x77, 0xfc, 0x6b,
- 0xe2, 0x3e, 0x9c, 0xb9, 0x3d, 0xcc, 0xee, 0x72, 0xed, 0x3f, 0xf2, 0x70, 0xe3, 0x64, 0x9b, 0xc0,
- 0x2f, 0xc7, 0x2d, 0x63, 0xdc, 0x12, 0xaa, 0xd3, 0x85, 0x94, 0xea, 0x34, 0x63, 0xed, 0x2d, 0x66,
- 0xad, 0xbd, 0x94, 0xa2, 0x76, 0x29, 0x43, 0x51, 0x9b, 0xb9, 0x40, 0x8b, 0x4f, 0x59, 0xa0, 0xcb,
- 0xf2, 0x3c, 0xf9, 0x97, 0x50, 0x81, 0x11, 0xbf, 0x0f, 0x3c, 0x84, 0xd3, 0xe2, 0x3e, 0xc0, 0x4e,
- 0x8e, 0x48, 0xff, 0x5e, 0xba, 0x73, 0x2b, 0xeb, 0x26, 0x80, 0x68, 0x19, 0xd2, 0xfa, 0x06, 0xbf,
- 0x03, 0x44, 0xe5, 0xff, 0x7f, 0xa4, 0x7f, 0xf2, 0x00, 0xce, 0x61, 0x7c, 0xf9, 0x9e, 0xfc, 0x72,
- 0x60, 0x8f, 0xdd, 0x03, 0x3e, 0x1f, 0xae, 0xa6, 0x64, 0x65, 0xaf, 0x27, 0x55, 0xc7, 0x74, 0x0f,
- 0xaa, 0xa7, 0xcc, 0x33, 0x41, 0x06, 0x3c, 0x79, 0xb1, 0xf8, 0x73, 0x05, 0xb4, 0xa7, 0xf7, 0x17,
- 0x2a, 0xaa, 0x92, 0x1d, 0xbe, 0x6c, 0x96, 0x1c, 0xa9, 0xf7, 0x5e, 0x80, 0xd5, 0xb1, 0x7b, 0x30,
- 0x76, 0x83, 0xa3, 0x98, 0x06, 0x64, 0x85, 0x03, 0x45, 0xc7, 0x88, 0xa0, 0x94, 0xcf, 0x24, 0x99,
- 0x0b, 0x22, 0x6d, 0x37, 0xbc, 0x2f, 0x66, 0x8e, 0x03, 0x9d, 0x4d, 0x72, 0x05, 0xd9, 0x8f, 0xbb,
- 0x85, 0x62, 0x4e, 0xcd, 0x9b, 0x3c, 0x74, 0xe6, 0x81, 0x37, 0x70, 0xb5, 0xbf, 0x56, 0x84, 0x44,
- 0x90, 0xd5, 0x79, 0xe4, 0xa1, 0x64, 0xcc, 0x9b, 0x4f, 0x89, 0x21, 0x59, 0x24, 0xb2, 0xdd, 0x23,
- 0x0f, 0xcf, 0x88, 0x80, 0x58, 0x78, 0x46, 0x84, 0xbc, 0x07, 0x8b, 0x44, 0x7e, 0x6b, 0x7e, 0x43,
- 0x58, 0x04, 0xd1, 0x3d, 0x6f, 0xff, 0x36, 0xb9, 0x05, 0x4b, 0xcc, 0x08, 0x48, 0x54, 0x77, 0x3d,
- 0x56, 0xdd, 0xfd, 0xdb, 0xa6, 0x28, 0xd7, 0xde, 0x0e, 0xdf, 0xb5, 0x52, 0x8d, 0xd8, 0xbf, 0x4d,
- 0x5e, 0x3b, 0x99, 0x71, 0x6e, 0x51, 0x18, 0xe7, 0x86, 0x86, 0xb9, 0xaf, 0xc7, 0x0c, 0x73, 0xaf,
- 0xcd, 0xef, 0x2d, 0xfe, 0x1a, 0xc9, 0xc2, 0x11, 0x46, 0x61, 0xaa, 0x7e, 0x92, 0x83, 0x4b, 0x73,
- 0x29, 0xc8, 0x45, 0x28, 0xea, 0xed, 0x5a, 0x27, 0x1a, 0x5f, 0xba, 0x66, 0x04, 0x84, 0xec, 0xc1,
- 0xf2, 0xb6, 0x13, 0x78, 0x3d, 0x3a, 0x8d, 0x33, 0x9f, 0x07, 0x52, 0x6c, 0x43, 0xf4, 0xea, 0x29,
- 0x33, 0xa2, 0x25, 0x36, 0x6c, 0xe0, 0x5a, 0x88, 0xa5, 0x9e, 0xca, 0x67, 0xe8, 0x1a, 0x52, 0x0c,
- 0x53, 0x64, 0x74, 0x9f, 0x49, 0x01, 0xc9, 0x23, 0x20, 0x96, 0x55, 0xad, 0xb8, 0xe3, 0x09, 0xbf,
- 0x83, 0x4f, 0xbc, 0xd0, 0xd2, 0xf3, 0xc3, 0x4f, 0xe9, 0xbb, 0x14, 0x5d, 0xf5, 0x94, 0x99, 0xc1,
- 0x2d, 0xb9, 0xcc, 0xdf, 0x12, 0xf2, 0xce, 0xec, 0x4e, 0x78, 0x86, 0x50, 0xaf, 0x37, 0xa1, 0xd8,
- 0x16, 0xb6, 0x08, 0x92, 0xc5, 0xbc, 0xb0, 0x3b, 0x30, 0xc3, 0x52, 0xed, 0xb7, 0x14, 0xa1, 0x74,
- 0x78, 0x7a, 0x67, 0x49, 0x99, 0xc1, 0xfa, 0xf3, 0x33, 0x83, 0xf5, 0x7f, 0xc6, 0xcc, 0x60, 0x9a,
- 0x07, 0xb7, 0x4e, 0xdc, 0xb1, 0xe4, 0xe3, 0xa0, 0x62, 0x12, 0x25, 0x47, 0x1a, 0x24, 0xb6, 0xbe,
- 0x36, 0xc2, 0xd8, 0xdf, 0x55, 0x9e, 0xa9, 0xce, 0x5c, 0xef, 0xc5, 0xa9, 0xb5, 0x3f, 0xe3, 0x31,
- 0xdf, 0x6b, 0xfd, 0x76, 0x42, 0xd1, 0xfc, 0x5e, 0x9d, 0x2c, 0x8c, 0xd8, 0x62, 0x7b, 0x41, 0x4a,
- 0x62, 0x99, 0xfe, 0xd6, 0x6c, 0x5f, 0x0b, 0x69, 0xe5, 0xfd, 0x51, 0x1e, 0x2e, 0xce, 0x23, 0xcf,
- 0x4c, 0x93, 0xad, 0x3c, 0x5b, 0x9a, 0xec, 0x5b, 0x50, 0x64, 0xb0, 0xd0, 0x83, 0x00, 0xc7, 0x96,
- 0x93, 0xd2, 0xb1, 0x15, 0xc5, 0xe4, 0x05, 0x58, 0xd4, 0x2b, 0x56, 0x94, 0xb9, 0x0d, 0x4d, 0x7d,
- 0x9d, 0x5e, 0x80, 0x46, 0xa4, 0xbc, 0x88, 0x7c, 0x21, 0x9d, 0xac, 0x90, 0xa7, 0x6c, 0xbb, 0x20,
- 0x75, 0x48, 0x2a, 0x1d, 0x03, 0xd6, 0x37, 0x4a, 0x1f, 0xc0, 0x23, 0x72, 0x9b, 0xe9, 0xc4, 0x87,
- 0x1a, 0x2c, 0xb6, 0xc7, 0x6e, 0xe0, 0x4e, 0x64, 0x33, 0xdc, 0x11, 0x42, 0x4c, 0x5e, 0xc2, 0x8d,
- 0x64, 0x9d, 0x27, 0x2c, 0x26, 0xc2, 0xa2, 0x1c, 0xa7, 0x06, 0xad, 0x6a, 0x29, 0xd8, 0x94, 0x50,
- 0x28, 0x41, 0xdd, 0x99, 0x0e, 0x7b, 0x47, 0x5d, 0xb3, 0xce, 0x25, 0x27, 0x46, 0x30, 0x40, 0x28,
- 0x6d, 0x60, 0x60, 0x4a, 0x28, 0xda, 0xb7, 0x14, 0x38, 0x93, 0xd5, 0x0e, 0x72, 0x11, 0x0a, 0xc3,
- 0xcc, 0xbc, 0x8c, 0x43, 0xe6, 0xca, 0x5d, 0xa2, 0x7f, 0xed, 0x03, 0x7f, 0x7c, 0xec, 0x4c, 0x64,
- 0x63, 0x65, 0x09, 0x6c, 0x02, 0xfd, 0xb1, 0x8b, 0xff, 0x93, 0x2b, 0xe2, 0xc8, 0xc9, 0xa7, 0x32,
- 0x39, 0xe2, 0x1f, 0x4d, 0x07, 0xa8, 0xf5, 0xdb, 0xad, 0x11, 0x4b, 0x07, 0xf0, 0x0a, 0x14, 0x68,
- 0xb5, 0x12, 0xb3, 0x97, 0xce, 0x1f, 0xbd, 0x51, 0xe7, 0x48, 0xac, 0x56, 0x81, 0x73, 0x3c, 0x30,
- 0x11, 0x59, 0xbb, 0x0f, 0x6b, 0x71, 0x0c, 0x62, 0xc4, 0x23, 0xc2, 0x96, 0xee, 0xa8, 0x9c, 0xd3,
- 0xb6, 0xef, 0x33, 0x87, 0x99, 0xed, 0xe7, 0x7e, 0xf2, 0xce, 0x15, 0xa0, 0x3f, 0x19, 0x4d, 0x56,
- 0xc4, 0x58, 0xed, 0xdb, 0x39, 0x38, 0x13, 0xf9, 0xe8, 0x8b, 0x35, 0xf4, 0x0b, 0xeb, 0x30, 0xaa,
- 0xc7, 0x1c, 0x1a, 0x85, 0xdc, 0x98, 0x6e, 0xe0, 0x1c, 0x3f, 0xaa, 0x3d, 0xd8, 0x9a, 0x85, 0x4f,
- 0x5e, 0x84, 0x65, 0x0c, 0xeb, 0x34, 0x72, 0x7a, 0xae, 0xbc, 0xcd, 0x0e, 0x05, 0xd0, 0x8c, 0xca,
- 0xb5, 0x1f, 0x29, 0x70, 0x9e, 0xbb, 0x79, 0x34, 0x1c, 0x6f, 0x88, 0xaf, 0x04, 0x3d, 0xf7, 0xfd,
- 0x71, 0x78, 0xde, 0x8b, 0xed, 0x63, 0xd7, 0xe3, 0xde, 0x3c, 0xa9, 0xaf, 0xcd, 0x6e, 0x2d, 0xb9,
- 0x85, 0xa1, 0xca, 0xf8, 0x2b, 0x7a, 0x81, 0x05, 0x98, 0x18, 0x52, 0x80, 0x1c, 0x60, 0x02, 0x31,
- 0xb4, 0x5f, 0x83, 0xcb, 0xf3, 0x3f, 0x40, 0x3e, 0x0f, 0xab, 0x98, 0x7b, 0xab, 0x3b, 0x3a, 0x1c,
- 0x3b, 0x7d, 0x57, 0x68, 0xf6, 0x84, 0x36, 0x56, 0x2e, 0x63, 0x91, 0xd7, 0x78, 0xc0, 0x83, 0x43,
- 0xcc, 0xea, 0xc5, 0x89, 0x62, 0xbe, 0x54, 0x32, 0x37, 0xed, 0xeb, 0x0a, 0x90, 0x34, 0x0f, 0xf2,
- 0x11, 0x58, 0xe9, 0x76, 0x2a, 0xd6, 0xc4, 0x19, 0x4f, 0xaa, 0xfe, 0x74, 0xcc, 0xc3, 0x9e, 0x31,
- 0xff, 0xf7, 0x49, 0xcf, 0x66, 0xef, 0x41, 0x47, 0xfe, 0x74, 0x6c, 0xc6, 0xf0, 0x30, 0xc7, 0x93,
- 0xeb, 0x7e, 0xb9, 0xef, 0x3c, 0x89, 0xe7, 0x78, 0xe2, 0xb0, 0x58, 0x8e, 0x27, 0x0e, 0xd3, 0xbe,
- 0xa7, 0xc0, 0x05, 0x61, 0x1c, 0xd9, 0xcf, 0xa8, 0x4b, 0x05, 0xa3, 0xbc, 0x8c, 0x45, 0x9c, 0xdd,
- 0x79, 0x12, 0xfa, 0x86, 0x08, 0x84, 0x84, 0x15, 0x44, 0x51, 0x9d, 0xd1, 0x92, 0x4f, 0x41, 0xc1,
- 0x9a, 0xf8, 0xa3, 0x13, 0x44, 0x42, 0x52, 0xc3, 0x11, 0x9d, 0xf8, 0x23, 0x64, 0x81, 0x94, 0x9a,
- 0x0b, 0x67, 0xe4, 0xca, 0x89, 0x1a, 0x93, 0x06, 0x2c, 0xf1, 0x90, 0x77, 0x09, 0xbb, 0x83, 0x39,
- 0x6d, 0xda, 0x5e, 0x17, 0xe1, 0x96, 0x78, 0x9c, 0x57, 0x53, 0xf0, 0xd0, 0x7e, 0x47, 0x81, 0x12,
- 0x15, 0x6c, 0xf0, 0x52, 0xfa, 0x5e, 0xa7, 0x74, 0x5c, 0x0e, 0x16, 0x66, 0x34, 0x21, 0xfb, 0x13,
- 0x9d, 0xc6, 0xaf, 0xc2, 0x7a, 0x82, 0x80, 0x68, 0x18, 0x68, 0x63, 0xe0, 0xf5, 0x1c, 0x96, 0x32,
- 0x86, 0x99, 0xa0, 0xc4, 0x60, 0xda, 0x6f, 0x28, 0x70, 0xa6, 0xf5, 0xe5, 0x89, 0xc3, 0x9e, 0x6d,
- 0xcd, 0xe9, 0x40, 0xac, 0x77, 0x2a, 0xac, 0x09, 0x2b, 0x5b, 0x16, 0x04, 0x80, 0x09, 0x6b, 0x1c,
- 0x66, 0x86, 0xa5, 0xa4, 0x0a, 0x45, 0x7e, 0xbe, 0x04, 0x3c, 0x3c, 0xeb, 0x65, 0x49, 0x37, 0x12,
- 0x31, 0xe6, 0x48, 0xb4, 0x25, 0xb8, 0x85, 0x71, 0x1a, 0x33, 0xa4, 0xd6, 0xfe, 0x53, 0x81, 0xcd,
- 0x19, 0x34, 0xe4, 0x4d, 0x58, 0x40, 0x07, 0x45, 0x3e, 0x7a, 0x17, 0x67, 0x7c, 0x62, 0xd2, 0x3b,
- 0xda, 0xbf, 0xcd, 0x0e, 0xa2, 0x63, 0xfa, 0xc3, 0x64, 0x54, 0xe4, 0x21, 0x2c, 0xeb, 0xfd, 0x3e,
- 0xbf, 0x9d, 0xe5, 0x62, 0xb7, 0xb3, 0x19, 0x5f, 0x7c, 0x39, 0xc4, 0x67, 0xb7, 0x33, 0xe6, 0x2a,
- 0xd3, 0xef, 0xdb, 0xdc, 0xf9, 0x32, 0xe2, 0x77, 0xfe, 0xe3, 0xb0, 0x16, 0x47, 0x7e, 0x26, 0x7f,
- 0xb1, 0xb7, 0x15, 0x50, 0xe3, 0x75, 0xf8, 0xf9, 0x04, 0x8a, 0xca, 0x1a, 0xe6, 0xa7, 0x4c, 0xaa,
- 0xdf, 0xcb, 0xc1, 0xd9, 0xcc, 0x1e, 0x26, 0x2f, 0xc1, 0xa2, 0x3e, 0x1a, 0xd5, 0x76, 0xf8, 0xac,
- 0xe2, 0x12, 0x12, 0x2a, 0xbd, 0x63, 0x97, 0x57, 0x86, 0x44, 0x5e, 0x81, 0x22, 0xb3, 0x0e, 0xd8,
- 0x11, 0x1b, 0x0e, 0x46, 0xbe, 0xe1, 0xa6, 0x0b, 0xf1, 0x40, 0xa9, 0x02, 0x91, 0xec, 0xc2, 0x1a,
- 0x8f, 0x19, 0x63, 0xba, 0x87, 0xee, 0x57, 0xc3, 0x88, 0xfd, 0x98, 0x54, 0x40, 0x68, 0xd2, 0xed,
- 0x31, 0x2b, 0x93, 0xa3, 0xa6, 0xc4, 0xa9, 0x48, 0x1d, 0x54, 0xe4, 0x29, 0x73, 0x62, 0xd1, 0x5a,
- 0x31, 0x8a, 0x0f, 0xab, 0xc4, 0x0c, 0x5e, 0x29, 0xca, 0x70, 0xb8, 0xf4, 0x20, 0xf0, 0x0e, 0x87,
- 0xc7, 0xee, 0x70, 0xf2, 0xf3, 0x1b, 0xae, 0xe8, 0x1b, 0x27, 0x1a, 0xae, 0x3f, 0x28, 0xb0, 0xc5,
- 0x9c, 0x24, 0xa3, 0x12, 0x8d, 0x14, 0xa0, 0x1b, 0x25, 0x1a, 0x7a, 0x3f, 0xe3, 0x51, 0x51, 0x76,
- 0x60, 0x89, 0x45, 0xab, 0x11, 0x2b, 0xe3, 0x52, 0x66, 0x15, 0x18, 0xce, 0xfe, 0x6d, 0x26, 0xbe,
- 0x30, 0x4f, 0xc9, 0xc0, 0x14, 0xa4, 0x64, 0x1f, 0x4a, 0x95, 0x81, 0xeb, 0x0c, 0xa7, 0xa3, 0xce,
- 0xc9, 0x5e, 0x50, 0xb7, 0x78, 0x5b, 0x56, 0x7a, 0x8c, 0x0c, 0x5f, 0x5e, 0x71, 0x27, 0x97, 0x19,
- 0x91, 0x4e, 0xe8, 0x3c, 0x55, 0x40, 0xc5, 0xeb, 0x87, 0xe7, 0xf4, 0x4f, 0x12, 0x88, 0x74, 0x71,
- 0xcf, 0x40, 0xee, 0x5d, 0x65, 0xc3, 0x5a, 0xdd, 0x09, 0x26, 0x9d, 0xb1, 0x33, 0x0c, 0x30, 0xca,
- 0xe5, 0x09, 0xa2, 0x80, 0x5d, 0x10, 0x19, 0x9c, 0x51, 0x65, 0x3a, 0x09, 0x49, 0x99, 0x42, 0x36,
- 0xce, 0x8e, 0xca, 0x4b, 0xbb, 0xde, 0xd0, 0x19, 0x78, 0x5f, 0x13, 0x3e, 0xa6, 0x4c, 0x5e, 0x3a,
- 0x10, 0x40, 0x33, 0x2a, 0xd7, 0x3e, 0x97, 0x1a, 0x37, 0x56, 0xcb, 0x12, 0x2c, 0xf1, 0x08, 0x04,
- 0xcc, 0x23, 0xbf, 0x6d, 0x34, 0x77, 0x6a, 0xcd, 0x3d, 0x55, 0x21, 0x6b, 0x00, 0x6d, 0xb3, 0x55,
- 0x31, 0x2c, 0x8b, 0xfe, 0xce, 0xd1, 0xdf, 0xdc, 0x5d, 0x7f, 0xb7, 0x5b, 0x57, 0xf3, 0x92, 0xc7,
- 0x7e, 0x41, 0xfb, 0xa1, 0x02, 0xe7, 0xb2, 0x87, 0x92, 0x74, 0x00, 0x63, 0x36, 0xf0, 0xb7, 0xf4,
- 0x8f, 0xcc, 0x1d, 0xf7, 0x4c, 0x70, 0x32, 0xf6, 0xc3, 0x84, 0xc5, 0x14, 0xc8, 0x89, 0xb7, 0x2f,
- 0xe6, 0xa4, 0xe8, 0xf5, 0xcd, 0x9c, 0xd7, 0xd7, 0x2a, 0xb0, 0x35, 0x8b, 0x47, 0xbc, 0xa9, 0xeb,
- 0x50, 0xd2, 0xdb, 0xed, 0x7a, 0xad, 0xa2, 0x77, 0x6a, 0xad, 0xa6, 0xaa, 0x90, 0x65, 0x58, 0xd8,
- 0x33, 0x5b, 0xdd, 0xb6, 0x9a, 0xd3, 0xbe, 0xa3, 0xc0, 0x6a, 0x2d, 0xb2, 0x3a, 0x7b, 0xaf, 0x8b,
- 0xef, 0xa3, 0xb1, 0xc5, 0xb7, 0x15, 0x46, 0x37, 0x09, 0x3f, 0x70, 0xa2, 0x95, 0xf7, 0x6e, 0x0e,
- 0x36, 0x52, 0x34, 0xc4, 0x82, 0x25, 0xfd, 0xbe, 0xd5, 0xaa, 0xed, 0x54, 0x78, 0xcd, 0xae, 0x44,
- 0xe6, 0x52, 0x98, 0xef, 0x2a, 0xf5, 0x15, 0xe6, 0x11, 0xfc, 0x38, 0xb0, 0x7d, 0xaf, 0x2f, 0x25,
- 0xbf, 0xad, 0x9e, 0x32, 0x05, 0x27, 0x3c, 0xc9, 0xbe, 0x36, 0x1d, 0xbb, 0xc8, 0x36, 0x17, 0xd3,
- 0xeb, 0x86, 0xf0, 0x34, 0x63, 0xf4, 0xdf, 0x70, 0x68, 0x79, 0x9a, 0x75, 0xc4, 0x8f, 0x34, 0x61,
- 0x71, 0xcf, 0x9b, 0x54, 0xa7, 0x8f, 0xf8, 0xfa, 0xbd, 0x1c, 0x65, 0x3f, 0xaa, 0x4e, 0x1f, 0xa5,
- 0xd9, 0xa2, 0xca, 0x92, 0x45, 0xef, 0x89, 0xb1, 0xe4, 0x5c, 0x92, 0x4e, 0x8c, 0x85, 0x67, 0x72,
- 0x62, 0xdc, 0x5e, 0x85, 0x12, 0xbf, 0x43, 0xe1, 0xf5, 0xe4, 0xfb, 0x0a, 0x6c, 0xcd, 0xea, 0x39,
- 0x7a, 0x2d, 0x8b, 0x07, 0x2b, 0x38, 0x17, 0xa6, 0xc7, 0x88, 0x47, 0x29, 0x10, 0x68, 0xe4, 0x93,
- 0x50, 0xaa, 0x05, 0xc1, 0xd4, 0x1d, 0x5b, 0xaf, 0x74, 0xcd, 0x1a, 0x9f, 0xae, 0x97, 0xfe, 0xed,
- 0x9d, 0x2b, 0x9b, 0xe8, 0xf3, 0x31, 0xb6, 0x83, 0x57, 0xec, 0xe9, 0xd8, 0x8b, 0xa5, 0x12, 0x90,
- 0x29, 0xa8, 0x14, 0xed, 0x4c, 0xfb, 0x9e, 0x2b, 0xee, 0x10, 0xc2, 0xa1, 0x9b, 0xc3, 0xe4, 0x33,
- 0x4d, 0xc0, 0xb4, 0x6f, 0x2a, 0x70, 0x7e, 0xf6, 0x30, 0xd1, 0x73, 0xb2, 0xc3, 0x4c, 0xaa, 0x84,
- 0x4b, 0x35, 0x9e, 0x93, 0xa1, 0xdd, 0x95, 0xcc, 0x53, 0x20, 0x52, 0xa2, 0x30, 0x35, 0x7e, 0x2e,
- 0x95, 0x0f, 0x3b, 0x4e, 0x24, 0x10, 0xb5, 0x07, 0xb0, 0x39, 0x63, 0x50, 0xc9, 0x27, 0x32, 0x93,
- 0xee, 0xa0, 0x9b, 0x92, 0x9c, 0x74, 0x27, 0x96, 0xbd, 0x4d, 0x82, 0x6b, 0xff, 0x9e, 0x83, 0x73,
- 0x74, 0x75, 0x0d, 0xdc, 0x20, 0xd0, 0xa3, 0xfc, 0xb4, 0x74, 0x57, 0x7c, 0x0d, 0x16, 0x8f, 0x9e,
- 0x4d, 0x55, 0xcc, 0xd0, 0x09, 0x01, 0x3c, 0xb1, 0x84, 0x73, 0x0c, 0xfd, 0x9f, 0x5c, 0x05, 0x39,
- 0xb9, 0x79, 0x1e, 0xc3, 0x9b, 0xe6, 0xb6, 0x14, 0x73, 0x79, 0x14, 0xe6, 0x21, 0x7e, 0x1d, 0x16,
- 0x50, 0x9f, 0xc2, 0xcf, 0x0e, 0x21, 0xf3, 0x67, 0xd7, 0x0e, 0xb5, 0x2d, 0x26, 0x23, 0x20, 0x1f,
- 0x02, 0x88, 0x32, 0x43, 0xf0, 0xc3, 0x41, 0xe8, 0x19, 0xc2, 0xe4, 0x10, 0xe6, 0xf2, 0xf1, 0x81,
- 0xc3, 0xd3, 0x2d, 0x94, 0x61, 0x43, 0xf4, 0xf8, 0x48, 0x44, 0x45, 0xe4, 0xaf, 0x98, 0xeb, 0xac,
- 0xa0, 0x36, 0x12, 0x91, 0x11, 0xaf, 0xa5, 0x12, 0x34, 0x63, 0x70, 0xe4, 0x44, 0x16, 0xe6, 0x6b,
- 0xa9, 0x2c, 0xcc, 0x45, 0x86, 0x25, 0xa7, 0x5a, 0xd6, 0xfe, 0x39, 0x07, 0xcb, 0xf7, 0xa9, 0x54,
- 0x86, 0xba, 0x86, 0xf9, 0xba, 0x8b, 0x3b, 0x50, 0xaa, 0xfb, 0x0e, 0x7f, 0x2e, 0xe2, 0x3e, 0x25,
- 0xcc, 0xa7, 0x7b, 0xe0, 0x3b, 0xe2, 0xe5, 0x29, 0x30, 0x65, 0xa4, 0xa7, 0xf8, 0xa3, 0xdf, 0x85,
- 0x45, 0xf6, 0x7c, 0xc7, 0xd5, 0x68, 0x42, 0x2e, 0x0f, 0x6b, 0xf4, 0x32, 0x2b, 0x96, 0x5e, 0x38,
- 0xd8, 0x13, 0xa0, 0x2c, 0x24, 0xf2, 0x18, 0xaf, 0x92, 0x66, 0x65, 0xe1, 0x64, 0x9a, 0x15, 0x29,
- 0x96, 0xdd, 0xe2, 0x49, 0x62, 0xd9, 0x9d, 0x7f, 0x03, 0x4a, 0x52, 0x7d, 0x9e, 0x49, 0x4c, 0xff,
- 0x46, 0x0e, 0x56, 0xb1, 0x55, 0xa1, 0x2d, 0xcf, 0x2f, 0xa6, 0x9e, 0xe8, 0xa3, 0x31, 0x3d, 0xd1,
- 0x96, 0x3c, 0x5e, 0xac, 0x65, 0x73, 0x14, 0x44, 0x77, 0x61, 0x23, 0x85, 0x48, 0x5e, 0x85, 0x05,
- 0x5a, 0x7d, 0x71, 0xaf, 0x56, 0x93, 0x33, 0x20, 0x8a, 0x7b, 0x4c, 0x1b, 0x1e, 0x98, 0x0c, 0x5b,
- 0xfb, 0x2f, 0x05, 0x56, 0x78, 0xda, 0x91, 0xe1, 0x81, 0xff, 0xd4, 0xee, 0xbc, 0x91, 0xec, 0x4e,
- 0x16, 0x5d, 0x85, 0x77, 0xe7, 0xff, 0x76, 0x27, 0xbe, 0x11, 0xeb, 0xc4, 0xcd, 0x30, 0x0a, 0xa2,
- 0x68, 0xce, 0x9c, 0x3e, 0xfc, 0x1b, 0x8c, 0x0b, 0x1c, 0x47, 0x24, 0x5f, 0x80, 0xe5, 0xa6, 0xfb,
- 0x38, 0x76, 0x3d, 0xbd, 0x31, 0x83, 0xe9, 0xcb, 0x21, 0x22, 0x5b, 0x53, 0x78, 0xb2, 0x0f, 0xdd,
- 0xc7, 0x76, 0xea, 0xe5, 0x30, 0x62, 0x49, 0x6f, 0xa8, 0x71, 0xb2, 0x67, 0x99, 0xfa, 0xdc, 0xc1,
- 0x15, 0x03, 0x06, 0x7d, 0x2b, 0x0f, 0x10, 0xf9, 0x06, 0xd2, 0x05, 0x18, 0x33, 0x9a, 0x10, 0x9a,
- 0x7d, 0x04, 0xc9, 0x73, 0x5c, 0xd8, 0x52, 0xdc, 0xe0, 0x1a, 0xe8, 0xdc, 0xec, 0x28, 0x95, 0xa8,
- 0x8b, 0xae, 0x70, 0x67, 0xb4, 0xbe, 0x3b, 0x70, 0xd8, 0xde, 0x9e, 0xdf, 0xbe, 0x86, 0x41, 0x89,
- 0x43, 0xe8, 0x8c, 0x74, 0xd3, 0xe8, 0xb2, 0xb6, 0x43, 0x11, 0x52, 0xfe, 0xb6, 0x85, 0x67, 0xf3,
- 0xb7, 0x6d, 0xc3, 0xb2, 0x37, 0x7c, 0xcb, 0x1d, 0x4e, 0xfc, 0xf1, 0x13, 0x54, 0xbb, 0x47, 0xfa,
- 0x3c, 0xda, 0x05, 0x35, 0x51, 0xc6, 0xc6, 0x01, 0xcf, 0xdc, 0x10, 0x5f, 0x1e, 0x86, 0x10, 0x18,
- 0xfa, 0x0b, 0x2f, 0xa8, 0x8b, 0x77, 0x0b, 0xc5, 0x45, 0x75, 0xe9, 0x6e, 0xa1, 0x58, 0x54, 0x97,
- 0xef, 0x16, 0x8a, 0xcb, 0x2a, 0x98, 0xd2, 0x9b, 0x59, 0xf8, 0x26, 0x26, 0x3d, 0x63, 0xc5, 0x9f,
- 0xa8, 0xb4, 0x9f, 0xe6, 0x80, 0xa4, 0xab, 0x41, 0x3e, 0x0a, 0x25, 0xb6, 0xc1, 0xda, 0xe3, 0xe0,
- 0x2b, 0xdc, 0xdd, 0x80, 0x85, 0x5d, 0x92, 0xc0, 0x72, 0xd8, 0x25, 0x06, 0x36, 0x83, 0xaf, 0x0c,
- 0xc8, 0xe7, 0xe1, 0x34, 0x76, 0xef, 0xc8, 0x1d, 0x7b, 0x7e, 0xdf, 0xc6, 0x18, 0xb9, 0xce, 0x80,
- 0xa7, 0x86, 0x7c, 0x09, 0x73, 0x18, 0xa7, 0x8b, 0x67, 0x0c, 0x03, 0xba, 0x00, 0xb6, 0x11, 0xb3,
- 0xcd, 0x10, 0x49, 0x07, 0x54, 0x99, 0xfe, 0x60, 0x3a, 0x18, 0xf0, 0x91, 0x2d, 0xd3, 0x1b, 0x7d,
- 0xb2, 0x6c, 0x06, 0xe3, 0xb5, 0x88, 0xf1, 0xee, 0x74, 0x30, 0x20, 0xaf, 0x01, 0xf8, 0x43, 0xfb,
- 0xd8, 0x0b, 0x02, 0xf6, 0x98, 0x13, 0x7a, 0x2b, 0x47, 0x50, 0x79, 0x30, 0xfc, 0x61, 0x83, 0x01,
- 0xc9, 0xaf, 0x00, 0x46, 0x6b, 0xc0, 0x30, 0x26, 0xcc, 0x1a, 0x89, 0x67, 0x6f, 0x11, 0xc0, 0xb8,
- 0x73, 0xf4, 0xa1, 0x6b, 0x79, 0x5f, 0x13, 0xae, 0x1e, 0x9f, 0x85, 0x0d, 0x6e, 0x3c, 0x7c, 0xdf,
- 0x9b, 0x1c, 0xf1, 0xab, 0xc4, 0x7b, 0xb9, 0x87, 0x48, 0x77, 0x89, 0xbf, 0x2f, 0x00, 0xe8, 0xf7,
- 0x2d, 0x11, 0x21, 0xec, 0x16, 0x2c, 0xd0, 0x0b, 0x92, 0x50, 0xb4, 0xa0, 0x9a, 0x1a, 0xf9, 0xca,
- 0x6a, 0x6a, 0xc4, 0xa0, 0xab, 0xd1, 0x44, 0xa3, 0x7a, 0xa1, 0x64, 0xc1, 0xd5, 0xc8, 0xec, 0xec,
- 0x63, 0x11, 0x9a, 0x39, 0x16, 0xa9, 0x03, 0x44, 0x31, 0xbb, 0xb8, 0xc8, 0xbf, 0x11, 0x05, 0xbf,
- 0xe1, 0x05, 0x3c, 0x4b, 0x44, 0x14, 0xf7, 0x4b, 0x9e, 0x3e, 0x11, 0x1a, 0xb9, 0x07, 0x85, 0x8e,
- 0x13, 0xfa, 0xe2, 0xce, 0x88, 0x64, 0xf6, 0x3c, 0x4f, 0xdd, 0x19, 0x45, 0x33, 0x5b, 0x9b, 0x38,
- 0xb1, 0x0c, 0xc7, 0xc8, 0x84, 0x18, 0xb0, 0xc8, 0xd3, 0xb2, 0xcf, 0x88, 0x80, 0xc9, 0xb3, 0xb2,
- 0xf3, 0xb8, 0xd7, 0x08, 0x94, 0x65, 0x0a, 0x9e, 0x80, 0xfd, 0x0e, 0xe4, 0x2d, 0xab, 0xc1, 0xe3,
- 0x77, 0xac, 0x46, 0xd7, 0x2f, 0xcb, 0x6a, 0xb0, 0x77, 0xdf, 0x20, 0x38, 0x96, 0xc8, 0x28, 0x32,
- 0xf9, 0x18, 0x94, 0x24, 0xa1, 0x98, 0x47, 0xbe, 0xc1, 0x3e, 0x90, 0xbc, 0x9d, 0xe4, 0x4d, 0x43,
- 0xc2, 0x26, 0x75, 0x50, 0xef, 0x4d, 0x1f, 0xb9, 0xfa, 0x68, 0x84, 0x6e, 0x90, 0x6f, 0xb9, 0x63,
- 0x26, 0xb6, 0x15, 0xa3, 0x90, 0xd1, 0xe8, 0x23, 0xd1, 0x17, 0xa5, 0xb2, 0xb2, 0x29, 0x49, 0x49,
- 0xda, 0xb0, 0x61, 0xb9, 0x93, 0xe9, 0x88, 0xd9, 0xd7, 0xec, 0xfa, 0x63, 0x7a, 0xbf, 0x61, 0x71,
- 0x72, 0x30, 0xba, 0x6e, 0x40, 0x0b, 0x85, 0x51, 0xd3, 0x81, 0x3f, 0x4e, 0xdc, 0x75, 0xd2, 0xc4,
- 0x9a, 0x2b, 0x0f, 0x39, 0x3d, 0x55, 0xe3, 0xb7, 0x26, 0x3c, 0x55, 0xc5, 0xad, 0x29, 0xba, 0x2b,
- 0x7d, 0x28, 0x23, 0x96, 0x1b, 0xbe, 0x0c, 0x4a, 0xb1, 0xdc, 0x62, 0x11, 0xdc, 0xbe, 0x57, 0x90,
- 0xc2, 0x89, 0xf2, 0xb1, 0x78, 0x13, 0xe0, 0xae, 0xef, 0x0d, 0x1b, 0xee, 0xe4, 0xc8, 0xef, 0x4b,
- 0x21, 0xe5, 0x4a, 0x5f, 0xf2, 0xbd, 0xa1, 0x7d, 0x8c, 0xe0, 0x9f, 0xbe, 0x73, 0x45, 0x42, 0x32,
- 0xa5, 0xff, 0xc9, 0x07, 0x61, 0x99, 0xfe, 0xea, 0x44, 0x56, 0x42, 0x4c, 0x27, 0x8b, 0xd4, 0x2c,
- 0xe9, 0x46, 0x84, 0x40, 0xde, 0xc0, 0x34, 0x33, 0xde, 0x68, 0x22, 0x09, 0xaf, 0x22, 0xa7, 0x8c,
- 0x37, 0x9a, 0x24, 0x23, 0x44, 0x4b, 0xc8, 0xa4, 0x1a, 0x56, 0x5d, 0x64, 0x86, 0xe2, 0xd9, 0x6c,
- 0x50, 0xf1, 0xc8, 0xe7, 0x9a, 0x2d, 0x42, 0xd3, 0xca, 0x29, 0x7f, 0x13, 0x64, 0x58, 0x09, 0xab,
- 0xba, 0xc3, 0x5e, 0x8a, 0xb8, 0x50, 0xcb, 0x2a, 0x11, 0x1c, 0xf5, 0xed, 0x1e, 0x82, 0x63, 0x95,
- 0x08, 0x91, 0xc9, 0x36, 0xac, 0x33, 0x19, 0x3f, 0xcc, 0x30, 0xc9, 0x45, 0x5c, 0xdc, 0xdb, 0xa2,
- 0x14, 0x94, 0xf2, 0xe7, 0x13, 0x04, 0x64, 0x17, 0x16, 0xf0, 0xae, 0xc9, 0x5d, 0x03, 0x2e, 0xc8,
- 0x6a, 0x82, 0xe4, 0x3a, 0xc2, 0x7d, 0x05, 0x15, 0x04, 0xf2, 0xbe, 0x82, 0xa8, 0xe4, 0x33, 0x00,
- 0xc6, 0x70, 0xec, 0x0f, 0x06, 0x18, 0x3c, 0xb9, 0x88, 0x57, 0xa9, 0x4b, 0xf1, 0xf5, 0x88, 0x5c,
- 0x22, 0x24, 0x1e, 0xe8, 0x0f, 0x7f, 0xdb, 0x89, 0x10, 0xcb, 0x12, 0x2f, 0xad, 0x06, 0x8b, 0x6c,
- 0x31, 0x62, 0x20, 0x72, 0x9e, 0x5a, 0x45, 0x0a, 0x63, 0xcd, 0x02, 0x91, 0x73, 0x78, 0x3a, 0x10,
- 0xb9, 0x44, 0xa0, 0xdd, 0x83, 0x33, 0x59, 0x0d, 0x8b, 0xdd, 0x8e, 0x95, 0x93, 0xde, 0x8e, 0xbf,
- 0x9b, 0x87, 0x15, 0xe4, 0x26, 0x76, 0x61, 0x1d, 0x56, 0xad, 0xe9, 0xa3, 0x30, 0x4a, 0x97, 0xd8,
- 0x8d, 0xb1, 0x7e, 0x81, 0x5c, 0x20, 0xbf, 0xe1, 0xc5, 0x28, 0x88, 0x01, 0x6b, 0xe2, 0x24, 0xd8,
- 0x13, 0x9e, 0x03, 0x61, 0x0c, 0x70, 0x11, 0x69, 0x32, 0x9d, 0x61, 0x37, 0x41, 0x14, 0x9d, 0x07,
- 0xf9, 0x67, 0x39, 0x0f, 0x0a, 0x27, 0x3a, 0x0f, 0x1e, 0xc2, 0x8a, 0xf8, 0x1a, 0xee, 0xe4, 0x0b,
- 0xef, 0x6d, 0x27, 0x8f, 0x31, 0x23, 0xf5, 0x70, 0x47, 0x5f, 0x9c, 0xbb, 0xa3, 0xe3, 0xc3, 0xa8,
- 0x58, 0x65, 0x23, 0x84, 0xa5, 0x37, 0x76, 0x4c, 0x41, 0xb9, 0x57, 0x69, 0xff, 0x0c, 0xa7, 0xe4,
- 0xab, 0xb0, 0x5c, 0xf7, 0xc5, 0x9b, 0x98, 0xf4, 0x18, 0x31, 0x10, 0x40, 0x59, 0x5c, 0x08, 0x31,
- 0xc3, 0xd3, 0x2d, 0xff, 0x7e, 0x9c, 0x6e, 0x6f, 0x00, 0x70, 0x97, 0x94, 0x28, 0x75, 0x1c, 0x2e,
- 0x19, 0x11, 0xa1, 0x24, 0xfe, 0x26, 0x22, 0x21, 0xd3, 0xdd, 0x89, 0x9b, 0xdb, 0xe8, 0xbd, 0x9e,
- 0x3f, 0x1d, 0x4e, 0x62, 0xb9, 0x96, 0x85, 0x07, 0xab, 0xc3, 0xcb, 0xe4, 0xed, 0x21, 0x41, 0xf6,
- 0xfe, 0x0e, 0x08, 0xf9, 0x74, 0x68, 0xfc, 0xb8, 0x34, 0xaf, 0x87, 0xb4, 0x54, 0x0f, 0xcd, 0x34,
- 0x79, 0xd4, 0x7e, 0xa8, 0xc8, 0x09, 0x18, 0x7e, 0x86, 0xa1, 0x7e, 0x1d, 0x20, 0x34, 0x4a, 0x10,
- 0x63, 0xcd, 0xee, 0x4b, 0x21, 0x54, 0xee, 0xe5, 0x08, 0x57, 0x6a, 0x4d, 0xfe, 0xfd, 0x6a, 0x4d,
- 0x07, 0x4a, 0xad, 0x2f, 0x4f, 0x9c, 0xc8, 0x8a, 0x05, 0xac, 0x50, 0x92, 0xc5, 0x9d, 0x29, 0xbf,
- 0x7d, 0x1d, 0xcf, 0x86, 0x48, 0x0e, 0x9e, 0x21, 0x02, 0x4b, 0x84, 0xda, 0x5f, 0x28, 0xb0, 0x2e,
- 0xbb, 0xdd, 0x3f, 0x19, 0xf6, 0xc8, 0x27, 0x58, 0x3c, 0x58, 0x25, 0x76, 0x65, 0x91, 0x90, 0xe8,
- 0x96, 0xfb, 0x64, 0xd8, 0x63, 0x02, 0x90, 0xf3, 0x58, 0xae, 0x2c, 0x25, 0x24, 0x8f, 0x60, 0xa5,
- 0xed, 0x0f, 0x06, 0x54, 0xac, 0x19, 0xbf, 0xc5, 0x2f, 0x00, 0x94, 0x51, 0xf2, 0x69, 0x44, 0x54,
- 0x68, 0xfb, 0x05, 0x7e, 0xcf, 0xdd, 0x1c, 0xd1, 0xfd, 0xde, 0xe3, 0x74, 0x11, 0xdb, 0xb7, 0xd1,
- 0x4f, 0x4e, 0xe6, 0xa9, 0xfd, 0x58, 0x01, 0x92, 0xae, 0x92, 0xbc, 0x65, 0x29, 0xff, 0x07, 0x22,
- 0x6c, 0x42, 0xf4, 0x2b, 0x3c, 0x8b, 0xe8, 0x57, 0xfe, 0x5d, 0x05, 0xd6, 0x6b, 0x7a, 0x83, 0xa7,
- 0x64, 0x60, 0x2f, 0x38, 0x57, 0xe1, 0x52, 0x4d, 0x6f, 0xd8, 0xed, 0x56, 0xbd, 0x56, 0x79, 0x60,
- 0x67, 0x46, 0x5a, 0xbe, 0x04, 0xcf, 0xa5, 0x51, 0xa2, 0x97, 0x9e, 0x8b, 0xb0, 0x95, 0x2e, 0x16,
- 0xd1, 0x98, 0xb3, 0x89, 0x45, 0xe0, 0xe6, 0x7c, 0xf9, 0x93, 0xb0, 0x2e, 0x22, 0x0f, 0x77, 0xea,
- 0x16, 0xe6, 0x36, 0x58, 0x87, 0xd2, 0xbe, 0x61, 0xd6, 0x76, 0x1f, 0xd8, 0xbb, 0xdd, 0x7a, 0x5d,
- 0x3d, 0x45, 0x56, 0x61, 0x99, 0x03, 0x2a, 0xba, 0xaa, 0x90, 0x15, 0x28, 0xd6, 0x9a, 0x96, 0x51,
- 0xe9, 0x9a, 0x86, 0x9a, 0x2b, 0x7f, 0x12, 0xd6, 0xda, 0x63, 0xef, 0x2d, 0x67, 0xe2, 0xde, 0x73,
- 0x9f, 0xe0, 0x43, 0xcd, 0x12, 0xe4, 0x4d, 0xfd, 0xbe, 0x7a, 0x8a, 0x00, 0x2c, 0xb6, 0xef, 0x55,
- 0xac, 0xdb, 0xb7, 0x55, 0x85, 0x94, 0x60, 0x69, 0xaf, 0xd2, 0xb6, 0xef, 0x35, 0x2c, 0x35, 0x47,
- 0x7f, 0xe8, 0xf7, 0x2d, 0xfc, 0x91, 0x2f, 0x7f, 0x18, 0x36, 0x50, 0x20, 0xa9, 0x7b, 0xc1, 0xc4,
- 0x1d, 0xba, 0x63, 0xac, 0xc3, 0x0a, 0x14, 0x2d, 0x97, 0xee, 0x24, 0x13, 0x97, 0x55, 0xa0, 0x31,
- 0x1d, 0x4c, 0xbc, 0xd1, 0xc0, 0xfd, 0xaa, 0xaa, 0x94, 0xdf, 0x80, 0x75, 0xd3, 0x9f, 0x4e, 0xbc,
- 0xe1, 0xa1, 0x35, 0xa1, 0x18, 0x87, 0x4f, 0xc8, 0x59, 0xd8, 0xe8, 0x36, 0xf5, 0xc6, 0x76, 0x6d,
- 0xaf, 0xdb, 0xea, 0x5a, 0x76, 0x43, 0xef, 0x54, 0xaa, 0xec, 0x99, 0xa8, 0xd1, 0xb2, 0x3a, 0xb6,
- 0x69, 0x54, 0x8c, 0x66, 0x47, 0x55, 0xca, 0xdf, 0x46, 0xdd, 0x4a, 0xcf, 0x1f, 0xf6, 0x77, 0x9d,
- 0xde, 0xc4, 0x1f, 0x63, 0x85, 0x35, 0xb8, 0x6c, 0x19, 0x95, 0x56, 0x73, 0xc7, 0xde, 0xd5, 0x2b,
- 0x9d, 0x96, 0x99, 0x15, 0xea, 0xfb, 0x3c, 0x9c, 0xcb, 0xc0, 0x69, 0x75, 0xda, 0xaa, 0x42, 0xae,
- 0xc0, 0x85, 0x8c, 0xb2, 0xfb, 0xc6, 0xb6, 0xde, 0xed, 0x54, 0x9b, 0x6a, 0x6e, 0x06, 0xb1, 0x65,
- 0xb5, 0xd4, 0x7c, 0xf9, 0x37, 0x15, 0x58, 0xeb, 0x06, 0xdc, 0xe4, 0xbc, 0x8b, 0xde, 0xa6, 0xcf,
- 0xc3, 0xc5, 0xae, 0x65, 0x98, 0x76, 0xa7, 0x75, 0xcf, 0x68, 0xda, 0x5d, 0x4b, 0xdf, 0x4b, 0xd6,
- 0xe6, 0x0a, 0x5c, 0x90, 0x30, 0x4c, 0xa3, 0xd2, 0xda, 0x37, 0x4c, 0xbb, 0xad, 0x5b, 0xd6, 0xfd,
- 0x96, 0xb9, 0xa3, 0x2a, 0xf4, 0x8b, 0x19, 0x08, 0x8d, 0x5d, 0x9d, 0xd5, 0x26, 0x56, 0xd6, 0x34,
- 0xee, 0xeb, 0x75, 0x7b, 0xbb, 0xd5, 0x51, 0xf3, 0xe5, 0x06, 0x3d, 0xdf, 0x31, 0xe0, 0x2e, 0xb3,
- 0x2c, 0x2c, 0x42, 0xa1, 0xd9, 0x6a, 0x1a, 0xc9, 0xc7, 0xc5, 0x15, 0x28, 0xea, 0xed, 0xb6, 0xd9,
- 0xda, 0xc7, 0x29, 0x06, 0xb0, 0xb8, 0x63, 0x34, 0x69, 0xcd, 0xf2, 0xb4, 0xa4, 0x6d, 0xb6, 0x1a,
- 0xad, 0x8e, 0xb1, 0xa3, 0x16, 0xca, 0xa6, 0x58, 0xc2, 0x82, 0x69, 0xcf, 0x67, 0x2f, 0x79, 0x3b,
- 0xc6, 0xae, 0xde, 0xad, 0x77, 0xf8, 0x10, 0x3d, 0xb0, 0x4d, 0xe3, 0xd3, 0x5d, 0xc3, 0xea, 0x58,
- 0xaa, 0x42, 0x54, 0x58, 0x69, 0x1a, 0xc6, 0x8e, 0x65, 0x9b, 0xc6, 0x7e, 0xcd, 0xb8, 0xaf, 0xe6,
- 0x28, 0x4f, 0xf6, 0x3f, 0xfd, 0x42, 0xf9, 0x7b, 0x0a, 0x10, 0x16, 0xac, 0x58, 0x64, 0xc0, 0xc1,
- 0x19, 0x73, 0x19, 0xce, 0x57, 0xe9, 0x50, 0x63, 0xd3, 0x1a, 0xad, 0x9d, 0x64, 0x97, 0x9d, 0x03,
- 0x92, 0x28, 0x6f, 0xed, 0xee, 0xaa, 0x0a, 0xb9, 0x00, 0xa7, 0x13, 0xf0, 0x1d, 0xb3, 0xd5, 0x56,
- 0x73, 0xe7, 0x73, 0x45, 0x85, 0x6c, 0xa6, 0x0a, 0xef, 0x19, 0x46, 0x5b, 0xcd, 0xd3, 0x21, 0x4a,
- 0x14, 0x88, 0x25, 0xc1, 0xc8, 0x0b, 0xe5, 0x6f, 0x2a, 0x70, 0x8e, 0x55, 0x53, 0xac, 0xaf, 0xb0,
- 0xaa, 0x17, 0x61, 0x8b, 0x87, 0x60, 0xcf, 0xaa, 0xe8, 0x19, 0x50, 0x63, 0xa5, 0xac, 0x9a, 0x67,
- 0x61, 0x23, 0x06, 0xc5, 0x7a, 0xe4, 0xe8, 0xee, 0x11, 0x03, 0x6f, 0x1b, 0x56, 0xc7, 0x36, 0x76,
- 0x77, 0x5b, 0x66, 0x87, 0x55, 0x24, 0x5f, 0xd6, 0x60, 0xa3, 0xe2, 0x8e, 0x27, 0xf4, 0xea, 0x35,
- 0x0c, 0x3c, 0x7f, 0x88, 0x55, 0x58, 0x85, 0x65, 0xe3, 0x33, 0x1d, 0xa3, 0x69, 0xd5, 0x5a, 0x4d,
- 0xf5, 0x54, 0xf9, 0x62, 0x02, 0x47, 0xac, 0x63, 0xcb, 0xaa, 0xaa, 0xa7, 0xca, 0x0e, 0xac, 0x0a,
- 0xc3, 0x6b, 0x36, 0x2b, 0x2e, 0xc3, 0x79, 0x31, 0xd7, 0x70, 0x47, 0x49, 0x36, 0x61, 0x0b, 0xce,
- 0xa4, 0xcb, 0x8d, 0x8e, 0xaa, 0xd0, 0x51, 0x48, 0x94, 0x50, 0x78, 0xae, 0xfc, 0xeb, 0x0a, 0xac,
- 0x86, 0x8f, 0x26, 0xa8, 0xa6, 0xbd, 0x02, 0x17, 0x1a, 0xbb, 0xba, 0xbd, 0x63, 0xec, 0xd7, 0x2a,
- 0x86, 0x7d, 0xaf, 0xd6, 0xdc, 0x49, 0x7c, 0xe4, 0x39, 0x38, 0x9b, 0x81, 0x80, 0x5f, 0xd9, 0x82,
- 0x33, 0xc9, 0xa2, 0x0e, 0x5d, 0xaa, 0x39, 0xda, 0xf5, 0xc9, 0x92, 0x70, 0x9d, 0xe6, 0xcb, 0xfb,
- 0xb0, 0x66, 0xe9, 0x8d, 0xfa, 0xae, 0x3f, 0xee, 0xb9, 0xfa, 0x74, 0x72, 0x34, 0x24, 0x17, 0x60,
- 0x73, 0xb7, 0x65, 0x56, 0x0c, 0x1b, 0x51, 0x12, 0x35, 0x38, 0x0d, 0xeb, 0x72, 0xe1, 0x03, 0x83,
- 0x4e, 0x5f, 0x02, 0x6b, 0x32, 0xb0, 0xd9, 0x52, 0x73, 0xe5, 0xcf, 0xc1, 0x4a, 0x2c, 0x11, 0xde,
- 0x26, 0x9c, 0x96, 0x7f, 0xb7, 0xdd, 0x61, 0xdf, 0x1b, 0x1e, 0xaa, 0xa7, 0x92, 0x05, 0xe6, 0x74,
- 0x38, 0xa4, 0x05, 0xb8, 0x9e, 0xe5, 0x82, 0x8e, 0x3b, 0x3e, 0xf6, 0x86, 0xce, 0xc4, 0xed, 0xab,
- 0xb9, 0xf2, 0xcb, 0xb0, 0x1a, 0x0b, 0xbf, 0x4d, 0x07, 0xae, 0xde, 0xe2, 0x1b, 0x70, 0xc3, 0xd8,
- 0xa9, 0x75, 0x1b, 0xea, 0x02, 0x5d, 0xc9, 0xd5, 0xda, 0x5e, 0x55, 0x85, 0xf2, 0x77, 0x14, 0x7a,
- 0xcf, 0xc0, 0xa4, 0x3a, 0x8d, 0x5d, 0x5d, 0x0c, 0x35, 0x9d, 0x66, 0x2c, 0xa8, 0xbf, 0x61, 0x59,
- 0xec, 0x4d, 0xfd, 0x22, 0x6c, 0xf1, 0x1f, 0xb6, 0xde, 0xdc, 0xb1, 0xab, 0xba, 0xb9, 0x73, 0x5f,
- 0x37, 0xe9, 0xdc, 0x7b, 0xa0, 0xe6, 0x70, 0x41, 0x49, 0x10, 0xbb, 0xd3, 0xea, 0x56, 0xaa, 0x6a,
- 0x9e, 0xce, 0xdf, 0x18, 0xbc, 0x5d, 0x6b, 0xaa, 0x05, 0x5c, 0x9e, 0x29, 0x6c, 0x64, 0x4b, 0xcb,
- 0x17, 0xca, 0xef, 0x2a, 0xb0, 0x69, 0x79, 0x87, 0x43, 0x67, 0x32, 0x1d, 0xbb, 0xfa, 0xe0, 0xd0,
- 0x1f, 0x7b, 0x93, 0xa3, 0x63, 0x6b, 0xea, 0x4d, 0x5c, 0x72, 0x0b, 0xae, 0x5b, 0xb5, 0xbd, 0xa6,
- 0xde, 0xa1, 0xcb, 0x4b, 0xaf, 0xef, 0xb5, 0xcc, 0x5a, 0xa7, 0xda, 0xb0, 0xad, 0x6e, 0x2d, 0x35,
- 0xf3, 0xae, 0xc1, 0xf3, 0xb3, 0x51, 0xeb, 0xc6, 0x9e, 0x5e, 0x79, 0xa0, 0x2a, 0xf3, 0x19, 0x6e,
- 0xeb, 0x75, 0xbd, 0x59, 0x31, 0x76, 0xec, 0xfd, 0xdb, 0x6a, 0x8e, 0x5c, 0x87, 0xab, 0xb3, 0x51,
- 0x77, 0x6b, 0x6d, 0x8b, 0xa2, 0xe5, 0xe7, 0x7f, 0xb7, 0x6a, 0x35, 0x28, 0x56, 0xa1, 0xfc, 0xc7,
- 0x0a, 0x6c, 0xcd, 0x8a, 0xc1, 0x44, 0x6e, 0x80, 0x66, 0x34, 0x3b, 0xa6, 0x5e, 0xdb, 0xb1, 0x2b,
- 0xa6, 0xb1, 0x63, 0x34, 0x3b, 0x35, 0xbd, 0x6e, 0xd9, 0x56, 0xab, 0x4b, 0x67, 0x53, 0x64, 0xfa,
- 0xf0, 0x02, 0x5c, 0x99, 0x83, 0xd7, 0xaa, 0xed, 0x54, 0x54, 0x85, 0xdc, 0x86, 0x97, 0xe6, 0x20,
- 0x59, 0x0f, 0xac, 0x8e, 0xd1, 0x90, 0x4b, 0xd4, 0x5c, 0xb9, 0x02, 0xe7, 0x67, 0x07, 0x69, 0xa1,
- 0xdb, 0x74, 0xbc, 0xa7, 0x8b, 0x50, 0xd8, 0xa1, 0x27, 0x43, 0x2c, 0xf7, 0x43, 0xd9, 0x03, 0x35,
- 0x19, 0x67, 0x21, 0x65, 0xa3, 0x62, 0x76, 0x9b, 0x4d, 0x76, 0x8c, 0xac, 0x43, 0xa9, 0xd5, 0xa9,
- 0x1a, 0x26, 0xcf, 0x9e, 0x81, 0xe9, 0x32, 0xba, 0x4d, 0xba, 0x70, 0x5a, 0x66, 0xed, 0xb3, 0x78,
- 0x9e, 0x6c, 0xc1, 0x19, 0xab, 0xae, 0x57, 0xee, 0xd9, 0xcd, 0x56, 0xc7, 0xae, 0x35, 0xed, 0x4a,
- 0x55, 0x6f, 0x36, 0x8d, 0xba, 0x0a, 0xd8, 0x99, 0xb3, 0x7c, 0x2b, 0xc9, 0x07, 0xe1, 0x66, 0xeb,
- 0x5e, 0x47, 0xb7, 0xdb, 0xf5, 0xee, 0x5e, 0xad, 0x69, 0x5b, 0x0f, 0x9a, 0x15, 0x21, 0xfb, 0x54,
- 0xd2, 0x5b, 0xee, 0x4d, 0xb8, 0x36, 0x17, 0x3b, 0xca, 0x73, 0x71, 0x03, 0xb4, 0xb9, 0x98, 0xbc,
- 0x21, 0xe5, 0x1f, 0x29, 0x70, 0x61, 0xce, 0x1b, 0x32, 0x79, 0x09, 0x6e, 0x55, 0x0d, 0x7d, 0xa7,
- 0x6e, 0x58, 0x16, 0x6e, 0x14, 0x74, 0x18, 0x98, 0x2d, 0x4b, 0xe6, 0x86, 0x7a, 0x0b, 0xae, 0xcf,
- 0x47, 0x8f, 0x8e, 0xe6, 0x9b, 0x70, 0x6d, 0x3e, 0x2a, 0x3f, 0xaa, 0x73, 0xa4, 0x0c, 0x37, 0xe6,
- 0x63, 0x86, 0x47, 0x7c, 0xbe, 0xfc, 0xdb, 0x0a, 0x9c, 0xcb, 0x56, 0xe4, 0xd0, 0xba, 0xd5, 0x9a,
- 0x56, 0x47, 0xaf, 0xd7, 0xed, 0xb6, 0x6e, 0xea, 0x0d, 0xdb, 0x68, 0x9a, 0xad, 0x7a, 0x3d, 0xeb,
- 0x68, 0xbb, 0x06, 0xcf, 0xcf, 0x46, 0xb5, 0x2a, 0x66, 0xad, 0x4d, 0x77, 0x6f, 0x0d, 0x2e, 0xcf,
- 0xc6, 0x32, 0x6a, 0x15, 0x43, 0xcd, 0x6d, 0xbf, 0xf9, 0x83, 0x7f, 0xba, 0x7c, 0xea, 0x07, 0xef,
- 0x5e, 0x56, 0x7e, 0xfc, 0xee, 0x65, 0xe5, 0x1f, 0xdf, 0xbd, 0xac, 0x7c, 0xf6, 0xc5, 0x93, 0xa5,
- 0x88, 0x42, 0xb9, 0xff, 0xd1, 0x22, 0xde, 0x50, 0x5e, 0xf9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff,
- 0x68, 0xd6, 0xc5, 0x87, 0x29, 0xbe, 0x01, 0x00,
+ 0x76, 0x20, 0x36, 0xdd, 0x8d, 0x8f, 0xc6, 0xc3, 0x57, 0x23, 0x01, 0x92, 0x20, 0x66, 0x86, 0xcd,
+ 0xa9, 0x99, 0xe1, 0x90, 0xb3, 0x33, 0xe4, 0x12, 0xdc, 0xe1, 0xee, 0xec, 0x7c, 0x6d, 0xa3, 0x1b,
+ 0x24, 0x9a, 0x04, 0x40, 0x6c, 0x35, 0x40, 0xec, 0x68, 0x3f, 0x6a, 0x0b, 0xdd, 0x09, 0xa0, 0x06,
+ 0xdd, 0x5d, 0xbd, 0x55, 0xd5, 0x04, 0xa1, 0x3d, 0xf9, 0xee, 0xf4, 0x71, 0xb2, 0x42, 0xd6, 0xe7,
+ 0x49, 0xa7, 0x3d, 0x87, 0x4e, 0x56, 0xc8, 0x77, 0x3e, 0xc5, 0x39, 0xa4, 0x38, 0x4b, 0x96, 0x7d,
+ 0xf6, 0x85, 0x65, 0xe9, 0xe2, 0x2c, 0xcb, 0x8a, 0x8b, 0x93, 0xc2, 0x3e, 0xdb, 0xe1, 0xf5, 0x05,
+ 0x64, 0x59, 0xfe, 0xe1, 0x40, 0x84, 0x23, 0x24, 0x5f, 0x84, 0x23, 0xbc, 0x0e, 0xdd, 0x39, 0xf2,
+ 0x65, 0x66, 0x55, 0x66, 0x55, 0x75, 0xa3, 0x31, 0xe4, 0xe8, 0xc4, 0x0d, 0xfd, 0x21, 0xd1, 0x2f,
+ 0xdf, 0x7b, 0x59, 0xf9, 0xfd, 0xf2, 0xe5, 0xfb, 0x80, 0x97, 0x02, 0xda, 0xa4, 0x1d, 0xd7, 0x0b,
+ 0x6e, 0x34, 0xe9, 0x9e, 0x5d, 0x3f, 0xba, 0x11, 0x1c, 0x75, 0xa8, 0xcf, 0xff, 0xbd, 0xde, 0xf1,
+ 0xdc, 0xc0, 0x25, 0xc3, 0xf8, 0x63, 0x61, 0x6e, 0xcf, 0xdd, 0x73, 0x11, 0x72, 0x83, 0xfd, 0xc5,
+ 0x0b, 0x17, 0x2e, 0xed, 0xb9, 0xee, 0x5e, 0x93, 0xde, 0xc0, 0x5f, 0x3b, 0xdd, 0xdd, 0x1b, 0x8d,
+ 0xae, 0x67, 0x07, 0x8e, 0xdb, 0x16, 0xe5, 0xc5, 0x78, 0x79, 0xe0, 0xb4, 0xa8, 0x1f, 0xd8, 0xad,
+ 0x4e, 0x2f, 0x06, 0x87, 0x9e, 0xdd, 0xe9, 0x50, 0x4f, 0xd4, 0xbe, 0x70, 0x2d, 0xfc, 0x40, 0x3b,
+ 0x08, 0x18, 0x25, 0x63, 0x7e, 0xe3, 0xd1, 0x4d, 0xf5, 0xa7, 0x40, 0xbd, 0xdd, 0xa3, 0x2d, 0x5e,
+ 0xd7, 0x0f, 0x68, 0xc3, 0x6a, 0xd0, 0x47, 0x4e, 0x9d, 0x5a, 0x1e, 0xfd, 0x46, 0xd7, 0xf1, 0x68,
+ 0x8b, 0xb6, 0x03, 0x41, 0xf7, 0x66, 0x3a, 0x9d, 0xfc, 0x90, 0xd8, 0x17, 0x19, 0xbf, 0x90, 0x83,
+ 0xb1, 0xfb, 0x94, 0x76, 0x4a, 0x4d, 0xe7, 0x11, 0x25, 0x2f, 0xc3, 0xd0, 0xba, 0xdd, 0xa2, 0xf3,
+ 0x99, 0xcb, 0x99, 0xab, 0x63, 0x4b, 0xd3, 0x27, 0xc7, 0xc5, 0x71, 0x9f, 0x7a, 0x8f, 0xa8, 0x67,
+ 0xb5, 0xed, 0x16, 0x35, 0xb1, 0x90, 0x7c, 0x0a, 0xc6, 0xd8, 0xff, 0x7e, 0xc7, 0xae, 0xd3, 0xf9,
+ 0x2c, 0x62, 0x4e, 0x9e, 0x1c, 0x17, 0xc7, 0xda, 0x12, 0x68, 0x46, 0xe5, 0xa4, 0x0a, 0xa3, 0xcb,
+ 0x8f, 0x3b, 0x8e, 0x47, 0xfd, 0xf9, 0xa1, 0xcb, 0x99, 0xab, 0xe3, 0x8b, 0x0b, 0xd7, 0x79, 0x1f,
+ 0x5d, 0x97, 0x7d, 0x74, 0x7d, 0x53, 0x76, 0xe2, 0xd2, 0xec, 0xef, 0x1e, 0x17, 0x9f, 0x3b, 0x39,
+ 0x2e, 0x8e, 0x52, 0x4e, 0xf2, 0x93, 0x7f, 0x58, 0xcc, 0x98, 0x92, 0x9e, 0xbc, 0x0b, 0x43, 0x9b,
+ 0x47, 0x1d, 0x3a, 0x3f, 0x76, 0x39, 0x73, 0x75, 0x6a, 0xf1, 0xd2, 0x75, 0x3e, 0xac, 0xe1, 0xc7,
+ 0x47, 0x7f, 0x31, 0xac, 0xa5, 0xfc, 0xc9, 0x71, 0x71, 0x88, 0xa1, 0x98, 0x48, 0x45, 0xde, 0x84,
+ 0x91, 0x15, 0xd7, 0x0f, 0xaa, 0x95, 0x79, 0xc0, 0x4f, 0x3e, 0x77, 0x72, 0x5c, 0x9c, 0xd9, 0x77,
+ 0xfd, 0xc0, 0x72, 0x1a, 0x6f, 0xb8, 0x2d, 0x27, 0xa0, 0xad, 0x4e, 0x70, 0x64, 0x0a, 0x24, 0xe3,
+ 0x31, 0x4c, 0x6a, 0xfc, 0xc8, 0x38, 0x8c, 0x6e, 0xad, 0xdf, 0x5f, 0x7f, 0xb0, 0xbd, 0x5e, 0x78,
+ 0x8e, 0xe4, 0x61, 0x68, 0xfd, 0x41, 0x65, 0xb9, 0x90, 0x21, 0xa3, 0x90, 0x2b, 0x6d, 0x6c, 0x14,
+ 0xb2, 0x64, 0x02, 0xf2, 0x95, 0xd2, 0x66, 0x69, 0xa9, 0x54, 0x5b, 0x2e, 0xe4, 0xc8, 0x2c, 0x4c,
+ 0x6f, 0x57, 0xd7, 0x2b, 0x0f, 0xb6, 0x6b, 0x56, 0x65, 0xb9, 0x76, 0x7f, 0xf3, 0xc1, 0x46, 0x61,
+ 0x88, 0x4c, 0x01, 0xdc, 0xdf, 0x5a, 0x5a, 0x36, 0xd7, 0x97, 0x37, 0x97, 0x6b, 0x85, 0x61, 0x32,
+ 0x07, 0x05, 0x49, 0x62, 0xd5, 0x96, 0xcd, 0x87, 0xd5, 0xf2, 0x72, 0x61, 0xe4, 0xde, 0x50, 0x3e,
+ 0x57, 0x18, 0x32, 0x47, 0x57, 0xa9, 0xed, 0xd3, 0x6a, 0xc5, 0xf8, 0x0f, 0x73, 0x90, 0x5f, 0xa3,
+ 0x81, 0xdd, 0xb0, 0x03, 0x9b, 0xbc, 0xa0, 0x8d, 0x0f, 0x36, 0x51, 0x19, 0x98, 0x97, 0x93, 0x03,
+ 0x33, 0x7c, 0x72, 0x5c, 0xcc, 0xbc, 0xa9, 0x0e, 0xc8, 0x3b, 0x30, 0x5e, 0xa1, 0x7e, 0xdd, 0x73,
+ 0x3a, 0x6c, 0xb2, 0xcd, 0xe7, 0x10, 0xed, 0xe2, 0xc9, 0x71, 0xf1, 0x5c, 0x23, 0x02, 0x2b, 0x1d,
+ 0xa2, 0x62, 0x93, 0x2a, 0x8c, 0xac, 0xda, 0x3b, 0xb4, 0xe9, 0xcf, 0x0f, 0x5f, 0xce, 0x5d, 0x1d,
+ 0x5f, 0x7c, 0x5e, 0x0c, 0x82, 0xfc, 0xc0, 0xeb, 0xbc, 0x74, 0xb9, 0x1d, 0x78, 0x47, 0x4b, 0x73,
+ 0x27, 0xc7, 0xc5, 0x42, 0x13, 0x01, 0x6a, 0x07, 0x73, 0x14, 0x52, 0x8b, 0x26, 0xc6, 0xc8, 0xa9,
+ 0x13, 0xe3, 0xc5, 0xdf, 0x3d, 0x2e, 0x66, 0xd8, 0x80, 0x89, 0x89, 0x11, 0xf1, 0xd3, 0xa7, 0xc8,
+ 0x22, 0xe4, 0x4d, 0xfa, 0xc8, 0xf1, 0x59, 0xcb, 0xf2, 0xd8, 0xb2, 0xf3, 0x27, 0xc7, 0x45, 0xe2,
+ 0x09, 0x98, 0xf2, 0x19, 0x21, 0xde, 0xc2, 0xdb, 0x30, 0xae, 0x7c, 0x35, 0x29, 0x40, 0xee, 0x80,
+ 0x1e, 0xf1, 0x1e, 0x36, 0xd9, 0x9f, 0x64, 0x0e, 0x86, 0x1f, 0xd9, 0xcd, 0xae, 0xe8, 0x52, 0x93,
+ 0xff, 0xf8, 0x7c, 0xf6, 0x73, 0x99, 0x7b, 0x43, 0xf9, 0xd1, 0x42, 0xde, 0xcc, 0x56, 0x2b, 0xc6,
+ 0x4f, 0x0f, 0x41, 0xde, 0x74, 0xf9, 0x02, 0x26, 0xd7, 0x60, 0xb8, 0x16, 0xd8, 0x81, 0x1c, 0xa6,
+ 0xd9, 0x93, 0xe3, 0xe2, 0x34, 0x5b, 0xdc, 0x54, 0xa9, 0x9f, 0x63, 0x30, 0xd4, 0x8d, 0x7d, 0xdb,
+ 0x97, 0xc3, 0x85, 0xa8, 0x1d, 0x06, 0x50, 0x51, 0x11, 0x83, 0x5c, 0x81, 0xa1, 0x35, 0xb7, 0x41,
+ 0xc5, 0x88, 0x91, 0x93, 0xe3, 0xe2, 0x54, 0xcb, 0x6d, 0xa8, 0x88, 0x58, 0x4e, 0xde, 0x80, 0xb1,
+ 0x72, 0xd7, 0xf3, 0x68, 0x9b, 0xcd, 0xf5, 0x21, 0x44, 0x9e, 0x3a, 0x39, 0x2e, 0x42, 0x9d, 0x03,
+ 0x2d, 0xa7, 0x61, 0x46, 0x08, 0x6c, 0x18, 0x6a, 0x81, 0xed, 0x05, 0xb4, 0x31, 0x3f, 0x3c, 0xd0,
+ 0x30, 0xb0, 0xf5, 0x39, 0xe3, 0x73, 0x92, 0xf8, 0x30, 0x08, 0x4e, 0x64, 0x05, 0xc6, 0xef, 0x7a,
+ 0x76, 0x9d, 0x6e, 0x50, 0xcf, 0x71, 0x1b, 0x38, 0xbe, 0xb9, 0xa5, 0x2b, 0x27, 0xc7, 0xc5, 0xf3,
+ 0x7b, 0x0c, 0x6c, 0x75, 0x10, 0x1e, 0x51, 0x7f, 0xe7, 0xb8, 0x98, 0xaf, 0x88, 0xad, 0xd6, 0x54,
+ 0x49, 0xc9, 0xd7, 0xd9, 0xe0, 0xf8, 0x01, 0x76, 0x2d, 0x6d, 0xcc, 0x8f, 0x9e, 0xfa, 0x89, 0x86,
+ 0xf8, 0xc4, 0xf3, 0x4d, 0xdb, 0x0f, 0x2c, 0x8f, 0xd3, 0xc5, 0xbe, 0x53, 0x65, 0x49, 0x1e, 0x40,
+ 0xbe, 0x56, 0xdf, 0xa7, 0x8d, 0x6e, 0x93, 0xe2, 0x94, 0x19, 0x5f, 0xbc, 0x20, 0x26, 0xb5, 0x1c,
+ 0x4f, 0x59, 0xbc, 0xb4, 0x20, 0x78, 0x13, 0x5f, 0x40, 0xd4, 0xf9, 0x24, 0xb1, 0x3e, 0x9f, 0xff,
+ 0xd6, 0x2f, 0x16, 0x9f, 0xfb, 0x6b, 0xff, 0xf2, 0xf2, 0x73, 0xc6, 0x7f, 0x9e, 0x85, 0x42, 0x9c,
+ 0x09, 0xd9, 0x85, 0xc9, 0xad, 0x4e, 0xc3, 0x0e, 0x68, 0xb9, 0xe9, 0xd0, 0x76, 0xe0, 0xe3, 0x24,
+ 0xe9, 0xdf, 0xa6, 0x57, 0x44, 0xbd, 0xf3, 0x5d, 0x24, 0xb4, 0xea, 0x9c, 0x32, 0xd6, 0x2a, 0x9d,
+ 0x6d, 0x54, 0x4f, 0x0d, 0x37, 0x70, 0x1f, 0x67, 0xd8, 0xd9, 0xea, 0xe1, 0x5b, 0x7f, 0x8f, 0x7a,
+ 0x04, 0x5b, 0x31, 0x81, 0xda, 0x8d, 0x9d, 0x23, 0x9c, 0x99, 0x83, 0x4f, 0x20, 0x46, 0x92, 0x32,
+ 0x81, 0x18, 0xd8, 0xf8, 0x3f, 0x32, 0x30, 0x65, 0x52, 0xdf, 0xed, 0x7a, 0x75, 0xba, 0x42, 0xed,
+ 0x06, 0xf5, 0xd8, 0xf4, 0xbf, 0xef, 0xb4, 0x1b, 0x62, 0x4d, 0xe1, 0xf4, 0x3f, 0x70, 0xda, 0xea,
+ 0xd6, 0x8d, 0xe5, 0xe4, 0xd3, 0x30, 0x5a, 0xeb, 0xee, 0x20, 0x6a, 0x36, 0xda, 0x01, 0xfc, 0xee,
+ 0x8e, 0x15, 0x43, 0x97, 0x68, 0xe4, 0x06, 0x8c, 0x3e, 0xa4, 0x9e, 0x1f, 0xed, 0x86, 0x78, 0x34,
+ 0x3c, 0xe2, 0x20, 0x95, 0x40, 0x60, 0x91, 0xbb, 0xd1, 0x8e, 0x2c, 0x0e, 0xb5, 0xe9, 0xd8, 0x3e,
+ 0x18, 0x4d, 0x95, 0x96, 0x80, 0xa8, 0x53, 0x45, 0x62, 0x19, 0x3f, 0x95, 0x85, 0x42, 0xc5, 0x0e,
+ 0xec, 0x1d, 0xdb, 0x17, 0xfd, 0xf9, 0xf0, 0x16, 0xdb, 0xe3, 0x95, 0x86, 0xe2, 0x1e, 0xcf, 0xbe,
+ 0xfc, 0x63, 0x37, 0xef, 0xd5, 0x78, 0xf3, 0xc6, 0xd9, 0x09, 0x2b, 0x9a, 0x17, 0x35, 0xea, 0xbd,
+ 0xd3, 0x1b, 0x55, 0x10, 0x8d, 0xca, 0xcb, 0x46, 0x45, 0x4d, 0x21, 0xef, 0xc1, 0x50, 0xad, 0x43,
+ 0xeb, 0x62, 0x13, 0x91, 0xe7, 0x82, 0xde, 0x38, 0x86, 0xf0, 0xf0, 0xd6, 0xd2, 0x84, 0x60, 0x33,
+ 0xe4, 0x77, 0x68, 0xdd, 0x44, 0x32, 0x65, 0xd1, 0xfc, 0xa3, 0x1c, 0xcc, 0xa5, 0x91, 0xa9, 0xed,
+ 0x18, 0xe9, 0xd3, 0x8e, 0xab, 0x90, 0x67, 0x47, 0x38, 0x3b, 0x16, 0x71, 0xbb, 0x18, 0x5b, 0x9a,
+ 0x60, 0x9f, 0xbc, 0x2f, 0x60, 0x66, 0x58, 0x4a, 0x5e, 0x0e, 0x25, 0x82, 0x7c, 0xc4, 0x4f, 0x48,
+ 0x04, 0x52, 0x0e, 0x60, 0x63, 0x2d, 0x97, 0x30, 0x0a, 0x0e, 0x51, 0xb7, 0x48, 0x70, 0x34, 0xd6,
+ 0x9e, 0x80, 0x68, 0xc7, 0x8c, 0x3c, 0x14, 0x96, 0x21, 0x2f, 0x9b, 0x35, 0x3f, 0x81, 0x8c, 0x66,
+ 0x62, 0x9d, 0xf4, 0xf0, 0x16, 0x1f, 0xcc, 0x86, 0xf8, 0xad, 0xb2, 0x91, 0x38, 0xe4, 0x16, 0xe4,
+ 0x37, 0x3c, 0xf7, 0xf1, 0x51, 0xb5, 0xe2, 0xcf, 0x4f, 0x5e, 0xce, 0x5d, 0x1d, 0x5b, 0xba, 0x70,
+ 0x72, 0x5c, 0x9c, 0xed, 0x30, 0x98, 0xe5, 0x34, 0xd4, 0x93, 0x36, 0x44, 0xbc, 0x37, 0x94, 0xcf,
+ 0x14, 0xb2, 0xf7, 0x86, 0xf2, 0xd9, 0x42, 0x8e, 0x8b, 0x17, 0xf7, 0x86, 0xf2, 0x43, 0x85, 0xe1,
+ 0x7b, 0x43, 0xf9, 0x61, 0x14, 0x38, 0xc6, 0x0a, 0x70, 0x6f, 0x28, 0x3f, 0x5e, 0x98, 0xd0, 0x4e,
+ 0x7b, 0x64, 0x10, 0xb8, 0x75, 0xb7, 0x69, 0xe6, 0xb6, 0xcc, 0xaa, 0x39, 0x52, 0x2e, 0x95, 0xa9,
+ 0x17, 0x98, 0xb9, 0xd2, 0x76, 0xcd, 0x9c, 0xac, 0x1c, 0xb5, 0xed, 0x96, 0x53, 0xe7, 0x47, 0xa7,
+ 0x99, 0xbb, 0x5b, 0xde, 0x30, 0x4a, 0x30, 0x15, 0xb5, 0x65, 0xd5, 0xf1, 0x03, 0x72, 0x03, 0xc6,
+ 0x24, 0x84, 0x6d, 0x74, 0xb9, 0xd4, 0x56, 0x9b, 0x11, 0x8e, 0xf1, 0x3b, 0x59, 0x80, 0xa8, 0xe4,
+ 0x19, 0x5d, 0x0b, 0x9f, 0xd5, 0xd6, 0xc2, 0xb9, 0xf8, 0x5a, 0xe8, 0xb9, 0x0a, 0xc8, 0x07, 0x30,
+ 0xc2, 0xc4, 0x82, 0xae, 0x14, 0x89, 0x2e, 0xc4, 0x49, 0xb1, 0xf0, 0xe1, 0xad, 0xa5, 0x29, 0x41,
+ 0x3c, 0xe2, 0x23, 0xc4, 0x14, 0x64, 0xca, 0x32, 0xfa, 0x85, 0xd1, 0x68, 0x30, 0xc4, 0x02, 0xba,
+ 0x0a, 0xe1, 0x80, 0x8a, 0x0e, 0xc5, 0x95, 0xd1, 0x91, 0x83, 0x1c, 0x96, 0x92, 0x8b, 0xc0, 0x06,
+ 0x5c, 0x74, 0xea, 0xe8, 0xc9, 0x71, 0x31, 0xd7, 0xf5, 0x1c, 0x9c, 0x04, 0xe4, 0x06, 0x88, 0x69,
+ 0x20, 0x3a, 0x90, 0xcd, 0xbe, 0x99, 0xba, 0x6d, 0xd5, 0xa9, 0x17, 0x44, 0x3d, 0x3e, 0x9f, 0x91,
+ 0xb3, 0x85, 0x74, 0x40, 0x9f, 0x2a, 0xf3, 0x43, 0x38, 0x0d, 0xae, 0xa6, 0xf6, 0xca, 0x75, 0x0d,
+ 0x95, 0x8b, 0x91, 0x97, 0xe5, 0xa9, 0xd4, 0xe0, 0x65, 0x56, 0x42, 0xa4, 0xd4, 0x2b, 0x20, 0xb7,
+ 0x80, 0xcd, 0x50, 0xd1, 0xfb, 0x20, 0xea, 0x29, 0x6d, 0xd7, 0x96, 0xce, 0x09, 0x4e, 0x93, 0xf6,
+ 0xa1, 0x4a, 0xce, 0xb0, 0xc9, 0x3b, 0xc0, 0xa6, 0xb0, 0xe8, 0x77, 0x22, 0x88, 0xee, 0x96, 0x37,
+ 0xca, 0x4d, 0xb7, 0xdb, 0xa8, 0x7d, 0x71, 0x35, 0x22, 0xde, 0xab, 0x77, 0x54, 0xe2, 0xbb, 0xe5,
+ 0x0d, 0xf2, 0x0e, 0x0c, 0x97, 0xbe, 0xb7, 0xeb, 0x51, 0x21, 0x9f, 0x4c, 0xc8, 0x3a, 0x19, 0x6c,
+ 0xe9, 0x82, 0x20, 0x9c, 0xb6, 0xd9, 0x4f, 0x55, 0xae, 0xc3, 0x72, 0x56, 0xf3, 0xe6, 0x6a, 0x4d,
+ 0xc8, 0x1e, 0x24, 0xd6, 0x2d, 0x9b, 0xab, 0xca, 0x67, 0x07, 0x5a, 0xab, 0x19, 0x15, 0xb9, 0x01,
+ 0xd9, 0x52, 0x05, 0x6f, 0x44, 0xe3, 0x8b, 0x63, 0xb2, 0xda, 0xca, 0xd2, 0x9c, 0x20, 0x99, 0xb0,
+ 0xd5, 0x65, 0x90, 0x2d, 0x55, 0xc8, 0x12, 0x0c, 0xaf, 0x1d, 0xd5, 0xbe, 0xb8, 0x2a, 0x36, 0xb3,
+ 0x59, 0x39, 0xaf, 0x19, 0xec, 0x01, 0x2e, 0x7b, 0x3f, 0xfa, 0xe2, 0xd6, 0x91, 0xff, 0x8d, 0xa6,
+ 0xfa, 0xc5, 0x88, 0x46, 0x36, 0x60, 0xac, 0xd4, 0x68, 0x39, 0xed, 0x2d, 0x9f, 0x7a, 0xf3, 0xe3,
+ 0xc8, 0x67, 0x3e, 0xf6, 0xdd, 0x61, 0xf9, 0xd2, 0xfc, 0xc9, 0x71, 0x71, 0xce, 0x66, 0x3f, 0xad,
+ 0xae, 0x4f, 0x3d, 0x85, 0x5b, 0xc4, 0x84, 0x6c, 0x00, 0xac, 0xb9, 0xed, 0x3d, 0xb7, 0x14, 0x34,
+ 0x6d, 0x3f, 0xb6, 0x3d, 0x46, 0x05, 0xa1, 0xf8, 0x70, 0xae, 0xc5, 0x60, 0x96, 0xcd, 0x80, 0x0a,
+ 0x43, 0x85, 0x07, 0xb9, 0x03, 0x23, 0x0f, 0x3c, 0xbb, 0xde, 0xa4, 0xf3, 0x93, 0xc8, 0x6d, 0x4e,
+ 0x70, 0xe3, 0x40, 0xd9, 0xd2, 0x79, 0xc1, 0xb0, 0xe0, 0x22, 0x58, 0xbd, 0xa6, 0x70, 0xc4, 0x85,
+ 0x6d, 0x20, 0xc9, 0x39, 0x99, 0x72, 0x49, 0xf8, 0x94, 0x7a, 0x49, 0x88, 0x16, 0x7d, 0xd9, 0x6d,
+ 0xb5, 0xec, 0x76, 0x03, 0x69, 0x1f, 0x2e, 0x2a, 0x77, 0x07, 0xe3, 0x1b, 0x30, 0x93, 0xe8, 0xac,
+ 0x53, 0xee, 0x77, 0xef, 0xc3, 0x74, 0x85, 0xee, 0xda, 0xdd, 0x66, 0x10, 0x9e, 0x24, 0x7c, 0x89,
+ 0xe2, 0x4d, 0xab, 0xc1, 0x8b, 0x2c, 0x79, 0x7c, 0x98, 0x71, 0x64, 0xe3, 0x3d, 0x98, 0xd4, 0x9a,
+ 0xcf, 0xae, 0x0a, 0xa5, 0x6e, 0xc3, 0x09, 0x70, 0x20, 0x33, 0xd1, 0x55, 0xc1, 0x66, 0x40, 0x1c,
+ 0x2e, 0x33, 0x42, 0x30, 0xfe, 0xae, 0x2a, 0xad, 0x88, 0x9d, 0x88, 0x5d, 0xab, 0xc5, 0x7e, 0x90,
+ 0x89, 0x64, 0xa7, 0xc4, 0x7e, 0x10, 0xee, 0x06, 0xd7, 0xf8, 0xda, 0xcc, 0x26, 0xd6, 0xe6, 0xb8,
+ 0x18, 0x89, 0x9c, 0x7d, 0xe8, 0xf3, 0x15, 0x19, 0xce, 0xd4, 0xdc, 0xc7, 0x9f, 0xa9, 0x1f, 0xc0,
+ 0xc4, 0x9a, 0xdd, 0xb6, 0xf7, 0x68, 0x83, 0xb5, 0x80, 0xef, 0x3d, 0x63, 0x4b, 0xcf, 0x9f, 0x1c,
+ 0x17, 0x2f, 0xb4, 0x38, 0x1c, 0x5b, 0xa9, 0x4e, 0x22, 0x8d, 0x80, 0xdc, 0x94, 0x2b, 0x7b, 0x38,
+ 0x65, 0x65, 0x4f, 0x8a, 0xda, 0x87, 0x71, 0x65, 0x8b, 0xf5, 0x6c, 0xfc, 0xd6, 0x18, 0xb6, 0x91,
+ 0xbc, 0x01, 0x23, 0x26, 0xdd, 0x63, 0x47, 0x4d, 0x26, 0x1a, 0x24, 0x0f, 0x21, 0x6a, 0xc7, 0x70,
+ 0x1c, 0x94, 0x33, 0x68, 0xc3, 0xdf, 0x77, 0x76, 0x03, 0xd1, 0x3b, 0xa1, 0x9c, 0x21, 0xc0, 0x8a,
+ 0x9c, 0x21, 0x20, 0xfa, 0x75, 0x96, 0xc3, 0xd8, 0xee, 0x67, 0x56, 0x6a, 0xa2, 0xd3, 0x64, 0x0f,
+ 0x9b, 0x15, 0x65, 0x1b, 0xf1, 0x34, 0x29, 0x81, 0x61, 0x93, 0xdb, 0x30, 0x56, 0xaa, 0xd7, 0xdd,
+ 0xae, 0x72, 0x67, 0xe4, 0xeb, 0x96, 0x03, 0x75, 0x15, 0x49, 0x84, 0x4a, 0x6a, 0x30, 0xbe, 0xcc,
+ 0x2e, 0x5a, 0x4e, 0xd9, 0xae, 0xef, 0xcb, 0x4e, 0x92, 0x7b, 0x98, 0x52, 0x12, 0xad, 0x5c, 0x8a,
+ 0xc0, 0x3a, 0x03, 0xaa, 0x4a, 0x06, 0x05, 0x97, 0x6c, 0xc2, 0x78, 0x8d, 0xd6, 0x3d, 0x1a, 0xd4,
+ 0x02, 0xd7, 0xa3, 0xb1, 0x2d, 0x59, 0x29, 0x59, 0xba, 0x24, 0xef, 0x7a, 0x3e, 0x02, 0x2d, 0x9f,
+ 0x41, 0x55, 0xae, 0x0a, 0x32, 0x17, 0xda, 0x5b, 0xae, 0x77, 0x54, 0x59, 0x12, 0xdb, 0x74, 0x74,
+ 0xa6, 0x73, 0xb0, 0x2a, 0xb4, 0x33, 0x48, 0x63, 0x47, 0x17, 0xda, 0x39, 0x16, 0x8e, 0x54, 0xa5,
+ 0x86, 0xb2, 0x95, 0xd8, 0xb4, 0xa7, 0xa3, 0x5e, 0x46, 0xb0, 0x32, 0x52, 0x0d, 0x1f, 0x25, 0x33,
+ 0x6d, 0xa4, 0x04, 0x16, 0xe9, 0x00, 0x91, 0xa3, 0xc6, 0x05, 0xdd, 0x26, 0xf5, 0x7d, 0xb1, 0x97,
+ 0x5f, 0x8c, 0x0d, 0x7e, 0x84, 0xb0, 0xf4, 0xaa, 0x60, 0xfe, 0xa2, 0x9c, 0x06, 0xe2, 0x9e, 0xc6,
+ 0x0a, 0x95, 0x7a, 0x52, 0x78, 0x93, 0xb7, 0x01, 0x96, 0x1f, 0x07, 0xd4, 0x6b, 0xdb, 0xcd, 0x50,
+ 0x0f, 0x86, 0xaa, 0x1f, 0x2a, 0xa0, 0xfa, 0x40, 0x2b, 0xc8, 0xa4, 0x0c, 0x93, 0x25, 0xdf, 0xef,
+ 0xb6, 0xa8, 0xe9, 0x36, 0x69, 0xc9, 0x5c, 0xc7, 0x7d, 0x7f, 0x6c, 0xe9, 0xc5, 0x93, 0xe3, 0xe2,
+ 0x45, 0x1b, 0x0b, 0x2c, 0xcf, 0x6d, 0x52, 0xcb, 0xf6, 0xd4, 0xd9, 0xad, 0xd3, 0x90, 0x07, 0x00,
+ 0x0f, 0x3a, 0xb4, 0x5d, 0xa3, 0xb6, 0x57, 0xdf, 0x8f, 0x6d, 0xf3, 0x51, 0xc1, 0xd2, 0x0b, 0xa2,
+ 0x85, 0x73, 0x6e, 0x87, 0xb6, 0x7d, 0x84, 0xa9, 0x5f, 0x15, 0x61, 0x92, 0x6d, 0x98, 0xae, 0x96,
+ 0xd6, 0x36, 0xdc, 0xa6, 0x53, 0x3f, 0x12, 0x92, 0xd3, 0x14, 0x6a, 0x07, 0xcf, 0x0b, 0xae, 0xb1,
+ 0x52, 0xbe, 0x3d, 0x39, 0x76, 0xcb, 0xea, 0x20, 0xd4, 0x12, 0xf2, 0x53, 0x9c, 0x0b, 0xf9, 0x90,
+ 0xcd, 0x41, 0x9f, 0x09, 0x83, 0x9b, 0xf6, 0x9e, 0x3f, 0x3f, 0xad, 0x69, 0xbb, 0x4a, 0xdb, 0xb5,
+ 0xeb, 0x4a, 0x29, 0x17, 0x53, 0x16, 0xf8, 0x44, 0x44, 0xa8, 0x15, 0xd8, 0x7b, 0xbe, 0x3e, 0x11,
+ 0x43, 0x6c, 0x72, 0x0f, 0xa0, 0xe2, 0xd6, 0xbb, 0x2d, 0xda, 0x0e, 0x2a, 0x4b, 0xf3, 0x05, 0xfd,
+ 0x2a, 0x10, 0x16, 0x44, 0x5b, 0x5b, 0xc3, 0xad, 0x6b, 0x33, 0x51, 0xa1, 0x5e, 0x78, 0x1f, 0x0a,
+ 0xf1, 0x0f, 0x39, 0xa3, 0x02, 0x6b, 0xb2, 0x30, 0xa5, 0xb4, 0x7e, 0xf9, 0xb1, 0xe3, 0x07, 0xbe,
+ 0xf1, 0x4d, 0x6d, 0x05, 0xb2, 0xdd, 0xe1, 0x3e, 0x3d, 0xda, 0xf0, 0xe8, 0xae, 0xf3, 0x58, 0x6c,
+ 0x66, 0xb8, 0x3b, 0x1c, 0xd0, 0x23, 0xab, 0x83, 0x50, 0x75, 0x77, 0x08, 0x51, 0xc9, 0x67, 0x20,
+ 0x7f, 0x7f, 0xad, 0x76, 0x9f, 0x1e, 0x55, 0x2b, 0xe2, 0xa0, 0xe2, 0x64, 0x2d, 0xdf, 0x62, 0xa4,
+ 0xda, 0x5c, 0x0b, 0x31, 0x8d, 0xa5, 0x68, 0x27, 0x64, 0x35, 0x97, 0x9b, 0x5d, 0x3f, 0xa0, 0x5e,
+ 0xb5, 0xa2, 0xd6, 0x5c, 0xe7, 0xc0, 0xd8, 0xbe, 0x14, 0xa2, 0x1a, 0xff, 0x26, 0x8b, 0xbb, 0x20,
+ 0x9b, 0xf0, 0xd5, 0xb6, 0x1f, 0xd8, 0xed, 0x3a, 0x0d, 0x19, 0xe0, 0x84, 0x77, 0x04, 0x34, 0x36,
+ 0xe1, 0x23, 0x64, 0xbd, 0xea, 0xec, 0xc0, 0x55, 0xb3, 0x2a, 0xa5, 0xe6, 0xa2, 0x5a, 0x51, 0xd5,
+ 0xab, 0x9e, 0x80, 0xc6, 0xaa, 0x8c, 0x90, 0xc9, 0x15, 0x18, 0xad, 0x96, 0xd6, 0x4a, 0xdd, 0x60,
+ 0x1f, 0xf7, 0xe0, 0x3c, 0x97, 0xcf, 0xd9, 0x6c, 0xb5, 0xbb, 0xc1, 0xbe, 0x29, 0x0b, 0xc9, 0x0d,
+ 0xbc, 0xf7, 0xb4, 0x69, 0xc0, 0xd5, 0xb0, 0xe2, 0xd0, 0xf5, 0x39, 0x28, 0x76, 0xed, 0x61, 0x20,
+ 0xf2, 0x3a, 0x0c, 0x3f, 0xdc, 0x28, 0x57, 0x2b, 0xe2, 0xe2, 0x8c, 0x27, 0xd1, 0xa3, 0x4e, 0x5d,
+ 0xff, 0x12, 0x8e, 0x42, 0x96, 0x61, 0xaa, 0x46, 0xeb, 0x5d, 0xcf, 0x09, 0x8e, 0xee, 0x7a, 0x6e,
+ 0xb7, 0xe3, 0xcf, 0x8f, 0x62, 0x1d, 0xb8, 0xd2, 0x7d, 0x51, 0x62, 0xed, 0x61, 0x91, 0x42, 0x1d,
+ 0x23, 0x32, 0x7e, 0x3b, 0x13, 0x6d, 0x93, 0xe4, 0x8a, 0x26, 0xd6, 0xa0, 0xee, 0x86, 0x89, 0x35,
+ 0xaa, 0xee, 0x06, 0x05, 0x1c, 0x13, 0x48, 0xb9, 0xeb, 0x07, 0x6e, 0x6b, 0xb9, 0xdd, 0xe8, 0xb8,
+ 0x4e, 0x3b, 0x40, 0x2a, 0xde, 0xf9, 0xc6, 0xc9, 0x71, 0xf1, 0x52, 0x1d, 0x4b, 0x2d, 0x2a, 0x8a,
+ 0xad, 0x18, 0x97, 0x14, 0xea, 0x27, 0x18, 0x0f, 0xe3, 0xf7, 0xb2, 0xda, 0xf1, 0xc6, 0x3e, 0xcf,
+ 0xa4, 0x9d, 0xa6, 0x53, 0xc7, 0x1b, 0x3d, 0x36, 0x34, 0x9c, 0x55, 0xf8, 0x79, 0x5e, 0x54, 0xca,
+ 0x7b, 0x48, 0xe7, 0x9d, 0x42, 0x4d, 0xbe, 0x00, 0x13, 0x4c, 0xd2, 0x10, 0x3f, 0xfd, 0xf9, 0x2c,
+ 0x76, 0xf6, 0x0b, 0xa8, 0x85, 0xf3, 0xa9, 0x17, 0xb2, 0xd1, 0x44, 0x14, 0x95, 0x82, 0x34, 0x60,
+ 0x7e, 0xd3, 0xb3, 0xdb, 0xbe, 0x13, 0x2c, 0xb7, 0xeb, 0xde, 0x11, 0x4a, 0x46, 0xcb, 0x6d, 0x7b,
+ 0xa7, 0x49, 0x1b, 0xd8, 0xdc, 0xfc, 0xd2, 0xd5, 0x93, 0xe3, 0xe2, 0x2b, 0x01, 0xc7, 0xb1, 0x68,
+ 0x88, 0x64, 0x51, 0x8e, 0xa5, 0x70, 0xee, 0xc9, 0x89, 0x49, 0x52, 0xb2, 0x5b, 0xf1, 0x11, 0x86,
+ 0x0b, 0x09, 0x28, 0x49, 0x85, 0xa3, 0xc1, 0xf6, 0x30, 0xf5, 0x33, 0x55, 0x02, 0xe3, 0xff, 0xc9,
+ 0x44, 0x07, 0x30, 0x79, 0x17, 0xc6, 0xc5, 0x8a, 0x51, 0xe6, 0x05, 0xee, 0xa0, 0x72, 0x79, 0xc5,
+ 0x46, 0x56, 0x45, 0x67, 0xf7, 0xfe, 0x52, 0x79, 0x55, 0x99, 0x1b, 0x78, 0xef, 0xb7, 0xeb, 0xcd,
+ 0x38, 0x95, 0x44, 0x63, 0x93, 0x60, 0x73, 0xb5, 0xa6, 0xf7, 0x0a, 0x4e, 0x82, 0xa0, 0xe9, 0xa7,
+ 0x74, 0x83, 0x82, 0xfc, 0xe4, 0x0d, 0xff, 0x9f, 0x33, 0x69, 0xe7, 0x3c, 0x59, 0x82, 0xc9, 0x6d,
+ 0xd7, 0x3b, 0xc0, 0xf1, 0x55, 0x3a, 0x01, 0x47, 0xfe, 0x50, 0x16, 0xc4, 0x1b, 0xa4, 0x93, 0xa8,
+ 0xdf, 0xa6, 0xf4, 0x86, 0xfe, 0x6d, 0x31, 0x0e, 0x1a, 0x01, 0x1b, 0x87, 0x90, 0x63, 0xb8, 0x3a,
+ 0x70, 0x1c, 0xa2, 0x4f, 0xd0, 0xa6, 0xb0, 0x8a, 0x6e, 0xfc, 0x57, 0x19, 0xf5, 0x3c, 0x67, 0x9d,
+ 0x5c, 0x71, 0x5b, 0xb6, 0xd3, 0x56, 0x9a, 0xc3, 0x1f, 0x96, 0x10, 0x1a, 0xff, 0x12, 0x05, 0x99,
+ 0xdc, 0x82, 0x3c, 0xff, 0x15, 0xee, 0xb5, 0xa8, 0xd5, 0x12, 0x84, 0xfa, 0x41, 0x21, 0x11, 0x13,
+ 0x23, 0x93, 0x3b, 0xeb, 0xc8, 0xfc, 0x56, 0x46, 0x3d, 0x8a, 0x3f, 0xee, 0x61, 0x13, 0x3b, 0x64,
+ 0xb2, 0x67, 0x39, 0x64, 0x9e, 0xb8, 0x09, 0x7f, 0x2d, 0x03, 0xe3, 0x8a, 0x96, 0x82, 0xb5, 0x61,
+ 0xc3, 0x73, 0x3f, 0xa2, 0xf5, 0x40, 0x6f, 0x43, 0x87, 0x03, 0x63, 0x6d, 0x08, 0x51, 0x9f, 0xa0,
+ 0x0d, 0xc6, 0x9f, 0x66, 0xc4, 0x1d, 0x69, 0xe0, 0x6d, 0x5e, 0xdf, 0x92, 0xb3, 0x67, 0x39, 0x22,
+ 0xbf, 0x00, 0xc3, 0x26, 0x6d, 0x38, 0xbe, 0xb8, 0xdf, 0xcc, 0xa8, 0xf7, 0x31, 0x2c, 0x88, 0xe4,
+ 0x26, 0x8f, 0xfd, 0x54, 0xcf, 0x37, 0x2c, 0x67, 0x82, 0x6c, 0xd5, 0xbf, 0xd3, 0xa4, 0x8f, 0x1d,
+ 0xbe, 0x18, 0xc5, 0x51, 0x8b, 0xc7, 0x9b, 0xe3, 0x5b, 0xbb, 0xac, 0x44, 0x48, 0xd4, 0xea, 0xc2,
+ 0xd3, 0x68, 0x8c, 0x0f, 0x01, 0xa2, 0x2a, 0xc9, 0x7d, 0x28, 0x88, 0xd9, 0xe0, 0xb4, 0xf7, 0xb8,
+ 0x20, 0x25, 0xfa, 0xa0, 0x78, 0x72, 0x5c, 0x7c, 0xbe, 0x1e, 0x96, 0x09, 0xa9, 0x53, 0xe1, 0x9b,
+ 0x20, 0x34, 0xfe, 0x7e, 0x16, 0xb2, 0x25, 0x1c, 0x90, 0xfb, 0xf4, 0x28, 0xb0, 0x77, 0xee, 0x38,
+ 0x4d, 0x6d, 0x31, 0x1d, 0x20, 0xd4, 0xda, 0x75, 0x34, 0x75, 0x85, 0x82, 0xcc, 0x16, 0xd3, 0x7d,
+ 0x6f, 0xe7, 0x2d, 0x24, 0x54, 0x16, 0xd3, 0x81, 0xb7, 0xf3, 0x56, 0x9c, 0x2c, 0x44, 0x24, 0x06,
+ 0x8c, 0xf0, 0x85, 0x25, 0xe6, 0x20, 0x9c, 0x1c, 0x17, 0x47, 0xf8, 0xfa, 0x33, 0x45, 0x09, 0xb9,
+ 0x08, 0xb9, 0xda, 0xc6, 0xba, 0xd8, 0x01, 0x51, 0x2d, 0xe8, 0x77, 0xda, 0x26, 0x83, 0xb1, 0x3a,
+ 0x57, 0x2b, 0xa5, 0x0d, 0x54, 0x04, 0x0c, 0x47, 0x75, 0x36, 0x1b, 0x76, 0x27, 0xae, 0x0a, 0x08,
+ 0x11, 0xc9, 0x7b, 0x30, 0x7e, 0xbf, 0x52, 0x5e, 0x71, 0x7d, 0xbe, 0x7b, 0x8d, 0x44, 0x93, 0xff,
+ 0xa0, 0x51, 0xb7, 0x50, 0x13, 0x1f, 0x3f, 0x06, 0x14, 0x7c, 0xe3, 0x87, 0xb2, 0x30, 0xae, 0xe8,
+ 0xc9, 0xc8, 0x67, 0xc4, 0x03, 0x69, 0x46, 0xbb, 0x01, 0x28, 0x18, 0xac, 0x94, 0x2b, 0x55, 0x5a,
+ 0x6e, 0x83, 0x8a, 0xe7, 0xd2, 0x48, 0x81, 0x91, 0x1d, 0x44, 0x81, 0xf1, 0x36, 0x00, 0x9f, 0x03,
+ 0xf8, 0xc9, 0x8a, 0x38, 0xa1, 0xd8, 0x49, 0xa8, 0xe3, 0x12, 0x21, 0x93, 0x87, 0x30, 0xbb, 0xe9,
+ 0x75, 0xfd, 0xa0, 0x76, 0xe4, 0x07, 0xb4, 0xc5, 0xb8, 0x6d, 0xb8, 0x6e, 0x53, 0xcc, 0xbf, 0x57,
+ 0x4e, 0x8e, 0x8b, 0x97, 0xd1, 0xb8, 0xc3, 0xf2, 0xb1, 0x1c, 0x3f, 0xc0, 0xea, 0xb8, 0xae, 0xaa,
+ 0xd6, 0x48, 0x63, 0x60, 0x98, 0x30, 0xa1, 0x2a, 0x45, 0xd8, 0xc9, 0x22, 0x1e, 0x93, 0x84, 0xaa,
+ 0x5b, 0x39, 0x59, 0xc4, 0x57, 0x26, 0x1f, 0xb7, 0x74, 0x12, 0xe3, 0x33, 0xaa, 0x42, 0x6e, 0xd0,
+ 0x85, 0x6d, 0x7c, 0x7f, 0x26, 0xda, 0x46, 0x1e, 0xde, 0x24, 0xef, 0xc0, 0x08, 0x7f, 0xbc, 0x13,
+ 0x6f, 0x9c, 0xe7, 0xc2, 0x4b, 0xad, 0xfa, 0xb2, 0xc7, 0x35, 0xe1, 0x7f, 0xc0, 0x1f, 0xf8, 0x9f,
+ 0x33, 0x05, 0x49, 0xa8, 0x44, 0xd7, 0xf5, 0x69, 0x92, 0x3b, 0xaa, 0x8b, 0x6f, 0xa6, 0x29, 0xd1,
+ 0x8d, 0x1f, 0x1b, 0x86, 0x29, 0x1d, 0x4d, 0x7d, 0xe1, 0xcb, 0x0c, 0xf4, 0xc2, 0xf7, 0x05, 0xc8,
+ 0xb3, 0xfe, 0x70, 0xea, 0x54, 0x4a, 0x64, 0xaf, 0xe0, 0xd3, 0x82, 0x80, 0x69, 0x2f, 0xd7, 0xc0,
+ 0x87, 0x83, 0xdd, 0x71, 0xcd, 0x90, 0x8a, 0x2c, 0x2a, 0xcf, 0x50, 0xb9, 0x48, 0x48, 0x91, 0xcf,
+ 0x50, 0xea, 0x7a, 0x08, 0x1f, 0xa4, 0xde, 0x84, 0x11, 0x26, 0xdf, 0x87, 0x2a, 0x18, 0xfc, 0x4a,
+ 0x26, 0xfa, 0xc7, 0x4c, 0x54, 0x38, 0x12, 0xd9, 0x86, 0xfc, 0xaa, 0xed, 0x07, 0x35, 0x4a, 0xdb,
+ 0x03, 0xbc, 0xdd, 0x17, 0x45, 0x57, 0xcd, 0xe2, 0xc3, 0xb8, 0x4f, 0x69, 0x3b, 0xf6, 0xf8, 0x1a,
+ 0x32, 0x23, 0x5f, 0x05, 0x28, 0xbb, 0xed, 0xc0, 0x73, 0x9b, 0xab, 0xee, 0xde, 0xfc, 0x08, 0xde,
+ 0x7d, 0x2f, 0xc5, 0x06, 0x20, 0x42, 0xe0, 0xd7, 0xdf, 0x50, 0xc1, 0x53, 0xe7, 0x05, 0x56, 0xd3,
+ 0xdd, 0x53, 0xd7, 0x41, 0x84, 0x4f, 0xee, 0x40, 0x41, 0x2a, 0x16, 0xb6, 0x3a, 0x7b, 0x1e, 0x4e,
+ 0x90, 0xd1, 0x48, 0xf2, 0xa0, 0x8f, 0x03, 0xab, 0x2b, 0xe0, 0xea, 0x4e, 0x19, 0xa7, 0x21, 0x5f,
+ 0x81, 0x0b, 0x71, 0x98, 0x1c, 0xe5, 0x7c, 0x24, 0x93, 0xab, 0xec, 0x52, 0xe6, 0x7d, 0x2f, 0x16,
+ 0xe4, 0x2e, 0x4c, 0xb3, 0x0e, 0x59, 0xa3, 0xb6, 0xdf, 0xe5, 0x06, 0x56, 0x42, 0x35, 0xf3, 0xa2,
+ 0xd4, 0x44, 0xf1, 0x55, 0xd8, 0x74, 0xeb, 0x07, 0x0a, 0x92, 0x19, 0xa7, 0x32, 0x8e, 0xb3, 0x70,
+ 0x3e, 0x1d, 0x97, 0xfc, 0x55, 0x38, 0x27, 0xfa, 0xa5, 0x49, 0x3d, 0x05, 0x67, 0x00, 0x9b, 0x80,
+ 0x37, 0x45, 0x7f, 0xbf, 0x54, 0x0f, 0x19, 0x84, 0x1b, 0x07, 0x63, 0x11, 0x1b, 0xdc, 0xf4, 0x7a,
+ 0xc8, 0xd7, 0x61, 0x5c, 0xad, 0x36, 0x3b, 0xb8, 0x79, 0x45, 0x9f, 0xba, 0x54, 0x96, 0xc4, 0x86,
+ 0x69, 0x93, 0x7e, 0xa3, 0x4b, 0xfd, 0x40, 0x1a, 0x78, 0x88, 0xa3, 0xfb, 0x62, 0xa2, 0x16, 0x89,
+ 0x10, 0xea, 0x7f, 0x0a, 0x1e, 0xa7, 0xb4, 0xa4, 0x19, 0xde, 0xb7, 0x18, 0xfb, 0x38, 0x3f, 0xe3,
+ 0x3b, 0x59, 0xb8, 0xd0, 0x63, 0x5a, 0xb2, 0x9d, 0x0b, 0x05, 0x2b, 0x65, 0xe7, 0x8a, 0xc9, 0x53,
+ 0xdc, 0x3a, 0xec, 0x32, 0x64, 0x85, 0x28, 0x32, 0xb4, 0x54, 0x38, 0x39, 0x2e, 0x4e, 0x68, 0x2b,
+ 0x2e, 0x5b, 0xad, 0x90, 0x7b, 0x30, 0xc4, 0xba, 0x61, 0x00, 0x23, 0x07, 0xa9, 0xfd, 0x9b, 0x0a,
+ 0x1c, 0x75, 0xa1, 0x63, 0xdf, 0x20, 0x0f, 0xf2, 0x19, 0xc8, 0x6d, 0x6e, 0xae, 0xe2, 0x2a, 0xcf,
+ 0xe1, 0x2c, 0x9d, 0x0c, 0x82, 0xa6, 0xb6, 0xa9, 0x4c, 0x32, 0xda, 0xb0, 0x47, 0x4c, 0x86, 0x4e,
+ 0xbe, 0x14, 0x33, 0xbe, 0x7a, 0xbd, 0xff, 0x92, 0x1c, 0xdc, 0x16, 0xeb, 0x09, 0x4c, 0xa0, 0x8c,
+ 0x9f, 0xcf, 0x46, 0xbb, 0xed, 0x1d, 0xa7, 0x19, 0x50, 0x8f, 0x2c, 0xf0, 0xcd, 0x33, 0x12, 0xa3,
+ 0xcd, 0xf0, 0x37, 0x99, 0x8f, 0x76, 0x62, 0xce, 0x2a, 0xdc, 0x72, 0x5f, 0x57, 0xb6, 0xdc, 0x1c,
+ 0x6e, 0xb9, 0x53, 0x3d, 0x37, 0xd7, 0xd7, 0x53, 0x76, 0x10, 0xdc, 0x32, 0x53, 0x76, 0x89, 0x57,
+ 0x60, 0x72, 0xdd, 0x5d, 0x7e, 0x1c, 0x84, 0x88, 0x6c, 0xab, 0xcc, 0x9b, 0x3a, 0x90, 0x71, 0x7c,
+ 0xd0, 0x6c, 0x50, 0x6f, 0x73, 0xdf, 0x6e, 0x6b, 0x56, 0x06, 0x66, 0x02, 0xce, 0x70, 0xd7, 0xe9,
+ 0xa1, 0x8e, 0x3b, 0xca, 0x71, 0xe3, 0x70, 0xe3, 0xaf, 0x67, 0x65, 0x67, 0x3c, 0x5c, 0x7c, 0x46,
+ 0x5f, 0xb3, 0xdf, 0xd2, 0x5e, 0xb3, 0x67, 0x43, 0x3d, 0x7c, 0x68, 0x9a, 0xb1, 0x78, 0x8a, 0x45,
+ 0xc7, 0xdf, 0x1d, 0x81, 0x09, 0x15, 0x9d, 0xf5, 0x43, 0xa9, 0xd1, 0xf0, 0xd4, 0x7e, 0xb0, 0x1b,
+ 0x0d, 0xcf, 0x44, 0xa8, 0x66, 0xc0, 0x91, 0xeb, 0x6b, 0xc0, 0xf1, 0x35, 0x18, 0x2b, 0xb7, 0x1a,
+ 0xda, 0xb3, 0xb2, 0x91, 0xf2, 0x79, 0xd7, 0x43, 0x24, 0xbe, 0x16, 0x42, 0xf5, 0x72, 0xbd, 0xd5,
+ 0x48, 0x3e, 0x26, 0x47, 0x2c, 0x35, 0xdb, 0x8f, 0xe1, 0x27, 0xb1, 0xfd, 0xb8, 0x0d, 0x63, 0x5b,
+ 0x3e, 0xdd, 0xec, 0xb6, 0xdb, 0xb4, 0x89, 0xd3, 0x2a, 0xcf, 0x6f, 0x65, 0x5d, 0x9f, 0x5a, 0x01,
+ 0x42, 0xd5, 0x0f, 0x08, 0x51, 0xd5, 0x01, 0x1e, 0xed, 0x33, 0xc0, 0xb7, 0x20, 0xbf, 0x41, 0xa9,
+ 0x87, 0x7d, 0x3a, 0x1e, 0x09, 0xdf, 0x1d, 0x4a, 0x3d, 0x8b, 0x75, 0xac, 0x66, 0x13, 0x22, 0x10,
+ 0x35, 0x43, 0x92, 0x89, 0x01, 0x0d, 0x49, 0xc8, 0x4b, 0x30, 0xd1, 0xe9, 0xee, 0x34, 0x9d, 0x3a,
+ 0xf2, 0x15, 0x16, 0x28, 0xe6, 0x38, 0x87, 0x31, 0xb6, 0x3e, 0xf9, 0x12, 0x4c, 0xe2, 0x6d, 0x34,
+ 0x9c, 0x72, 0x53, 0xda, 0xfb, 0xab, 0x56, 0xc6, 0x65, 0xd2, 0x3a, 0x03, 0x59, 0x29, 0x86, 0x52,
+ 0x3a, 0x23, 0x72, 0x0f, 0x46, 0xf7, 0x9c, 0xc0, 0xda, 0xef, 0xee, 0xcc, 0x4f, 0x6b, 0x56, 0x46,
+ 0x77, 0x9d, 0x60, 0xa5, 0xbb, 0xc3, 0x87, 0x3c, 0x64, 0x8d, 0x3b, 0xde, 0x9e, 0x13, 0xec, 0x77,
+ 0x55, 0xe5, 0xf9, 0xc8, 0x1e, 0xe2, 0x2e, 0xd4, 0x60, 0x4a, 0x9f, 0x15, 0x4f, 0xe1, 0x49, 0x37,
+ 0x34, 0xb0, 0xc9, 0x17, 0xc6, 0xee, 0x0d, 0xe5, 0xa1, 0x30, 0xce, 0x4d, 0x6b, 0x4c, 0xd8, 0x08,
+ 0xfb, 0xc7, 0x24, 0xf7, 0xbb, 0x3b, 0xd4, 0x6b, 0xd3, 0x80, 0xfa, 0xe2, 0xea, 0xe7, 0x9b, 0x43,
+ 0xa5, 0x4e, 0xc7, 0x37, 0xfe, 0xd3, 0x2c, 0x8c, 0x96, 0xb6, 0x6b, 0xd5, 0xf6, 0xae, 0x8b, 0x0f,
+ 0xb3, 0xe1, 0x7b, 0x9c, 0xfa, 0x30, 0x1b, 0xbe, 0xc7, 0xa9, 0xaf, 0x70, 0x37, 0x52, 0x2e, 0xef,
+ 0x68, 0xbb, 0xad, 0x5c, 0xde, 0x35, 0xb5, 0x43, 0xf4, 0x34, 0x99, 0x1b, 0xe0, 0x69, 0x32, 0xd4,
+ 0x1e, 0x0f, 0x9d, 0xae, 0x3d, 0x7e, 0x07, 0xc6, 0xab, 0xed, 0x80, 0xee, 0x79, 0xd1, 0xaa, 0x09,
+ 0x15, 0x09, 0x21, 0x58, 0xbd, 0xd0, 0x29, 0xd8, 0x6c, 0x4a, 0x72, 0x8d, 0x75, 0xa8, 0xa9, 0xc6,
+ 0x29, 0xc9, 0x15, 0xdb, 0x31, 0x2d, 0x90, 0x44, 0x34, 0x2a, 0xb1, 0xf9, 0x26, 0xcd, 0x3f, 0xb8,
+ 0x08, 0x35, 0x15, 0x3d, 0xd9, 0xb0, 0x8e, 0x5d, 0x9a, 0x49, 0x37, 0xff, 0x30, 0xfe, 0x66, 0x06,
+ 0xe6, 0xd2, 0xa6, 0x11, 0x79, 0x1f, 0x26, 0x5c, 0x6f, 0xcf, 0x6e, 0x3b, 0xdf, 0xcb, 0x5b, 0xa4,
+ 0xa8, 0x2a, 0x55, 0xb8, 0xaa, 0xa0, 0x51, 0xe1, 0xac, 0x43, 0x94, 0x96, 0xeb, 0x9a, 0x95, 0xd4,
+ 0x0e, 0x51, 0xc0, 0xc6, 0x0f, 0x67, 0x61, 0xbc, 0xd4, 0xe9, 0x3c, 0xe3, 0xa6, 0x81, 0x9f, 0xd3,
+ 0x0e, 0x10, 0x79, 0x2f, 0x0f, 0xdb, 0x35, 0x90, 0x55, 0xe0, 0xaf, 0x66, 0x61, 0x3a, 0x46, 0xa1,
+ 0x7e, 0x7d, 0x66, 0x40, 0x83, 0xc0, 0xec, 0x80, 0x06, 0x81, 0xb9, 0xc1, 0x0c, 0x02, 0x87, 0x9e,
+ 0xe4, 0x50, 0x78, 0x0d, 0x72, 0xa5, 0x4e, 0x27, 0x6e, 0x58, 0xd0, 0xe9, 0x3c, 0xbc, 0xc5, 0x75,
+ 0x2b, 0x76, 0xa7, 0x63, 0x32, 0x0c, 0x6d, 0xa7, 0x1e, 0x19, 0x70, 0xa7, 0x36, 0xde, 0x84, 0x31,
+ 0xe4, 0x85, 0x66, 0x78, 0x97, 0x01, 0xb7, 0x18, 0x61, 0x81, 0xa7, 0xd5, 0x25, 0x36, 0x9f, 0xff,
+ 0x2f, 0x03, 0xc3, 0xf8, 0xfb, 0x19, 0x9d, 0x63, 0x8b, 0xda, 0x1c, 0x2b, 0x28, 0x73, 0x6c, 0x90,
+ 0xd9, 0xf5, 0x0f, 0x72, 0x00, 0xe5, 0x07, 0x66, 0x8d, 0xab, 0xe0, 0xc8, 0x1d, 0x98, 0xb6, 0x9b,
+ 0x4d, 0xf7, 0x90, 0x36, 0x2c, 0xd7, 0x73, 0xf6, 0x9c, 0x36, 0xef, 0x39, 0xf9, 0xda, 0xad, 0x17,
+ 0xa9, 0x6f, 0x60, 0xa2, 0xe8, 0x01, 0x2f, 0x51, 0xf9, 0xb4, 0x68, 0xb0, 0xef, 0x36, 0xa4, 0x32,
+ 0x41, 0xe3, 0x23, 0x8a, 0x52, 0xf8, 0xac, 0xf1, 0x12, 0x95, 0xcf, 0x3e, 0x2a, 0x47, 0xa4, 0x84,
+ 0xac, 0xf1, 0x11, 0x45, 0x29, 0x7c, 0xb8, 0x46, 0xc5, 0x27, 0xab, 0x30, 0x83, 0x10, 0xab, 0xee,
+ 0xd1, 0x06, 0x6d, 0x07, 0x8e, 0xdd, 0xf4, 0x85, 0xfa, 0x09, 0x15, 0x95, 0x89, 0x42, 0xf5, 0xfa,
+ 0x8d, 0x85, 0xe5, 0xa8, 0x8c, 0x5c, 0x87, 0xd1, 0x96, 0xfd, 0xd8, 0xb2, 0xf7, 0xb8, 0xdd, 0xc7,
+ 0x24, 0x57, 0x57, 0x08, 0x90, 0x7a, 0x8c, 0xb4, 0xec, 0xc7, 0xa5, 0x3d, 0xca, 0x5a, 0x41, 0x1f,
+ 0x77, 0x5c, 0x5f, 0x69, 0xc5, 0x48, 0xd4, 0x8a, 0x58, 0x91, 0xda, 0x0a, 0x51, 0x24, 0x5a, 0x61,
+ 0xfc, 0x4a, 0x06, 0x9e, 0xaf, 0xe2, 0x57, 0x04, 0x47, 0x65, 0xda, 0x0e, 0xa8, 0xb7, 0x41, 0xbd,
+ 0x96, 0x83, 0xaf, 0xe0, 0x35, 0x1a, 0x90, 0x97, 0x21, 0x57, 0x32, 0xd7, 0xc5, 0xfc, 0xe5, 0xfb,
+ 0xbd, 0x66, 0x93, 0xc0, 0x4a, 0x43, 0x8d, 0x56, 0xf6, 0x14, 0x55, 0x75, 0x09, 0x26, 0x4a, 0xbe,
+ 0xef, 0xec, 0xb5, 0x5b, 0xdc, 0x9f, 0x22, 0xa7, 0x59, 0x3d, 0x08, 0x78, 0xe2, 0x8d, 0x45, 0x25,
+ 0x31, 0xfe, 0xb3, 0x0c, 0xcc, 0x94, 0x3a, 0x1d, 0xfd, 0x93, 0x75, 0x8b, 0x9b, 0xcc, 0xe0, 0x16,
+ 0x37, 0x0e, 0x4c, 0x69, 0xcd, 0xe5, 0x53, 0x2a, 0x12, 0x7c, 0xfb, 0xf4, 0x0c, 0xff, 0xec, 0x4e,
+ 0x08, 0xb2, 0x7c, 0xfd, 0xb9, 0x38, 0xc6, 0xd8, 0xf8, 0x0f, 0x46, 0x71, 0x0f, 0x11, 0xbb, 0xad,
+ 0xb0, 0x09, 0xcd, 0xa4, 0xd8, 0x84, 0xbe, 0x0d, 0x8a, 0x84, 0xa3, 0x1e, 0x71, 0x8a, 0xac, 0xa8,
+ 0xea, 0x82, 0x22, 0x64, 0x72, 0x10, 0xb7, 0x0e, 0xcd, 0x61, 0x6b, 0x5e, 0x8e, 0x2f, 0xe0, 0xa7,
+ 0x62, 0x18, 0xba, 0x02, 0xa4, 0xda, 0xc6, 0x27, 0x6c, 0x5a, 0x3b, 0x70, 0x3a, 0x0f, 0xa9, 0xe7,
+ 0xec, 0x1e, 0x89, 0x05, 0x80, 0x9d, 0xef, 0x88, 0x52, 0xcb, 0x3f, 0x70, 0x3a, 0xd6, 0x23, 0x2c,
+ 0x37, 0x53, 0x68, 0xc8, 0x07, 0x30, 0x6a, 0xd2, 0x43, 0xcf, 0x09, 0xa4, 0xcd, 0xd3, 0x54, 0xa8,
+ 0xda, 0x44, 0x28, 0x5f, 0x0b, 0x1e, 0xff, 0xa1, 0xee, 0x8a, 0xa2, 0x9c, 0x2c, 0x72, 0x21, 0x85,
+ 0xdb, 0x36, 0x4d, 0x46, 0xad, 0x2d, 0x6d, 0xd7, 0x7a, 0xc9, 0x28, 0xe4, 0x1a, 0x0c, 0xa3, 0xa4,
+ 0x23, 0xee, 0x02, 0xe8, 0x2b, 0x84, 0xb2, 0xb3, 0x2a, 0x86, 0x21, 0x06, 0xb9, 0x04, 0x10, 0xbe,
+ 0x11, 0xfb, 0xf3, 0x79, 0x94, 0xd2, 0x15, 0x48, 0x5c, 0x4c, 0x1b, 0x3b, 0x93, 0x98, 0xb6, 0x0a,
+ 0x05, 0x93, 0xbb, 0x1d, 0x36, 0x4a, 0x1d, 0x7c, 0x88, 0xf4, 0xe7, 0x01, 0x57, 0xf2, 0xe5, 0x93,
+ 0xe3, 0xe2, 0x0b, 0xc2, 0x25, 0xb1, 0x61, 0xd9, 0x1d, 0xfe, 0x7e, 0xa9, 0x6d, 0x23, 0x71, 0x4a,
+ 0xf2, 0x36, 0x0c, 0xb1, 0xad, 0x57, 0xd8, 0x91, 0xca, 0x07, 0x9d, 0x68, 0x37, 0xe6, 0x8b, 0xb3,
+ 0xee, 0x6a, 0x7b, 0x02, 0x92, 0x10, 0x0b, 0xa6, 0xf4, 0xe9, 0x2e, 0x4c, 0x8a, 0xe6, 0xa3, 0xfe,
+ 0xd4, 0xcb, 0xc5, 0x2b, 0x8f, 0x80, 0x59, 0x75, 0x04, 0xaa, 0x2b, 0x20, 0xb6, 0x48, 0x97, 0x21,
+ 0xbf, 0x59, 0xde, 0xd8, 0x70, 0xbd, 0x80, 0x5f, 0x75, 0xa2, 0x93, 0x85, 0xc1, 0x4c, 0xbb, 0xbd,
+ 0x47, 0xf9, 0x59, 0x1c, 0xd4, 0x3b, 0x56, 0x87, 0xa1, 0xa9, 0x67, 0xb1, 0x24, 0xfd, 0xe4, 0x6c,
+ 0x48, 0x7f, 0x35, 0x0b, 0x2f, 0x87, 0x52, 0xd1, 0x03, 0xaf, 0x56, 0x5a, 0x5b, 0xad, 0x36, 0x36,
+ 0x84, 0x9a, 0x64, 0xc3, 0x73, 0x1f, 0x39, 0x0d, 0xea, 0x3d, 0xbc, 0x79, 0xca, 0x99, 0xbe, 0xca,
+ 0x97, 0x39, 0x7f, 0x0d, 0xcb, 0x6a, 0xd6, 0x76, 0x8a, 0xf0, 0x29, 0xb6, 0xa7, 0x4e, 0x27, 0xf1,
+ 0x38, 0xb6, 0xf2, 0x9c, 0x19, 0x31, 0x20, 0xdf, 0x9f, 0x81, 0xf3, 0xe9, 0x1f, 0x22, 0x54, 0x67,
+ 0x45, 0x79, 0x45, 0xef, 0xf1, 0xb5, 0x4b, 0xaf, 0x9d, 0x1c, 0x17, 0x5f, 0xf6, 0xed, 0x56, 0xd3,
+ 0x72, 0x1a, 0xbc, 0x36, 0xa7, 0x4e, 0xad, 0x8e, 0x40, 0xd0, 0xea, 0xed, 0x51, 0xd3, 0xe7, 0x41,
+ 0x1e, 0xed, 0xf3, 0x99, 0x25, 0x80, 0xbc, 0x7c, 0x70, 0x30, 0x7e, 0x23, 0x03, 0xca, 0x12, 0xcc,
+ 0x9b, 0xb4, 0xe1, 0x78, 0xb4, 0x1e, 0x88, 0xe3, 0x5d, 0xf8, 0x0a, 0x72, 0x58, 0xcc, 0xb8, 0x12,
+ 0x61, 0xe4, 0x7d, 0x18, 0x15, 0xc7, 0x90, 0xd8, 0x76, 0xe5, 0xd2, 0x15, 0x4f, 0x19, 0xdc, 0xa9,
+ 0x34, 0x71, 0x84, 0x49, 0x22, 0xb6, 0xeb, 0xdf, 0xdb, 0xde, 0x2c, 0x37, 0x6d, 0xa7, 0xe5, 0x8b,
+ 0xb3, 0x04, 0xbb, 0xf5, 0xa3, 0xc3, 0xc0, 0xaa, 0x23, 0x54, 0xdd, 0xf5, 0x43, 0x54, 0xe3, 0xae,
+ 0x7c, 0x49, 0x39, 0xc5, 0x42, 0xb8, 0x08, 0xc3, 0x0f, 0x23, 0x3d, 0xdd, 0xd2, 0xd8, 0xc9, 0x71,
+ 0x91, 0x4f, 0x17, 0x93, 0xc3, 0x0d, 0x0a, 0x63, 0xe1, 0xd4, 0x65, 0xbc, 0xd8, 0x0f, 0xe4, 0x35,
+ 0xc9, 0x79, 0xb1, 0x49, 0x6c, 0x22, 0x94, 0x89, 0x7a, 0xcb, 0xed, 0x06, 0x22, 0x64, 0x11, 0x01,
+ 0xbb, 0x87, 0xb6, 0x1b, 0x38, 0xd3, 0xd5, 0xd6, 0x09, 0x34, 0x45, 0xa0, 0xfa, 0xd1, 0x0c, 0x4c,
+ 0xe9, 0xd3, 0x96, 0x5c, 0x87, 0x11, 0xe1, 0x0e, 0x98, 0x41, 0xb5, 0x27, 0xe3, 0x36, 0xc2, 0x1d,
+ 0x01, 0x35, 0xf7, 0x3f, 0x81, 0xc5, 0xe4, 0x46, 0xc1, 0x41, 0x08, 0x4d, 0x28, 0x37, 0xd6, 0x39,
+ 0xc8, 0x94, 0x65, 0xc4, 0x60, 0x57, 0x59, 0xbf, 0xdb, 0x0c, 0xd4, 0x77, 0x4b, 0x0f, 0x21, 0xa6,
+ 0x28, 0x31, 0xca, 0x30, 0xc2, 0xb7, 0xd6, 0x98, 0x01, 0x64, 0xe6, 0x0c, 0x06, 0x90, 0xc6, 0x71,
+ 0x06, 0xa0, 0x56, 0x5b, 0xb9, 0x4f, 0x8f, 0x36, 0x6c, 0x07, 0xcf, 0x6f, 0x7e, 0x8c, 0xdd, 0x17,
+ 0x6b, 0x78, 0x42, 0x3c, 0xb4, 0xf3, 0x23, 0xef, 0x80, 0x1e, 0x69, 0x0f, 0xed, 0x12, 0x15, 0xcf,
+ 0x4a, 0xcf, 0x79, 0x64, 0x07, 0x94, 0x11, 0x66, 0x91, 0x90, 0x9f, 0x95, 0x1c, 0x1a, 0xa3, 0x54,
+ 0x90, 0xc9, 0x57, 0x61, 0x2a, 0xfa, 0x15, 0x9a, 0x0b, 0x4c, 0x85, 0xfb, 0x84, 0x5e, 0xb8, 0x74,
+ 0xe9, 0xe4, 0xb8, 0xb8, 0xa0, 0x70, 0x8d, 0x1b, 0x12, 0xc4, 0x98, 0x19, 0xbf, 0x94, 0x41, 0x23,
+ 0x19, 0xd9, 0xc0, 0x2b, 0x30, 0x14, 0x9a, 0x75, 0x4f, 0x88, 0x4d, 0x58, 0x7f, 0x12, 0xc5, 0x72,
+ 0x26, 0x6e, 0x45, 0x2d, 0xc1, 0xa3, 0x4b, 0x6f, 0x01, 0x2b, 0x25, 0x77, 0x61, 0x74, 0xa0, 0x6f,
+ 0xc6, 0x29, 0x96, 0xf2, 0xad, 0x92, 0x1a, 0x47, 0xe1, 0xde, 0xf6, 0xe6, 0x77, 0xef, 0x28, 0xfc,
+ 0x44, 0x16, 0xa6, 0x59, 0xbf, 0x96, 0xba, 0xc1, 0xbe, 0xeb, 0x39, 0xc1, 0xd1, 0x33, 0xab, 0x37,
+ 0x7e, 0x57, 0xbb, 0x92, 0x2d, 0xc8, 0xc3, 0x4c, 0x6d, 0xdb, 0x40, 0xea, 0xe3, 0x7f, 0x36, 0x0c,
+ 0xb3, 0x29, 0x54, 0xe4, 0x0d, 0xed, 0x69, 0x67, 0x5e, 0xba, 0xfb, 0x7f, 0xe7, 0xb8, 0x38, 0x21,
+ 0xd1, 0x37, 0x23, 0xf7, 0xff, 0x45, 0xdd, 0xe2, 0x8c, 0xf7, 0x14, 0xbe, 0xf4, 0xa8, 0x16, 0x67,
+ 0xba, 0x9d, 0xd9, 0x35, 0x18, 0x36, 0xdd, 0x26, 0x95, 0x56, 0x96, 0x28, 0x70, 0x79, 0x0c, 0xa0,
+ 0x59, 0x95, 0x30, 0x00, 0x59, 0x81, 0x51, 0xf6, 0xc7, 0x9a, 0xdd, 0x11, 0xef, 0xa5, 0x24, 0x54,
+ 0x0a, 0x20, 0xb4, 0xe3, 0xb4, 0xf7, 0x54, 0xbd, 0x40, 0x93, 0x5a, 0x2d, 0xbb, 0xa3, 0x49, 0x86,
+ 0x1c, 0x51, 0xd3, 0x2f, 0xe4, 0x7b, 0xeb, 0x17, 0x32, 0xa7, 0xea, 0x17, 0x76, 0x01, 0x6a, 0xce,
+ 0x5e, 0xdb, 0x69, 0xef, 0x95, 0x9a, 0x7b, 0x22, 0x68, 0xc2, 0xb5, 0xde, 0xa3, 0x70, 0x3d, 0x42,
+ 0xc6, 0x89, 0xfb, 0x3c, 0x1a, 0x35, 0x70, 0x98, 0x65, 0x37, 0xf7, 0x34, 0xe7, 0x2e, 0x85, 0x33,
+ 0x59, 0x07, 0x28, 0xd5, 0x03, 0xe7, 0x11, 0x9b, 0xc2, 0xbe, 0x10, 0xe3, 0xe4, 0x27, 0x97, 0x4b,
+ 0xf7, 0xe9, 0x11, 0x5e, 0x3d, 0xe4, 0xf3, 0xb0, 0x8d, 0xa8, 0x6c, 0x25, 0x68, 0x9e, 0x3b, 0x11,
+ 0x07, 0xd2, 0x81, 0x73, 0xa5, 0x46, 0xc3, 0x61, 0x6d, 0xb0, 0x9b, 0x9b, 0x3c, 0xdc, 0x05, 0xb2,
+ 0x9e, 0x48, 0x67, 0x7d, 0x4d, 0xbe, 0x84, 0xda, 0x21, 0x95, 0x25, 0xa3, 0x64, 0xc4, 0xaa, 0x49,
+ 0x67, 0x6c, 0xd4, 0x60, 0x4a, 0x6f, 0xbc, 0x1e, 0xec, 0x61, 0x02, 0xf2, 0x66, 0xad, 0x64, 0xd5,
+ 0x56, 0x4a, 0x37, 0x0b, 0x19, 0x52, 0x80, 0x09, 0xf1, 0x6b, 0xd1, 0x5a, 0x7c, 0xeb, 0x76, 0x21,
+ 0xab, 0x41, 0xde, 0xba, 0xb9, 0x58, 0xc8, 0x2d, 0x64, 0xe7, 0x33, 0x31, 0x3f, 0xcb, 0xd1, 0x42,
+ 0x9e, 0xab, 0x84, 0x8d, 0x5f, 0xcb, 0x40, 0x5e, 0x7e, 0x3b, 0xb9, 0x0d, 0xb9, 0x5a, 0x6d, 0x25,
+ 0xe6, 0x19, 0x19, 0x9d, 0x32, 0x7c, 0x3f, 0xf5, 0x7d, 0xd5, 0xfc, 0x9d, 0x11, 0x30, 0xba, 0xcd,
+ 0xd5, 0x9a, 0x90, 0x41, 0x24, 0x5d, 0xb4, 0x79, 0x73, 0xba, 0x14, 0x77, 0xb1, 0xdb, 0x90, 0xbb,
+ 0xb7, 0xbd, 0x29, 0x2e, 0x59, 0x92, 0x2e, 0xda, 0x4f, 0x39, 0xdd, 0x47, 0x87, 0xea, 0x2e, 0xcf,
+ 0x08, 0x0c, 0x13, 0xc6, 0x95, 0x89, 0xcc, 0x0f, 0xdd, 0x96, 0x1b, 0x46, 0x38, 0x10, 0x87, 0x2e,
+ 0x83, 0x98, 0xa2, 0x84, 0x89, 0x22, 0xab, 0x6e, 0xdd, 0x6e, 0x8a, 0xd3, 0x1b, 0x45, 0x91, 0x26,
+ 0x03, 0x98, 0x1c, 0x6e, 0xfc, 0x76, 0x06, 0x0a, 0x28, 0xb0, 0xa1, 0xf9, 0xba, 0x7b, 0x40, 0xdb,
+ 0x0f, 0x6f, 0x92, 0x37, 0xe5, 0x92, 0xcb, 0x84, 0x8a, 0xae, 0x61, 0x5c, 0x72, 0xb1, 0xb7, 0x40,
+ 0xb1, 0xec, 0x94, 0x20, 0x12, 0xd9, 0xc1, 0x9d, 0xcf, 0x4f, 0x09, 0x22, 0x51, 0x84, 0x61, 0xfc,
+ 0x1c, 0xb1, 0x39, 0xe2, 0x97, 0x07, 0x0c, 0x60, 0x72, 0xb8, 0xb2, 0x37, 0xfd, 0x54, 0x36, 0xd1,
+ 0x86, 0xc5, 0xef, 0x2a, 0x07, 0x6e, 0xbd, 0x71, 0x03, 0xed, 0xd7, 0x1f, 0xc2, 0x5c, 0xbc, 0x4b,
+ 0x50, 0x09, 0x59, 0x82, 0x69, 0x1d, 0x2e, 0xf5, 0x91, 0x17, 0x52, 0xeb, 0x7a, 0xb8, 0x68, 0xc6,
+ 0xf1, 0x8d, 0xff, 0x3d, 0x03, 0x63, 0xf8, 0xa7, 0xd9, 0x6d, 0xa2, 0x19, 0x61, 0x69, 0xbb, 0x26,
+ 0x54, 0x23, 0xaa, 0x30, 0x67, 0x1f, 0xfa, 0x96, 0xd0, 0xa3, 0x68, 0x7b, 0x4c, 0x88, 0x2c, 0x48,
+ 0xf9, 0xfb, 0x86, 0x54, 0xca, 0x85, 0xa4, 0xfc, 0x21, 0xc4, 0x8f, 0x91, 0x0a, 0x64, 0x34, 0x3e,
+ 0xde, 0xae, 0xb1, 0xe9, 0xa7, 0xda, 0xf5, 0x20, 0x9d, 0xdb, 0xd4, 0x8d, 0x8f, 0x39, 0x1a, 0x9a,
+ 0xf5, 0x6c, 0xd7, 0x4a, 0xe6, 0xba, 0x66, 0xd6, 0xc3, 0xbe, 0x51, 0xd3, 0x4b, 0x09, 0x24, 0xe3,
+ 0xe7, 0xc7, 0xe3, 0x1d, 0x28, 0x0e, 0xbc, 0x33, 0xae, 0x8d, 0x77, 0x60, 0xb8, 0xd4, 0x6c, 0xba,
+ 0x87, 0x62, 0x97, 0x90, 0x37, 0xd7, 0xb0, 0xff, 0xf8, 0x79, 0x86, 0x6a, 0x3d, 0xcd, 0x29, 0x95,
+ 0x01, 0x48, 0x19, 0xc6, 0x4a, 0xdb, 0xb5, 0x6a, 0xb5, 0xb2, 0xb9, 0xc9, 0x1d, 0xf0, 0x72, 0x4b,
+ 0xaf, 0xca, 0xfe, 0x71, 0x9c, 0x86, 0x15, 0xb7, 0x57, 0x88, 0xe4, 0xf7, 0x88, 0x8e, 0xbc, 0x07,
+ 0x70, 0xcf, 0x75, 0xda, 0x5c, 0x8d, 0x29, 0x1a, 0xcf, 0x6e, 0xe0, 0xe3, 0x1f, 0xb9, 0x4e, 0x5b,
+ 0xe8, 0x3d, 0xd9, 0xb7, 0x47, 0x48, 0xa6, 0xf2, 0x37, 0xeb, 0xe9, 0x25, 0x97, 0x9b, 0x06, 0x0e,
+ 0x47, 0x3d, 0xbd, 0xe3, 0x26, 0xf4, 0x6d, 0x12, 0x8d, 0xb4, 0x60, 0xba, 0xd6, 0xdd, 0xdb, 0xa3,
+ 0x6c, 0x67, 0x17, 0xfa, 0xa4, 0x11, 0x71, 0x95, 0x0e, 0xc3, 0x1e, 0xf1, 0xfb, 0x08, 0xbb, 0x0c,
+ 0xf9, 0x4b, 0x6f, 0xb0, 0x89, 0xfc, 0xed, 0xe3, 0xa2, 0xb0, 0x83, 0x60, 0xa2, 0x9a, 0x2f, 0xe9,
+ 0x93, 0xda, 0xa4, 0x38, 0x6f, 0xf2, 0x00, 0x46, 0xf8, 0x9b, 0x91, 0x70, 0x28, 0x7b, 0xa9, 0xcf,
+ 0xa2, 0xe1, 0x88, 0xbd, 0x5e, 0x25, 0x79, 0x29, 0xd9, 0x86, 0x7c, 0xd9, 0xf1, 0xea, 0x4d, 0x5a,
+ 0xae, 0x8a, 0xb3, 0xff, 0xe5, 0x3e, 0x2c, 0x25, 0x2a, 0xef, 0x97, 0x3a, 0xfe, 0xaa, 0x3b, 0xaa,
+ 0x2c, 0x20, 0x31, 0xc8, 0xdf, 0xcc, 0xc0, 0xf3, 0xe1, 0xd7, 0x97, 0xf6, 0x68, 0x3b, 0x58, 0xb3,
+ 0x83, 0xfa, 0x3e, 0xf5, 0x44, 0x2f, 0x8d, 0xf5, 0xeb, 0xa5, 0xcf, 0x27, 0x7a, 0xe9, 0x6a, 0xd4,
+ 0x4b, 0x36, 0x63, 0x66, 0xb5, 0x38, 0xb7, 0x64, 0x9f, 0xf5, 0xab, 0x95, 0x58, 0x00, 0xd1, 0x6b,
+ 0xa8, 0x70, 0x48, 0x7e, 0xb5, 0x4f, 0x83, 0x23, 0x64, 0xe1, 0x48, 0x14, 0xfe, 0xd6, 0x2c, 0x61,
+ 0x43, 0x28, 0xb9, 0x2f, 0xbd, 0x37, 0xb9, 0x54, 0x72, 0xb9, 0x0f, 0x6f, 0xee, 0xd1, 0x39, 0xdb,
+ 0xc7, 0x4f, 0x9b, 0x8f, 0xf6, 0xaa, 0xbd, 0x23, 0x04, 0x91, 0x53, 0x46, 0x7b, 0xd5, 0x8e, 0x46,
+ 0xbb, 0x69, 0xc7, 0x47, 0x7b, 0xd5, 0xde, 0x21, 0x65, 0xee, 0x72, 0xce, 0xfd, 0x93, 0x2f, 0xf5,
+ 0xe3, 0x56, 0xde, 0xe0, 0x27, 0x73, 0x8a, 0xeb, 0xf9, 0x97, 0x61, 0xac, 0xd6, 0xb1, 0xeb, 0xb4,
+ 0xe9, 0xec, 0x06, 0xe2, 0xa9, 0xfd, 0x95, 0x3e, 0xac, 0x42, 0x5c, 0xf1, 0xb4, 0x2a, 0x7f, 0xaa,
+ 0xd7, 0xa4, 0x10, 0x87, 0x7d, 0xe1, 0xe6, 0xc6, 0x9a, 0x78, 0x6d, 0xef, 0xf7, 0x85, 0x9b, 0x1b,
+ 0x6b, 0x42, 0xe6, 0xe8, 0xb4, 0x34, 0x99, 0x63, 0x63, 0x8d, 0x74, 0x60, 0x6a, 0x93, 0x7a, 0x9e,
+ 0xbd, 0xeb, 0x7a, 0x2d, 0xae, 0xbf, 0xe4, 0x3e, 0x6f, 0xd7, 0xfa, 0xf1, 0xd3, 0x08, 0xb8, 0xda,
+ 0x2e, 0x90, 0x30, 0x2b, 0xae, 0xf4, 0x8c, 0xf1, 0x67, 0x7d, 0xb2, 0xe4, 0x04, 0x3b, 0xdd, 0xfa,
+ 0x01, 0x0d, 0xe6, 0x67, 0x4e, 0xed, 0x93, 0x10, 0x97, 0xf7, 0xc9, 0x8e, 0xfc, 0xa9, 0xf6, 0x49,
+ 0x88, 0x63, 0xfc, 0xe3, 0x1c, 0x5c, 0xe8, 0xd1, 0x05, 0x64, 0x5d, 0x6e, 0xb9, 0x19, 0x4d, 0x8b,
+ 0xdd, 0x03, 0xfd, 0xfa, 0xa9, 0xbb, 0xf0, 0x2a, 0x14, 0x96, 0xef, 0xa3, 0xac, 0xce, 0x1f, 0x72,
+ 0xca, 0x25, 0x79, 0x58, 0xa1, 0xa6, 0x95, 0x1e, 0xa0, 0x8d, 0xb0, 0x7c, 0x00, 0xaa, 0x6b, 0xce,
+ 0xf0, 0x09, 0xca, 0x85, 0xbf, 0x9e, 0x85, 0x21, 0x3c, 0x38, 0x63, 0x21, 0xc0, 0x32, 0x67, 0x0a,
+ 0x01, 0xf6, 0x05, 0x98, 0x58, 0xbe, 0xcf, 0x6f, 0xd2, 0x2b, 0xb6, 0xbf, 0x2f, 0xb6, 0x75, 0x34,
+ 0xe4, 0xa0, 0x07, 0x96, 0xb8, 0x78, 0xef, 0xdb, 0x9a, 0xcc, 0xaa, 0x51, 0x90, 0x2d, 0x98, 0xe5,
+ 0xdf, 0xe6, 0xec, 0x3a, 0x75, 0x1e, 0x49, 0xc8, 0xb1, 0x9b, 0x62, 0x8f, 0x7f, 0xf9, 0xe4, 0xb8,
+ 0x58, 0xa4, 0x07, 0x68, 0xfd, 0x2c, 0xca, 0x2d, 0x1f, 0x11, 0x54, 0x33, 0xe8, 0x14, 0x7a, 0x35,
+ 0xbc, 0x89, 0x39, 0x86, 0x15, 0xb2, 0xda, 0x58, 0xdd, 0x0c, 0x97, 0x23, 0x19, 0x7f, 0x32, 0x0c,
+ 0x0b, 0xbd, 0xb7, 0x67, 0xf2, 0x45, 0x7d, 0x00, 0xaf, 0x9c, 0xba, 0xa1, 0x9f, 0x3e, 0x86, 0x5f,
+ 0x82, 0xb9, 0xe5, 0x76, 0x40, 0xbd, 0x8e, 0xe7, 0xc8, 0x80, 0x36, 0x2b, 0xae, 0x2f, 0xad, 0xcd,
+ 0xd1, 0xec, 0x9b, 0x86, 0xe5, 0x42, 0xb7, 0x8a, 0xb6, 0xef, 0x0a, 0xab, 0x54, 0x0e, 0x64, 0x19,
+ 0xa6, 0x14, 0x78, 0xb3, 0xbb, 0xa7, 0xbe, 0x4e, 0xa9, 0x3c, 0x9b, 0x5d, 0xd5, 0x14, 0x37, 0x46,
+ 0x84, 0x16, 0xed, 0xec, 0xca, 0x58, 0xbf, 0xb7, 0x7d, 0xbf, 0x26, 0x86, 0x93, 0x5b, 0xb4, 0x23,
+ 0xd4, 0xfa, 0xe8, 0xf0, 0x40, 0xdb, 0x5f, 0x23, 0xe4, 0x85, 0x5f, 0xca, 0x89, 0x19, 0xf5, 0x32,
+ 0xe4, 0x6a, 0xdd, 0x1d, 0xf5, 0xcd, 0xcd, 0xd7, 0x0e, 0x38, 0x56, 0x4a, 0x3e, 0x07, 0x60, 0xd2,
+ 0x8e, 0xeb, 0x3b, 0x81, 0xeb, 0x1d, 0xa9, 0x2e, 0x95, 0x5e, 0x08, 0xd5, 0xbd, 0x3e, 0x24, 0x94,
+ 0xac, 0xc0, 0x74, 0xf4, 0xeb, 0xc1, 0x61, 0x5b, 0xe8, 0x92, 0xc7, 0xb8, 0x76, 0x25, 0x22, 0xb7,
+ 0x5c, 0x56, 0xa6, 0x1e, 0xd9, 0x31, 0x32, 0xb2, 0x08, 0xf9, 0x6d, 0xd7, 0x3b, 0xd8, 0x65, 0x63,
+ 0x3c, 0x14, 0x09, 0x15, 0x87, 0x02, 0xa6, 0x1e, 0x9e, 0x12, 0x8f, 0x2d, 0x97, 0xe5, 0xf6, 0x23,
+ 0xc7, 0x73, 0xf1, 0x45, 0x4f, 0xb5, 0x69, 0xa1, 0x11, 0x58, 0x73, 0x66, 0x8f, 0xc0, 0xe4, 0x1a,
+ 0x0c, 0x97, 0xea, 0x81, 0xeb, 0x09, 0x83, 0x16, 0x3e, 0x53, 0x18, 0x40, 0x9b, 0x29, 0x0c, 0xc0,
+ 0x3a, 0xd1, 0xa4, 0xbb, 0xe2, 0x75, 0x07, 0x3b, 0xd1, 0xa3, 0xbb, 0x9a, 0xa7, 0x3e, 0xdd, 0x65,
+ 0x42, 0x91, 0x49, 0x77, 0x51, 0xf1, 0xa1, 0x05, 0xb8, 0xdb, 0x4d, 0xa8, 0xcc, 0x04, 0x9a, 0xf1,
+ 0xbb, 0x63, 0x3d, 0xa7, 0x3c, 0x3b, 0x85, 0xce, 0x36, 0xe5, 0x57, 0xed, 0x01, 0xa6, 0xfc, 0x1b,
+ 0xa1, 0x2f, 0x89, 0x1a, 0x9e, 0x02, 0x21, 0xea, 0x31, 0xc8, 0x71, 0x16, 0x7e, 0x39, 0x7f, 0x96,
+ 0x49, 0x24, 0x3a, 0x29, 0x3b, 0x68, 0x27, 0xe5, 0x06, 0xea, 0x24, 0xb2, 0x04, 0x93, 0x61, 0x88,
+ 0xc4, 0x0d, 0x3b, 0xd0, 0xb6, 0xb5, 0x30, 0xae, 0xa5, 0xd5, 0xb1, 0x03, 0x75, 0x5b, 0xd3, 0x49,
+ 0xc8, 0xbb, 0x30, 0x2e, 0x1c, 0xaa, 0x90, 0xc3, 0x70, 0x64, 0x29, 0x24, 0xbd, 0xaf, 0x62, 0xf4,
+ 0x2a, 0x3a, 0x5b, 0xcd, 0x1b, 0x4e, 0x87, 0x36, 0x9d, 0x36, 0xad, 0xe1, 0x63, 0x85, 0x98, 0x31,
+ 0xfc, 0xd1, 0x56, 0x94, 0x58, 0xfc, 0x1d, 0x43, 0xd3, 0x1f, 0x6a, 0x44, 0xf1, 0xc9, 0x3a, 0x7a,
+ 0xa6, 0xc9, 0xca, 0xed, 0x14, 0xbd, 0x55, 0x77, 0xcf, 0x91, 0x36, 0xf4, 0xd2, 0x4e, 0xd1, 0xb3,
+ 0x9a, 0x0c, 0x1a, 0xb3, 0x53, 0xe4, 0xa8, 0xec, 0x86, 0xc3, 0x7e, 0x54, 0x2b, 0xe2, 0x25, 0x11,
+ 0x6f, 0x38, 0x48, 0xa4, 0x3b, 0x2e, 0x70, 0x24, 0x59, 0xcd, 0x72, 0xcb, 0x76, 0x9a, 0x22, 0x0a,
+ 0x41, 0x54, 0x0d, 0x65, 0xd0, 0x78, 0x35, 0x88, 0x4a, 0xea, 0x30, 0x61, 0xd2, 0xdd, 0x0d, 0xcf,
+ 0x0d, 0x68, 0x3d, 0xa0, 0x0d, 0x21, 0xd5, 0xc9, 0x8b, 0xcd, 0x92, 0xeb, 0x72, 0x89, 0x15, 0x6d,
+ 0xe3, 0x33, 0xdf, 0x3e, 0x2e, 0x02, 0x03, 0x71, 0xaf, 0x98, 0x93, 0xe3, 0xe2, 0x05, 0x36, 0xfe,
+ 0x1d, 0x49, 0xac, 0x9e, 0x4e, 0x2a, 0x53, 0xf2, 0x4d, 0xb6, 0x5f, 0x87, 0x5d, 0x12, 0x55, 0x36,
+ 0xd1, 0xa3, 0xb2, 0xb7, 0x52, 0x2b, 0x2b, 0x2a, 0xbd, 0x9d, 0x5a, 0x69, 0x6a, 0x25, 0xe4, 0x3d,
+ 0x18, 0x2f, 0x57, 0xcb, 0x6e, 0x7b, 0xd7, 0xd9, 0xab, 0xad, 0x94, 0x50, 0x34, 0x14, 0x1e, 0x51,
+ 0x75, 0xc7, 0xaa, 0x23, 0xdc, 0xf2, 0xf7, 0x6d, 0xcd, 0x31, 0x36, 0xc2, 0x27, 0x77, 0x61, 0x4a,
+ 0xfe, 0x34, 0xe9, 0xee, 0x96, 0x59, 0x45, 0x89, 0x50, 0xba, 0xa1, 0x85, 0x1c, 0x58, 0x47, 0x74,
+ 0x3d, 0xf5, 0xa6, 0x10, 0x23, 0x63, 0x93, 0xb1, 0x42, 0x3b, 0x4d, 0xf7, 0x88, 0x7d, 0xde, 0xa6,
+ 0x43, 0x3d, 0x94, 0x01, 0xc5, 0x64, 0x6c, 0x84, 0x25, 0x56, 0xe0, 0xe8, 0xef, 0xa7, 0x3a, 0x11,
+ 0x59, 0x87, 0x19, 0x31, 0xc5, 0x1f, 0x3a, 0xbe, 0xb3, 0xe3, 0x34, 0x9d, 0xe0, 0x08, 0xa5, 0x3f,
+ 0x21, 0xc0, 0xc8, 0x75, 0xf1, 0x28, 0x2c, 0x55, 0x98, 0x25, 0x49, 0x8d, 0x5f, 0xcb, 0xc2, 0x0b,
+ 0xfd, 0x6e, 0x42, 0xa4, 0xa6, 0x6f, 0x66, 0x57, 0x07, 0xb8, 0x3d, 0x9d, 0xbe, 0x9d, 0x2d, 0xc3,
+ 0xd4, 0x03, 0xc5, 0xa4, 0x2f, 0x34, 0xb1, 0xc4, 0xce, 0x50, 0x8d, 0xfd, 0xf4, 0xd9, 0x1e, 0x23,
+ 0x5a, 0x78, 0x24, 0xb6, 0xb9, 0x8f, 0xeb, 0xa2, 0x79, 0x1b, 0xc6, 0xca, 0x6e, 0x3b, 0xa0, 0x8f,
+ 0x83, 0x58, 0x40, 0x02, 0x0e, 0x8c, 0xbb, 0xa7, 0x4a, 0x54, 0xe3, 0xdf, 0x64, 0xe1, 0xc5, 0xbe,
+ 0x57, 0x01, 0xb2, 0xa9, 0xf7, 0xda, 0xb5, 0x41, 0xee, 0x0f, 0xa7, 0x77, 0xdb, 0x62, 0xc2, 0xee,
+ 0xee, 0x54, 0x0f, 0xa8, 0x85, 0xff, 0x21, 0x23, 0x3a, 0xe9, 0xd3, 0x30, 0x8a, 0x55, 0x85, 0x5d,
+ 0xc4, 0xb5, 0x64, 0xb8, 0x0b, 0x3b, 0xba, 0x96, 0x8c, 0xa3, 0x91, 0x5b, 0x90, 0x2f, 0xdb, 0xcd,
+ 0xa6, 0x12, 0xae, 0x01, 0xa5, 0xf9, 0x3a, 0xc2, 0x62, 0xc6, 0xa3, 0x12, 0x91, 0xc9, 0x3e, 0xfc,
+ 0x6f, 0xe5, 0xac, 0xc0, 0xcd, 0x52, 0x90, 0xc5, 0x8e, 0x0b, 0x05, 0x19, 0x83, 0xbc, 0xd6, 0xdd,
+ 0xd0, 0x21, 0x9c, 0x07, 0x79, 0x65, 0x00, 0x2d, 0xc8, 0x2b, 0x03, 0x18, 0xbf, 0x9e, 0x83, 0x4b,
+ 0xfd, 0xef, 0xb3, 0x64, 0x4b, 0x1f, 0x82, 0xd7, 0x07, 0xba, 0x05, 0x9f, 0x3e, 0x06, 0x32, 0x64,
+ 0x32, 0xef, 0x90, 0xab, 0x49, 0xf7, 0x97, 0xef, 0x1c, 0x17, 0x15, 0x8b, 0xe4, 0x7b, 0xae, 0xd3,
+ 0x56, 0xde, 0x4c, 0xbe, 0xa1, 0x49, 0x86, 0xfc, 0xf5, 0xfe, 0xf6, 0x60, 0x5f, 0x16, 0xd1, 0xf1,
+ 0x7d, 0x65, 0x50, 0x89, 0xf2, 0xf3, 0x50, 0x88, 0x93, 0x92, 0x2b, 0x30, 0x84, 0x1f, 0xa0, 0xf8,
+ 0xf0, 0xc4, 0x38, 0x60, 0xf9, 0xc2, 0x9a, 0x98, 0x3b, 0x18, 0xc1, 0x02, 0xed, 0x01, 0x74, 0xdd,
+ 0xa0, 0x88, 0x60, 0xc1, 0xcd, 0x09, 0x92, 0xfa, 0xc1, 0x18, 0x91, 0xf1, 0x67, 0x19, 0xb8, 0xd8,
+ 0x53, 0x53, 0x40, 0x36, 0xf4, 0x01, 0x7b, 0xf5, 0x34, 0xd5, 0xc2, 0xa9, 0x63, 0xb5, 0xf0, 0x63,
+ 0x72, 0xee, 0xbf, 0x0f, 0x13, 0xb5, 0xee, 0x4e, 0xfc, 0x7e, 0xc6, 0xe3, 0xcb, 0x28, 0x70, 0xf5,
+ 0x04, 0x53, 0xf1, 0x59, 0xfb, 0xa5, 0xc1, 0x83, 0x30, 0x00, 0x52, 0xac, 0x0e, 0x43, 0x17, 0xeb,
+ 0x64, 0x04, 0x0f, 0x9d, 0xc8, 0xf8, 0xd5, 0x6c, 0xfa, 0x45, 0xf7, 0x6e, 0x79, 0xe3, 0x2c, 0x17,
+ 0xdd, 0xbb, 0xe5, 0x8d, 0xd3, 0xdb, 0xfe, 0x4f, 0x64, 0xdb, 0xf1, 0x61, 0x56, 0xec, 0x78, 0x52,
+ 0xd1, 0x29, 0x1e, 0x66, 0xe5, 0xee, 0xe8, 0xeb, 0x0f, 0xb3, 0x12, 0x99, 0xbc, 0x05, 0x63, 0xab,
+ 0x2e, 0x0f, 0xae, 0x21, 0x5b, 0xcc, 0x7d, 0x90, 0x25, 0x50, 0xdd, 0x1e, 0x43, 0x4c, 0x76, 0xb7,
+ 0xd0, 0x07, 0x5e, 0x1a, 0x57, 0xe2, 0xdd, 0x22, 0x36, 0x5d, 0x74, 0x75, 0xa0, 0x4e, 0x66, 0xfc,
+ 0x27, 0xc3, 0x60, 0x9c, 0xae, 0xcc, 0x20, 0x1f, 0xea, 0x7d, 0x77, 0x7d, 0x60, 0x35, 0xc8, 0x40,
+ 0x5b, 0x6e, 0xa9, 0xdb, 0x70, 0x68, 0xbb, 0xae, 0x47, 0xc6, 0x10, 0x30, 0x75, 0x0b, 0x94, 0x78,
+ 0x1f, 0xc7, 0x51, 0x75, 0xe1, 0xbf, 0xcd, 0x45, 0x4b, 0x2d, 0x76, 0x34, 0x66, 0x3e, 0xc6, 0xd1,
+ 0x48, 0xee, 0x43, 0x41, 0x85, 0x28, 0x2f, 0xb4, 0x28, 0xb9, 0x68, 0x8c, 0x62, 0x1f, 0x95, 0x20,
+ 0xd4, 0xcf, 0xd7, 0xdc, 0xe0, 0xe7, 0x6b, 0x24, 0xbe, 0x63, 0xfd, 0x43, 0x49, 0xf1, 0x3d, 0xee,
+ 0x8c, 0xae, 0xa0, 0xcb, 0x48, 0x1a, 0xbe, 0x38, 0xb4, 0x86, 0xf5, 0x48, 0x1a, 0x29, 0x07, 0x97,
+ 0x8a, 0x2e, 0x83, 0x81, 0xe0, 0x4f, 0xc5, 0x17, 0x3e, 0x0c, 0x06, 0xc2, 0xe9, 0xd3, 0x82, 0x81,
+ 0x84, 0x24, 0xec, 0x00, 0x34, 0xbb, 0x6d, 0x1e, 0x4d, 0x7c, 0x34, 0x3a, 0x00, 0xbd, 0x6e, 0xdb,
+ 0x8a, 0x47, 0x14, 0x0f, 0x11, 0x8d, 0x7f, 0x34, 0x94, 0x2e, 0x1c, 0x84, 0xfa, 0xae, 0xb3, 0x08,
+ 0x07, 0x21, 0xd1, 0x27, 0x33, 0x53, 0xb7, 0x60, 0x56, 0xda, 0xe7, 0x49, 0x43, 0xaf, 0x2d, 0x73,
+ 0x55, 0x0c, 0x31, 0xea, 0x8d, 0x42, 0xcb, 0x3e, 0x69, 0x2c, 0x66, 0x75, 0x3d, 0x4d, 0x6f, 0x94,
+ 0x42, 0xbf, 0xf0, 0x1b, 0x52, 0x2d, 0xa6, 0x0e, 0xc2, 0xd6, 0x56, 0x38, 0x97, 0x63, 0x83, 0xd0,
+ 0xed, 0x6a, 0xc3, 0xa8, 0x93, 0xf0, 0xbd, 0x57, 0xaa, 0x1c, 0x90, 0x89, 0x22, 0x2b, 0x2a, 0x8a,
+ 0x8a, 0x18, 0x97, 0x18, 0x11, 0xd9, 0x83, 0x8b, 0x91, 0x28, 0xad, 0xdc, 0x14, 0x90, 0x23, 0x6f,
+ 0xf0, 0xb5, 0x93, 0xe3, 0xe2, 0xab, 0x8a, 0x28, 0xae, 0x5e, 0x38, 0x62, 0xdc, 0x7b, 0xf3, 0x62,
+ 0xfb, 0xed, 0x92, 0x67, 0xb7, 0xeb, 0xfb, 0xca, 0x9c, 0xc7, 0xfd, 0x76, 0x07, 0xa1, 0x89, 0x70,
+ 0x06, 0x11, 0xb2, 0xf1, 0x63, 0x59, 0x98, 0xe2, 0x67, 0x35, 0x7f, 0x9d, 0x7b, 0x66, 0x5f, 0x3e,
+ 0xdf, 0xd1, 0x5e, 0x3e, 0x65, 0xe4, 0x3d, 0xb5, 0x69, 0x03, 0xbd, 0x7b, 0xee, 0x03, 0x49, 0xd2,
+ 0x10, 0x13, 0x26, 0x54, 0x68, 0xff, 0x27, 0xcf, 0x9b, 0x51, 0x90, 0x46, 0x21, 0x2a, 0xe1, 0xbb,
+ 0xb3, 0x6f, 0x6a, 0x3c, 0x8c, 0x1f, 0xcd, 0xc2, 0xa4, 0x62, 0xa7, 0xf2, 0xcc, 0x76, 0xfc, 0xe7,
+ 0xb5, 0x8e, 0x9f, 0x0f, 0x3d, 0x04, 0xc3, 0x96, 0x0d, 0xd4, 0xef, 0x5d, 0x98, 0x49, 0x90, 0xc4,
+ 0xcd, 0x7d, 0x32, 0x83, 0x98, 0xfb, 0xbc, 0x91, 0x8c, 0xf8, 0xc6, 0x13, 0x27, 0x84, 0xf1, 0x7f,
+ 0xd4, 0x10, 0x73, 0x3f, 0x91, 0x85, 0x39, 0xf1, 0x0b, 0x43, 0xa4, 0x72, 0x61, 0xf5, 0x99, 0x1d,
+ 0x8b, 0x92, 0x36, 0x16, 0x45, 0x7d, 0x2c, 0x94, 0x06, 0xf6, 0x1e, 0x12, 0xe3, 0x07, 0x01, 0xe6,
+ 0x7b, 0x11, 0x0c, 0xec, 0x88, 0x1f, 0xb9, 0x26, 0x66, 0x07, 0x70, 0x4d, 0x5c, 0x85, 0x02, 0x56,
+ 0x25, 0x82, 0x20, 0xfa, 0x5b, 0x66, 0x55, 0x74, 0x12, 0xea, 0x17, 0x78, 0x1c, 0x5b, 0x11, 0x94,
+ 0xd1, 0x8f, 0xe9, 0x3c, 0x12, 0x94, 0xe4, 0x97, 0x32, 0x30, 0x85, 0xc0, 0xe5, 0x47, 0xb4, 0x1d,
+ 0x20, 0xb3, 0x21, 0xe1, 0xb3, 0x16, 0x3e, 0x8c, 0xd6, 0x02, 0xcf, 0x69, 0xef, 0x89, 0x97, 0xd1,
+ 0x1d, 0xf1, 0x32, 0xfa, 0x2e, 0x7f, 0xd1, 0xbd, 0x5e, 0x77, 0x5b, 0x37, 0xf6, 0x3c, 0xfb, 0x91,
+ 0xc3, 0x4d, 0xb0, 0xec, 0xe6, 0x8d, 0x28, 0xdf, 0x4f, 0xc7, 0x89, 0x65, 0xe2, 0x11, 0xac, 0xf0,
+ 0xd5, 0x99, 0x7f, 0x28, 0xc5, 0x6a, 0xe3, 0xaa, 0x19, 0xfd, 0x8b, 0xc8, 0xf7, 0xc0, 0x05, 0x1e,
+ 0x9a, 0x8c, 0xdd, 0xf0, 0x9d, 0x76, 0xd7, 0xed, 0xfa, 0x4b, 0x76, 0xfd, 0x80, 0x89, 0xf9, 0xdc,
+ 0xb3, 0x18, 0x5b, 0x5e, 0x0f, 0x0b, 0xad, 0x1d, 0x5e, 0xaa, 0xc5, 0xbc, 0x48, 0x67, 0x40, 0x56,
+ 0x60, 0x86, 0x17, 0x95, 0xba, 0x81, 0x5b, 0xab, 0xdb, 0x4d, 0xa7, 0xbd, 0x87, 0xb2, 0x44, 0x9e,
+ 0x8b, 0x32, 0x76, 0x37, 0x70, 0x2d, 0x9f, 0xc3, 0x55, 0x4d, 0x4d, 0x82, 0x88, 0x54, 0x61, 0xda,
+ 0xa4, 0x76, 0x63, 0xcd, 0x7e, 0x5c, 0xb6, 0x3b, 0x76, 0xdd, 0x09, 0x78, 0xac, 0xd4, 0x1c, 0x17,
+ 0xe8, 0x3c, 0x6a, 0x37, 0xac, 0x96, 0xfd, 0xd8, 0xaa, 0x8b, 0x42, 0x5d, 0x65, 0xaf, 0xd1, 0x85,
+ 0xac, 0x9c, 0x76, 0xc8, 0x6a, 0x2c, 0xce, 0xca, 0x69, 0xf7, 0x66, 0x15, 0xd1, 0x49, 0x56, 0x9b,
+ 0xb6, 0xb7, 0x47, 0x03, 0x6e, 0x28, 0x0d, 0x97, 0x33, 0x57, 0x33, 0x0a, 0xab, 0x00, 0xcb, 0x2c,
+ 0x34, 0x9a, 0x8e, 0xb3, 0x52, 0xe8, 0xd8, 0xcc, 0xdb, 0xf6, 0x9c, 0x80, 0xaa, 0x2d, 0x1c, 0xc7,
+ 0xcf, 0xc2, 0xfe, 0x47, 0x13, 0xf3, 0x5e, 0x4d, 0x4c, 0x50, 0x46, 0xdc, 0x94, 0x46, 0x4e, 0x24,
+ 0xb8, 0xa5, 0xb7, 0x32, 0x41, 0x19, 0x72, 0x53, 0xdb, 0x39, 0x89, 0xed, 0x54, 0xb8, 0xf5, 0x68,
+ 0x68, 0x82, 0x92, 0xac, 0xb3, 0x4e, 0x0b, 0x98, 0xdc, 0xe4, 0xb6, 0x85, 0x05, 0xf7, 0x14, 0x7e,
+ 0xda, 0x2b, 0xc2, 0x0c, 0xb1, 0xe0, 0xc9, 0x62, 0x2b, 0xc5, 0x9e, 0x3b, 0x4e, 0x4c, 0xfe, 0x0a,
+ 0x4c, 0x6f, 0xf9, 0xf4, 0x4e, 0x75, 0xa3, 0x26, 0x23, 0x99, 0xa1, 0x72, 0x71, 0x6a, 0xf1, 0xe6,
+ 0x29, 0x9b, 0xce, 0x75, 0x95, 0x06, 0xd3, 0xe7, 0xf0, 0x71, 0xeb, 0xfa, 0xd4, 0xda, 0x75, 0x3a,
+ 0x7e, 0x18, 0x16, 0x52, 0x1d, 0xb7, 0x58, 0x55, 0xc6, 0x0a, 0xcc, 0x24, 0xd8, 0x90, 0x29, 0x00,
+ 0x06, 0xb4, 0xb6, 0xd6, 0x6b, 0xcb, 0x9b, 0x85, 0xe7, 0x48, 0x01, 0x26, 0xf0, 0xf7, 0xf2, 0x7a,
+ 0x69, 0x69, 0x75, 0xb9, 0x52, 0xc8, 0x90, 0x19, 0x98, 0x44, 0x48, 0xa5, 0x5a, 0xe3, 0xa0, 0x2c,
+ 0x4f, 0x9e, 0x60, 0x16, 0xf8, 0xd2, 0x0d, 0xd8, 0x02, 0xc0, 0x33, 0xc5, 0xf8, 0xdb, 0x59, 0xb8,
+ 0x28, 0x8f, 0x15, 0x1a, 0x30, 0xc1, 0xd1, 0x69, 0xef, 0x3d, 0xe3, 0xa7, 0xc3, 0x1d, 0xed, 0x74,
+ 0x78, 0x25, 0x76, 0x52, 0xc7, 0x5a, 0xd9, 0xe7, 0x88, 0xf8, 0xad, 0x31, 0x78, 0xb1, 0x2f, 0x15,
+ 0xf9, 0x22, 0x3b, 0xcd, 0x1d, 0xda, 0x0e, 0xaa, 0x8d, 0x26, 0xdd, 0x74, 0x5a, 0xd4, 0xed, 0x06,
+ 0xc2, 0x63, 0xe0, 0x65, 0xd4, 0xe7, 0x61, 0xa1, 0xe5, 0x34, 0x9a, 0xd4, 0x0a, 0x78, 0xb1, 0x36,
+ 0xdd, 0x92, 0xd4, 0x8c, 0x65, 0x98, 0xca, 0xab, 0xda, 0x0e, 0xa8, 0xf7, 0x08, 0xad, 0x12, 0x43,
+ 0x96, 0x07, 0x94, 0x76, 0x2c, 0x9b, 0x95, 0x5a, 0x8e, 0x28, 0xd6, 0x59, 0x26, 0xa8, 0xc9, 0x1d,
+ 0x85, 0x65, 0x99, 0xdd, 0xfe, 0xd7, 0xec, 0xc7, 0xc2, 0x4c, 0x4a, 0x44, 0xc6, 0x0d, 0x59, 0x72,
+ 0x77, 0xbe, 0x96, 0xfd, 0xd8, 0x4c, 0x92, 0x90, 0xaf, 0xc2, 0x39, 0x71, 0x00, 0x89, 0xe0, 0x2d,
+ 0xb2, 0xc5, 0x3c, 0x34, 0xcc, 0x6b, 0x27, 0xc7, 0xc5, 0x0b, 0x32, 0xa6, 0xb0, 0x0c, 0xac, 0x94,
+ 0xd6, 0xea, 0x74, 0x2e, 0x64, 0x93, 0x1d, 0xc8, 0xb1, 0xee, 0x58, 0xa3, 0xbe, 0x2f, 0x7d, 0x36,
+ 0xc5, 0xcd, 0x58, 0xed, 0x4c, 0xab, 0xc5, 0xcb, 0xcd, 0x9e, 0x94, 0x64, 0x05, 0xa6, 0xb6, 0xe9,
+ 0x8e, 0x3a, 0x3e, 0x23, 0xe1, 0x56, 0x55, 0x38, 0xa4, 0x3b, 0xbd, 0x07, 0x27, 0x46, 0x47, 0x1c,
+ 0x7c, 0x1f, 0x78, 0x7c, 0xb4, 0xea, 0xf8, 0x01, 0x6d, 0x53, 0x0f, 0xc3, 0xb7, 0x8d, 0xe2, 0x66,
+ 0x30, 0x1f, 0x49, 0xc8, 0x7a, 0xf9, 0xd2, 0x4b, 0x27, 0xc7, 0xc5, 0x17, 0xb9, 0xf3, 0x73, 0x53,
+ 0xc0, 0xad, 0x58, 0x22, 0xac, 0x24, 0x57, 0xf2, 0x75, 0x98, 0x36, 0xdd, 0x6e, 0xe0, 0xb4, 0xf7,
+ 0x6a, 0x81, 0x67, 0x07, 0x74, 0x8f, 0x1f, 0x48, 0x51, 0x9c, 0xb8, 0x58, 0xa9, 0x78, 0x5a, 0xe6,
+ 0x40, 0xcb, 0x17, 0x50, 0xed, 0x44, 0xd0, 0x09, 0xc8, 0xd7, 0x60, 0x8a, 0x87, 0xed, 0x08, 0x2b,
+ 0x18, 0xd3, 0x92, 0x78, 0xe8, 0x85, 0x0f, 0x6f, 0x0a, 0xab, 0x16, 0x84, 0xa6, 0x55, 0x10, 0xe3,
+ 0x46, 0xbe, 0x2c, 0x3a, 0x6b, 0xc3, 0x69, 0xef, 0x85, 0xd3, 0x18, 0xb0, 0xe7, 0xdf, 0x8c, 0xba,
+ 0xa4, 0xc3, 0x3e, 0x57, 0x4e, 0xe3, 0x1e, 0x26, 0x7a, 0x49, 0x3e, 0x24, 0x80, 0x17, 0x4b, 0xbe,
+ 0xef, 0xf8, 0x81, 0xf0, 0xab, 0x59, 0x7e, 0x4c, 0xeb, 0x5d, 0x86, 0xcc, 0xae, 0xb7, 0xd4, 0xe3,
+ 0x76, 0xdd, 0xc3, 0x4b, 0xd7, 0x4f, 0x8e, 0x8b, 0xaf, 0xdb, 0x88, 0x68, 0x09, 0x57, 0x1c, 0x8b,
+ 0x4a, 0x54, 0xeb, 0x90, 0xe3, 0x2a, 0x6d, 0xe8, 0xcf, 0x94, 0x7c, 0x0d, 0xce, 0x97, 0x6d, 0x9f,
+ 0x56, 0xdb, 0x3e, 0x6d, 0xfb, 0x4e, 0xe0, 0x3c, 0xa2, 0xa2, 0x53, 0xf1, 0xf0, 0xcb, 0x63, 0xca,
+ 0x30, 0xa3, 0x6e, 0xfb, 0x6c, 0x61, 0x86, 0x28, 0x96, 0x18, 0x14, 0xa5, 0x9a, 0x1e, 0x5c, 0x88,
+ 0x09, 0x53, 0xb5, 0xda, 0x4a, 0xc5, 0xb1, 0xc3, 0x75, 0x35, 0x89, 0xfd, 0xf5, 0x3a, 0xaa, 0xf6,
+ 0xfc, 0x7d, 0xab, 0xe1, 0xd8, 0xe1, 0x82, 0xea, 0xd1, 0x59, 0x31, 0x0e, 0xc6, 0x71, 0x06, 0x0a,
+ 0xf1, 0xa1, 0x24, 0x5f, 0x82, 0x31, 0x6e, 0xdf, 0x46, 0xfd, 0x7d, 0x11, 0x79, 0x42, 0x9a, 0x4b,
+ 0x85, 0x70, 0x9d, 0x48, 0xb8, 0xd3, 0x71, 0xeb, 0x39, 0xaa, 0x5a, 0xcb, 0xa0, 0x3b, 0x9d, 0x24,
+ 0x22, 0x0d, 0x98, 0xe0, 0xa3, 0x45, 0x31, 0x48, 0xa4, 0x30, 0x73, 0x7e, 0x49, 0x5d, 0x1d, 0xa2,
+ 0x28, 0xc6, 0x1f, 0x5f, 0x0d, 0xc5, 0x9c, 0xe0, 0x08, 0x5a, 0x15, 0x1a, 0xd7, 0x25, 0x80, 0xbc,
+ 0x24, 0x34, 0x2e, 0xc2, 0x85, 0x1e, 0xdf, 0x6c, 0x3c, 0x42, 0x4b, 0x82, 0x1e, 0x35, 0x92, 0x2f,
+ 0xc1, 0x1c, 0x12, 0x96, 0xdd, 0x76, 0x9b, 0xd6, 0x03, 0xdc, 0x8e, 0xa4, 0xf6, 0x3d, 0xc7, 0x2d,
+ 0x5d, 0x78, 0x7b, 0xeb, 0x21, 0x82, 0x15, 0x57, 0xc2, 0xa7, 0x72, 0x30, 0x7e, 0x2e, 0x0b, 0xf3,
+ 0x62, 0x87, 0x33, 0x69, 0xdd, 0xf5, 0x1a, 0xcf, 0xfe, 0x89, 0xba, 0xac, 0x9d, 0xa8, 0x2f, 0x87,
+ 0x61, 0x8b, 0xd2, 0x1a, 0xd9, 0xe7, 0x40, 0xfd, 0xd5, 0x0c, 0xbc, 0xd0, 0x8f, 0x88, 0xf5, 0x4e,
+ 0x18, 0x14, 0x73, 0x2c, 0x11, 0xfc, 0xb2, 0x03, 0xb3, 0x38, 0xa0, 0xe5, 0x7d, 0x5a, 0x3f, 0xf0,
+ 0x57, 0x5c, 0x3f, 0x40, 0x4f, 0x8b, 0x6c, 0x8f, 0xb7, 0xee, 0x37, 0x52, 0xdf, 0xba, 0xcf, 0xf3,
+ 0x59, 0x56, 0x47, 0x1e, 0x3c, 0x6c, 0xe7, 0x01, 0x3d, 0xf2, 0xcd, 0x34, 0xd6, 0x68, 0x31, 0x5f,
+ 0xea, 0x06, 0xfb, 0x1b, 0x1e, 0xdd, 0xa5, 0x1e, 0x6d, 0xd7, 0xe9, 0x77, 0x99, 0xc5, 0xbc, 0xde,
+ 0xb8, 0x81, 0x34, 0x18, 0xff, 0x64, 0x12, 0xe6, 0xd2, 0xc8, 0x58, 0xbf, 0x28, 0x97, 0xe6, 0x78,
+ 0x46, 0xd3, 0x1f, 0xc8, 0xc0, 0x44, 0x8d, 0xd6, 0xdd, 0x76, 0xe3, 0x0e, 0x5a, 0x14, 0x89, 0xde,
+ 0xb1, 0xb8, 0xd0, 0xc0, 0xe0, 0xd6, 0x6e, 0xcc, 0xd4, 0xe8, 0x3b, 0xc7, 0xc5, 0x2f, 0x0c, 0x76,
+ 0x57, 0xad, 0xbb, 0x18, 0x2e, 0x28, 0xc0, 0x8c, 0x1b, 0x61, 0x15, 0xf8, 0x38, 0xa8, 0x55, 0x4a,
+ 0x96, 0x60, 0x52, 0x2c, 0x57, 0x57, 0x8d, 0x89, 0xca, 0x23, 0x3b, 0xc9, 0x82, 0x84, 0xea, 0x5a,
+ 0x23, 0x21, 0xb7, 0x20, 0xb7, 0xb5, 0x78, 0x47, 0x8c, 0x81, 0xcc, 0x59, 0xb2, 0xb5, 0x78, 0x07,
+ 0xd5, 0x61, 0xec, 0x8a, 0x31, 0xd9, 0x5d, 0xd4, 0x8c, 0x7c, 0xb6, 0x16, 0xef, 0x90, 0xbf, 0x0a,
+ 0xe7, 0x2a, 0x8e, 0x2f, 0xaa, 0xe0, 0xbe, 0x1b, 0x0d, 0xf4, 0x58, 0x1c, 0xe9, 0x31, 0x7b, 0x3f,
+ 0x9b, 0x3a, 0x7b, 0x5f, 0x6a, 0x84, 0x4c, 0x2c, 0xee, 0x18, 0xd2, 0x88, 0xc7, 0x7e, 0x4d, 0xaf,
+ 0x87, 0x7c, 0x04, 0x53, 0xa8, 0xcc, 0x46, 0x77, 0x16, 0x8c, 0xda, 0x3f, 0xda, 0xa3, 0xe6, 0x4f,
+ 0xa7, 0xd6, 0xbc, 0xc0, 0xe3, 0x6d, 0xa0, 0x53, 0x0c, 0x46, 0xf8, 0xd7, 0x6e, 0xfd, 0x1a, 0x67,
+ 0x72, 0x0f, 0xa6, 0x85, 0xf8, 0xf5, 0x60, 0x77, 0x73, 0x9f, 0x56, 0xec, 0x23, 0x61, 0x9f, 0x83,
+ 0x37, 0x3a, 0x21, 0xb3, 0x59, 0xee, 0xae, 0x15, 0xec, 0x53, 0xab, 0x61, 0x6b, 0x82, 0x4a, 0x8c,
+ 0x90, 0x7c, 0x13, 0xc6, 0x57, 0xdd, 0x3a, 0x93, 0xbc, 0x71, 0x67, 0xe0, 0x26, 0x3b, 0x1f, 0x62,
+ 0xce, 0x4c, 0x0e, 0x8e, 0x89, 0x53, 0xdf, 0x39, 0x2e, 0xbe, 0x73, 0xd6, 0x49, 0xa3, 0x54, 0x60,
+ 0xaa, 0xb5, 0x91, 0x32, 0xe4, 0xb7, 0xe9, 0x0e, 0x6b, 0x6d, 0x3c, 0x9f, 0x9e, 0x04, 0x0b, 0x8b,
+ 0x3c, 0xf1, 0x4b, 0xb3, 0xc8, 0x13, 0x30, 0xe2, 0xc1, 0x0c, 0xf6, 0xcf, 0x86, 0xed, 0xfb, 0x87,
+ 0xae, 0xd7, 0xc0, 0xc4, 0x29, 0xbd, 0xac, 0x81, 0x16, 0x53, 0x3b, 0xff, 0x05, 0xde, 0xf9, 0x1d,
+ 0x85, 0x83, 0x2a, 0x40, 0x26, 0xd8, 0x93, 0xaf, 0xc3, 0x94, 0x88, 0x5d, 0xb0, 0x76, 0xa7, 0x84,
+ 0xab, 0x72, 0x42, 0xf3, 0xfb, 0xd4, 0x0b, 0xb9, 0x94, 0x2a, 0x42, 0x21, 0x48, 0x0d, 0x94, 0xd5,
+ 0xda, 0xb5, 0x75, 0xa5, 0xbf, 0x4a, 0x42, 0x36, 0x60, 0xbc, 0x82, 0x59, 0x9d, 0xd1, 0x37, 0x4d,
+ 0xd8, 0x85, 0x87, 0x09, 0xc1, 0xa2, 0x12, 0xae, 0x8b, 0x11, 0x09, 0xa0, 0xd1, 0xd3, 0x4d, 0xb7,
+ 0xd5, 0x0d, 0x11, 0xc9, 0x6d, 0xc8, 0x55, 0x2b, 0x1b, 0xc2, 0x2c, 0x7c, 0x26, 0x8c, 0x10, 0xb2,
+ 0x21, 0xd3, 0x27, 0xa1, 0xfd, 0x9c, 0xd3, 0xd0, 0x8c, 0xca, 0xab, 0x95, 0x0d, 0xb2, 0x0b, 0x93,
+ 0xd8, 0x01, 0x2b, 0xd4, 0xe6, 0x7d, 0x3b, 0xdd, 0xa3, 0x6f, 0xaf, 0xa7, 0xf6, 0xed, 0x3c, 0xef,
+ 0xdb, 0x7d, 0x41, 0xad, 0xe5, 0x83, 0x51, 0xd9, 0x32, 0x91, 0x56, 0xe4, 0xa8, 0x92, 0x59, 0x4c,
+ 0x36, 0x57, 0xd1, 0x3e, 0x48, 0x88, 0xb4, 0x32, 0xa5, 0x55, 0x98, 0x56, 0xa5, 0xa7, 0xd7, 0x49,
+ 0x92, 0x0f, 0xf9, 0x3c, 0x0c, 0x3d, 0x38, 0x08, 0x6c, 0x61, 0x00, 0x2e, 0xfb, 0x91, 0x81, 0x64,
+ 0xf3, 0x51, 0x0b, 0xe9, 0x1e, 0x68, 0x31, 0xe7, 0x90, 0x86, 0x0d, 0xc5, 0x8a, 0xed, 0x35, 0x0e,
+ 0x6d, 0x0f, 0x1d, 0x84, 0x67, 0x35, 0x16, 0x4a, 0x09, 0x1f, 0x8a, 0x7d, 0x01, 0x88, 0x79, 0x0d,
+ 0xab, 0x2c, 0xc8, 0xf7, 0xc0, 0x45, 0xdf, 0xd9, 0x6b, 0xdb, 0x41, 0xd7, 0xa3, 0x96, 0xdd, 0xdc,
+ 0x73, 0x3d, 0x27, 0xd8, 0x6f, 0x59, 0x7e, 0xd7, 0x09, 0xe8, 0xfc, 0x9c, 0x96, 0xd1, 0xba, 0x26,
+ 0xf1, 0x4a, 0x12, 0xad, 0xc6, 0xb0, 0xcc, 0x0b, 0x7e, 0x7a, 0x01, 0xf9, 0x32, 0x4c, 0xaa, 0x5b,
+ 0xb2, 0x3f, 0x7f, 0xee, 0x72, 0xee, 0xea, 0x54, 0x78, 0xf1, 0x88, 0x6f, 0xe0, 0x32, 0x12, 0xb4,
+ 0x72, 0x42, 0xf8, 0x7a, 0x24, 0x68, 0x85, 0x57, 0x98, 0x23, 0x92, 0x14, 0x66, 0xcd, 0x19, 0x31,
+ 0x63, 0x45, 0x2f, 0xaf, 0xdd, 0x29, 0x99, 0xa3, 0x1b, 0xd5, 0x87, 0xb5, 0xa6, 0x1b, 0x18, 0xff,
+ 0x45, 0x06, 0x37, 0x71, 0xf2, 0x3a, 0x06, 0x92, 0x0a, 0x5f, 0xcf, 0x50, 0x7f, 0x6b, 0x77, 0x62,
+ 0x69, 0x04, 0x38, 0x0a, 0x79, 0x03, 0x46, 0xee, 0xd8, 0x75, 0x19, 0xc4, 0x46, 0x20, 0xef, 0x22,
+ 0x44, 0x55, 0xf6, 0x72, 0x1c, 0x26, 0x5f, 0xf2, 0xc9, 0x5d, 0x8a, 0x92, 0xa5, 0x97, 0x4b, 0xf2,
+ 0xb9, 0x1e, 0xe5, 0x4b, 0xb1, 0x28, 0x94, 0x6c, 0xea, 0x31, 0xab, 0xf8, 0x54, 0x0e, 0xc6, 0x9f,
+ 0x64, 0xa2, 0x5d, 0x89, 0xbc, 0x06, 0x43, 0xe6, 0x46, 0xf8, 0xfd, 0xdc, 0xe9, 0x37, 0xf6, 0xf9,
+ 0x88, 0x40, 0xbe, 0x0c, 0xe7, 0x14, 0x3e, 0x09, 0x13, 0xfd, 0x57, 0xd1, 0x27, 0x55, 0xf9, 0x92,
+ 0x74, 0x3b, 0xfd, 0x74, 0x1e, 0x28, 0x4c, 0x47, 0x05, 0x15, 0xda, 0x76, 0x38, 0x6f, 0xa5, 0xb1,
+ 0x2a, 0xef, 0x06, 0x22, 0xc4, 0x1b, 0x9b, 0xc6, 0x81, 0xbb, 0xa4, 0x1a, 0xbf, 0x99, 0xd1, 0x76,
+ 0x9b, 0x30, 0xbb, 0x74, 0xe6, 0x94, 0xec, 0xd2, 0x6f, 0x03, 0x94, 0xba, 0x81, 0xbb, 0xdc, 0xf6,
+ 0xdc, 0x26, 0xd7, 0xa2, 0x88, 0x4c, 0x1a, 0xa8, 0x1b, 0xa6, 0x08, 0xd6, 0x3c, 0xe7, 0x42, 0xe4,
+ 0x54, 0x6f, 0x86, 0xdc, 0xc7, 0xf5, 0x66, 0x30, 0x7e, 0x2f, 0xa3, 0xad, 0x51, 0x26, 0x25, 0x8a,
+ 0xa9, 0xa8, 0x5a, 0x8c, 0x75, 0x9c, 0x47, 0x96, 0xdf, 0x74, 0xb5, 0x70, 0x15, 0x02, 0x8d, 0xfc,
+ 0xbb, 0x19, 0x38, 0xcf, 0xdd, 0x02, 0xd6, 0xbb, 0xad, 0x1d, 0xea, 0x3d, 0xb4, 0x9b, 0x4e, 0x23,
+ 0x0a, 0xd3, 0x17, 0x99, 0x0f, 0x2a, 0xd5, 0xa4, 0xe3, 0xf3, 0x8b, 0x2a, 0x77, 0x53, 0xb0, 0xda,
+ 0x58, 0x68, 0x3d, 0x0a, 0x4b, 0xd5, 0x8b, 0x6a, 0x3a, 0xbd, 0xf1, 0x6b, 0x19, 0x78, 0xe9, 0xd4,
+ 0x5a, 0xc8, 0x0d, 0x18, 0x95, 0x29, 0x4c, 0x32, 0xd8, 0xf1, 0x68, 0x67, 0x9b, 0x4c, 0x5f, 0x22,
+ 0xb1, 0xc8, 0x57, 0xe0, 0x9c, 0xca, 0x6a, 0xd3, 0xb3, 0x1d, 0x35, 0x51, 0x48, 0xca, 0x57, 0x07,
+ 0x0c, 0x25, 0x2e, 0xad, 0xa5, 0x33, 0x31, 0xfe, 0xdf, 0x8c, 0x92, 0x6f, 0xfe, 0x19, 0x95, 0xe1,
+ 0x6f, 0x6b, 0x32, 0xbc, 0x0c, 0x52, 0x1a, 0xb6, 0x8a, 0x95, 0xa5, 0xde, 0xbb, 0xa6, 0x15, 0x7b,
+ 0x71, 0x04, 0xfc, 0x70, 0x16, 0xc6, 0xb7, 0x7c, 0xea, 0xf1, 0x87, 0xdc, 0xef, 0xae, 0x50, 0x8d,
+ 0x61, 0xbb, 0x06, 0x0a, 0xa6, 0xf7, 0x47, 0x19, 0x54, 0xf0, 0xab, 0x14, 0xac, 0x37, 0x94, 0x1c,
+ 0x93, 0xd8, 0x1b, 0x98, 0x5d, 0x12, 0xa1, 0x3c, 0xb4, 0xd8, 0xaa, 0x9e, 0x6e, 0x16, 0x73, 0x0e,
+ 0xaf, 0x92, 0x2f, 0xc0, 0xf0, 0x16, 0xaa, 0x2b, 0xf5, 0x20, 0x1b, 0x21, 0x7f, 0x2c, 0xe4, 0x9b,
+ 0x74, 0xd7, 0xd7, 0xe3, 0xce, 0x71, 0x42, 0x52, 0x83, 0xd1, 0xb2, 0x47, 0x31, 0x7b, 0xfc, 0xd0,
+ 0xe0, 0x2e, 0xe2, 0x75, 0x4e, 0x12, 0x77, 0x11, 0x17, 0x9c, 0x8c, 0x9f, 0xcd, 0x02, 0x89, 0xda,
+ 0x88, 0xa9, 0xd2, 0xfc, 0x67, 0x76, 0xd0, 0x3f, 0xd0, 0x06, 0xfd, 0xc5, 0xc4, 0xa0, 0xf3, 0xe6,
+ 0x0d, 0x34, 0xf6, 0xbf, 0x9d, 0x81, 0xf3, 0xe9, 0x84, 0xe4, 0x65, 0x18, 0x79, 0xb0, 0xb9, 0x21,
+ 0xe3, 0xb4, 0x88, 0xa6, 0xb8, 0x1d, 0xd4, 0x15, 0x98, 0xa2, 0x88, 0xbc, 0x09, 0x23, 0x5f, 0x34,
+ 0xcb, 0xec, 0x1c, 0x52, 0x92, 0x71, 0x7c, 0xc3, 0xb3, 0xea, 0xfa, 0x51, 0x24, 0x90, 0xd4, 0xb1,
+ 0xcd, 0x3d, 0xb5, 0xb1, 0xfd, 0x89, 0x2c, 0x4c, 0x97, 0xea, 0x75, 0xea, 0xfb, 0x22, 0xd0, 0xfc,
+ 0x33, 0x3b, 0xb0, 0xe9, 0x11, 0x58, 0xb4, 0xb6, 0x0d, 0x34, 0xaa, 0xbf, 0x93, 0x81, 0x73, 0x92,
+ 0xea, 0x91, 0x43, 0x0f, 0x37, 0xf7, 0x3d, 0xea, 0xef, 0xbb, 0xcd, 0xc6, 0xc0, 0x19, 0x7f, 0x98,
+ 0xa0, 0x87, 0xc1, 0xe1, 0xd5, 0x57, 0xfd, 0x5d, 0x84, 0x68, 0x82, 0x1e, 0x0f, 0x20, 0x7f, 0x03,
+ 0x46, 0x4b, 0x9d, 0x8e, 0xe7, 0x3e, 0xe2, 0xcb, 0x5e, 0x44, 0x96, 0xb4, 0x39, 0x48, 0xf3, 0xb0,
+ 0xe7, 0x20, 0xf6, 0x19, 0x15, 0xda, 0xe6, 0xa1, 0xfc, 0x26, 0xf9, 0x67, 0x34, 0x68, 0x5b, 0x95,
+ 0xc5, 0xb1, 0xdc, 0xa8, 0x01, 0xd9, 0xf0, 0xdc, 0x96, 0x1b, 0xd0, 0x06, 0x6f, 0x0f, 0x06, 0x26,
+ 0x38, 0x35, 0xa4, 0xd6, 0xa6, 0x13, 0x34, 0xb5, 0x90, 0x5a, 0x01, 0x03, 0x98, 0x1c, 0x6e, 0xfc,
+ 0xdf, 0xc3, 0x30, 0xa1, 0xf6, 0x0e, 0x31, 0x78, 0x1a, 0x0f, 0xd7, 0x53, 0xa3, 0x63, 0xd8, 0x08,
+ 0x31, 0x45, 0x49, 0x14, 0x5a, 0x26, 0x7b, 0x6a, 0x68, 0x99, 0x6d, 0x98, 0xdc, 0xf0, 0x5c, 0x0c,
+ 0x81, 0x89, 0xaf, 0x95, 0x62, 0x2b, 0x9c, 0x55, 0xee, 0x9d, 0x6c, 0x20, 0xf1, 0x3d, 0x14, 0x25,
+ 0xfb, 0x8e, 0xc0, 0xc6, 0xe4, 0x96, 0x9a, 0xd6, 0x45, 0xe3, 0xc3, 0x4d, 0x2d, 0x6c, 0x5f, 0xc4,
+ 0xb1, 0x0d, 0x4d, 0x2d, 0x18, 0x44, 0x37, 0xb5, 0x60, 0x10, 0x75, 0xad, 0x0d, 0x3f, 0xad, 0xb5,
+ 0x46, 0x7e, 0x36, 0x03, 0xe3, 0xa5, 0x76, 0x5b, 0x84, 0xac, 0x39, 0xc5, 0x5b, 0xff, 0x2b, 0xc2,
+ 0xda, 0xe2, 0x9d, 0x8f, 0x65, 0x6d, 0x81, 0x72, 0x8b, 0x8f, 0x92, 0x6a, 0x54, 0xa1, 0x7a, 0x5b,
+ 0x53, 0xbe, 0x83, 0xbc, 0x03, 0x85, 0x70, 0x92, 0x57, 0xdb, 0x0d, 0xfa, 0x98, 0xf2, 0x34, 0x88,
+ 0x93, 0x22, 0xae, 0xb6, 0x2a, 0x99, 0xc6, 0x11, 0xc9, 0x26, 0x80, 0x1d, 0xce, 0xae, 0x58, 0x3e,
+ 0xd7, 0xe4, 0xf4, 0x13, 0xd2, 0x33, 0xfe, 0xc6, 0x07, 0x2d, 0x55, 0x7a, 0x8e, 0xf8, 0x90, 0x16,
+ 0x4c, 0xf3, 0x64, 0xaa, 0xb5, 0xc0, 0xf6, 0x02, 0x4c, 0x45, 0x01, 0xa7, 0x8e, 0xc3, 0x6b, 0x42,
+ 0x7f, 0xf6, 0xbc, 0x48, 0xd1, 0xea, 0x33, 0x5a, 0x2b, 0x25, 0x2f, 0x45, 0x9c, 0x37, 0x8f, 0x62,
+ 0x6e, 0x5e, 0x48, 0x7e, 0x2f, 0x9f, 0xf4, 0x3f, 0x91, 0x81, 0xf3, 0xea, 0xa4, 0xaf, 0x75, 0x77,
+ 0x44, 0xe8, 0x50, 0x72, 0x1d, 0xc6, 0xc4, 0x9c, 0x0c, 0x2f, 0x51, 0xc9, 0x8c, 0x1a, 0x11, 0x0a,
+ 0x59, 0x66, 0xd3, 0x90, 0xf1, 0x10, 0x52, 0xf7, 0x6c, 0x6c, 0x9f, 0x62, 0x45, 0x51, 0xa2, 0x6e,
+ 0x0f, 0x7f, 0xeb, 0xf3, 0x93, 0x41, 0x8c, 0xf7, 0x61, 0x46, 0x1f, 0x89, 0x1a, 0x0d, 0xc8, 0x35,
+ 0x18, 0x95, 0xc3, 0x97, 0x49, 0x1f, 0x3e, 0x59, 0x6e, 0x6c, 0x03, 0x49, 0xd0, 0xfb, 0x68, 0x16,
+ 0xc5, 0xee, 0xa7, 0xdc, 0x6c, 0x4f, 0x3e, 0x4a, 0x26, 0x10, 0x97, 0x66, 0xc5, 0xf7, 0x8d, 0x6b,
+ 0x6e, 0x09, 0x18, 0x46, 0xf5, 0x4f, 0xa6, 0x60, 0x36, 0x65, 0xcf, 0x3d, 0x45, 0x26, 0x2a, 0xea,
+ 0x1b, 0xc4, 0x58, 0x18, 0xec, 0x43, 0x6e, 0x0b, 0xef, 0xc3, 0xf0, 0xa9, 0xdb, 0x01, 0x77, 0x4a,
+ 0x89, 0xed, 0x02, 0x9c, 0xec, 0x13, 0x91, 0x8b, 0xd4, 0x78, 0x3c, 0xc3, 0x4f, 0x2d, 0x1e, 0xcf,
+ 0x12, 0x4c, 0x8a, 0x56, 0x89, 0xed, 0x4a, 0x31, 0x8e, 0x96, 0x19, 0x62, 0x12, 0xdb, 0x96, 0x4e,
+ 0xc2, 0x79, 0xf8, 0x6e, 0xf3, 0x11, 0x15, 0x3c, 0x46, 0x55, 0x1e, 0x58, 0x90, 0xca, 0x43, 0x21,
+ 0x21, 0xff, 0x31, 0x26, 0x72, 0x44, 0x88, 0xba, 0x67, 0xe5, 0xfb, 0xed, 0x59, 0x8d, 0xa7, 0xb3,
+ 0x67, 0xbd, 0x28, 0xbf, 0x31, 0x7d, 0xef, 0x4a, 0xf9, 0x2c, 0xf2, 0xcb, 0x19, 0x98, 0xe1, 0x41,
+ 0x61, 0xd4, 0x8f, 0xed, 0x1b, 0xe8, 0xa3, 0xfe, 0x74, 0x3e, 0xf6, 0x05, 0x91, 0x1b, 0x28, 0xfd,
+ 0x5b, 0x93, 0x1f, 0x45, 0xbe, 0x07, 0x20, 0x5c, 0x51, 0x3c, 0x94, 0xec, 0xf8, 0xe2, 0x0b, 0x29,
+ 0xbb, 0x40, 0x88, 0x14, 0xa5, 0xf0, 0x08, 0x42, 0x3a, 0x2d, 0x7d, 0x67, 0x08, 0x25, 0x7f, 0x15,
+ 0xe6, 0xd8, 0x7a, 0x09, 0x21, 0x22, 0x84, 0xd5, 0xfc, 0x38, 0xd6, 0xf2, 0x99, 0xde, 0x32, 0xd1,
+ 0xf5, 0x34, 0x32, 0x1e, 0x78, 0x38, 0xca, 0xa4, 0x1e, 0xa8, 0xd1, 0x2e, 0x52, 0x2b, 0xc2, 0xc8,
+ 0x70, 0xf8, 0xf5, 0x3c, 0xcd, 0x46, 0x8f, 0xfd, 0xed, 0xa2, 0x5c, 0x0b, 0x7c, 0x7f, 0xf3, 0x75,
+ 0x1f, 0x65, 0x04, 0x91, 0x2f, 0x02, 0x09, 0xa3, 0xa9, 0x70, 0x18, 0x95, 0x29, 0x38, 0xb8, 0xba,
+ 0x39, 0x8a, 0xca, 0xe2, 0xc9, 0x62, 0x75, 0x92, 0x24, 0x89, 0x09, 0x85, 0x39, 0xd1, 0x68, 0x06,
+ 0x95, 0x59, 0x16, 0xfd, 0xf9, 0x29, 0x2d, 0x40, 0x58, 0x54, 0x12, 0xa5, 0x5c, 0x57, 0x52, 0x35,
+ 0x6a, 0x2a, 0xa7, 0x34, 0x76, 0xe4, 0x36, 0x8c, 0xa1, 0xa3, 0xf0, 0x8a, 0x34, 0xf6, 0x12, 0x86,
+ 0x27, 0xe8, 0x52, 0x6c, 0xed, 0xeb, 0x26, 0x5b, 0x11, 0x2a, 0xbb, 0x0e, 0x54, 0xbc, 0x23, 0xb3,
+ 0xdb, 0x46, 0xa5, 0xb0, 0xd0, 0x77, 0x34, 0xbc, 0x23, 0xcb, 0xeb, 0xea, 0x9e, 0xe4, 0x88, 0x44,
+ 0xbe, 0x0e, 0xe3, 0x6b, 0xf6, 0xe3, 0x30, 0xcf, 0xd4, 0xcc, 0xe0, 0xd9, 0xac, 0x5a, 0xf6, 0xe3,
+ 0x30, 0xc9, 0x54, 0x3c, 0x9b, 0x95, 0xc2, 0x92, 0x7c, 0x15, 0x40, 0xd1, 0x54, 0x93, 0x53, 0x2b,
+ 0x78, 0x49, 0x86, 0xbd, 0x4b, 0xd5, 0x60, 0x23, 0x7f, 0x85, 0x61, 0x4c, 0x72, 0x98, 0xfb, 0xe4,
+ 0x24, 0x87, 0x73, 0x9f, 0x9c, 0xe4, 0xb0, 0xb0, 0x03, 0x17, 0x7b, 0x2e, 0x9d, 0x94, 0xa0, 0xc7,
+ 0x37, 0xf4, 0xa0, 0xc7, 0x17, 0x7b, 0x1d, 0xb1, 0xbe, 0x9e, 0x69, 0x65, 0xb6, 0x30, 0xd7, 0x5b,
+ 0x3a, 0xf9, 0x76, 0x36, 0x76, 0xe4, 0x8a, 0x8b, 0x05, 0xcf, 0xf2, 0xd5, 0x4b, 0x26, 0xc9, 0x62,
+ 0x0a, 0x6e, 0x7e, 0x28, 0x2b, 0x71, 0xe1, 0xd9, 0xa1, 0xac, 0x1e, 0xea, 0x78, 0x3c, 0x3f, 0xe9,
+ 0xe9, 0xfb, 0x2e, 0x4c, 0xf1, 0xac, 0xb9, 0xf7, 0xe9, 0xd1, 0xa1, 0xeb, 0x35, 0x78, 0xfe, 0x22,
+ 0x21, 0x83, 0x27, 0x52, 0xde, 0xc7, 0x70, 0x49, 0x45, 0xfa, 0x9e, 0x0e, 0x63, 0xed, 0x17, 0x53,
+ 0x77, 0x31, 0x86, 0xd0, 0xcf, 0x2d, 0x95, 0xbc, 0x15, 0x0a, 0x6a, 0xd4, 0x53, 0xf3, 0xad, 0x78,
+ 0x12, 0x98, 0x22, 0xaf, 0x51, 0xcf, 0xf8, 0x97, 0x39, 0x20, 0xbc, 0xa6, 0xb2, 0xdd, 0xb1, 0xd1,
+ 0x33, 0xdb, 0xc1, 0x58, 0x4b, 0x05, 0x81, 0x63, 0xef, 0x34, 0xa9, 0x1a, 0xa8, 0x4c, 0x18, 0xd7,
+ 0x86, 0x65, 0x56, 0xfc, 0xa2, 0x93, 0x20, 0xec, 0xb1, 0xd5, 0x65, 0x9f, 0x64, 0xab, 0xfb, 0x3a,
+ 0x3c, 0x5f, 0xea, 0x60, 0xfa, 0x6d, 0x59, 0xcb, 0x1d, 0xd7, 0x93, 0x9b, 0x94, 0xe6, 0xf3, 0x67,
+ 0x87, 0x68, 0x89, 0x2f, 0xed, 0xc7, 0x42, 0x91, 0x53, 0xd8, 0xbc, 0xec, 0x04, 0x6a, 0x0c, 0x09,
+ 0x29, 0xa7, 0x74, 0xb0, 0x24, 0x45, 0x4e, 0xe1, 0x24, 0x92, 0x87, 0xe3, 0x49, 0x39, 0x05, 0xb3,
+ 0x95, 0x45, 0x3c, 0x1c, 0x8f, 0xf6, 0x90, 0x75, 0x42, 0x12, 0xf2, 0x2e, 0x8c, 0x97, 0xba, 0x81,
+ 0x2b, 0x18, 0x0b, 0xab, 0xf0, 0xc8, 0x7e, 0x5b, 0x7c, 0x8a, 0x76, 0xf5, 0x89, 0xd0, 0x8d, 0x3f,
+ 0xce, 0xc1, 0xc5, 0xe4, 0xf0, 0x8a, 0xd2, 0x70, 0x7d, 0x64, 0x4e, 0x59, 0x1f, 0x69, 0xb3, 0x21,
+ 0x1b, 0x65, 0x9a, 0x78, 0x1a, 0xb3, 0x81, 0x67, 0xf1, 0xfe, 0x98, 0xb3, 0xa1, 0x06, 0xe3, 0xea,
+ 0x79, 0x37, 0xf4, 0x71, 0xcf, 0x3b, 0x95, 0x0b, 0xbb, 0xd4, 0xf3, 0xd0, 0x19, 0xc3, 0xd1, 0xd3,
+ 0x51, 0x3c, 0x6a, 0x06, 0xc7, 0x20, 0xff, 0x0e, 0x5c, 0xe6, 0x7b, 0x52, 0xbc, 0xb1, 0x4b, 0x47,
+ 0x92, 0xa3, 0x18, 0xb8, 0xc5, 0x93, 0xe3, 0xe2, 0x75, 0xae, 0x2a, 0xb1, 0x12, 0xdd, 0x66, 0xed,
+ 0x1c, 0x59, 0xf2, 0xcb, 0x94, 0x4a, 0x4e, 0xe5, 0x6d, 0x94, 0xe1, 0xa2, 0x28, 0x8d, 0x9c, 0xb6,
+ 0x65, 0x21, 0x1b, 0xe4, 0x83, 0x48, 0xdb, 0x85, 0x83, 0x1c, 0x53, 0x64, 0x61, 0x39, 0xe6, 0xff,
+ 0x56, 0x72, 0x33, 0xbf, 0x99, 0xe6, 0x73, 0xc3, 0xa3, 0x76, 0x73, 0xb0, 0xee, 0x6e, 0x23, 0x75,
+ 0x6a, 0xd9, 0x54, 0x9d, 0x9a, 0x54, 0xca, 0xe4, 0x52, 0x95, 0x32, 0x15, 0x98, 0xae, 0x75, 0x77,
+ 0x64, 0xdd, 0x71, 0x7f, 0x4d, 0xbf, 0xbb, 0x93, 0xd6, 0x2b, 0x71, 0x12, 0xe3, 0x47, 0xb2, 0x30,
+ 0xb1, 0xd1, 0xec, 0xee, 0x39, 0xed, 0x8a, 0x1d, 0xd8, 0xcf, 0xac, 0x9a, 0xef, 0x6d, 0x4d, 0xcd,
+ 0x17, 0xba, 0x96, 0x85, 0x0d, 0x1b, 0x48, 0xc7, 0xf7, 0x33, 0x19, 0x98, 0x8e, 0x48, 0xf8, 0x61,
+ 0xbd, 0x02, 0x43, 0xec, 0x87, 0xb8, 0xfc, 0x5e, 0x4e, 0x30, 0xe6, 0x69, 0x26, 0xc3, 0xbf, 0x84,
+ 0xe2, 0x4d, 0xcf, 0xe1, 0x86, 0x1c, 0x16, 0x3e, 0x0b, 0x63, 0x11, 0xdb, 0xb3, 0xa4, 0x97, 0xfc,
+ 0xf5, 0x0c, 0x14, 0xe2, 0x2d, 0x21, 0xf7, 0x61, 0x94, 0x71, 0x72, 0xa8, 0xbc, 0x97, 0xbf, 0xd2,
+ 0xa3, 0xcd, 0xd7, 0x05, 0x1a, 0xff, 0x3c, 0xec, 0x7c, 0xca, 0x21, 0xa6, 0xe4, 0xb0, 0x60, 0xc2,
+ 0x84, 0x8a, 0x95, 0xf2, 0x75, 0x6f, 0xe8, 0x12, 0xca, 0xf9, 0xf4, 0x7e, 0xd0, 0x92, 0x62, 0x6a,
+ 0x5f, 0x2d, 0x84, 0x8f, 0x2b, 0xda, 0xe4, 0x4a, 0x5d, 0x55, 0x38, 0x69, 0x16, 0xa3, 0x7c, 0x05,
+ 0xea, 0x3c, 0x4b, 0x99, 0xd0, 0x21, 0x1e, 0x79, 0x03, 0x46, 0x78, 0x7d, 0x6a, 0x42, 0xb7, 0x0e,
+ 0x42, 0x54, 0x39, 0x99, 0xe3, 0x18, 0x7f, 0x27, 0x07, 0xe7, 0xa3, 0xcf, 0xdb, 0xea, 0x34, 0xec,
+ 0x80, 0x6e, 0xd8, 0x9e, 0xdd, 0xf2, 0x4f, 0x59, 0x01, 0x57, 0x13, 0x9f, 0x86, 0xa9, 0xb4, 0xe4,
+ 0xa7, 0x29, 0x1f, 0x64, 0xc4, 0x3e, 0x08, 0x75, 0xa0, 0xfc, 0x83, 0xe4, 0x67, 0x90, 0xfb, 0x90,
+ 0xab, 0xd1, 0x40, 0xec, 0xbd, 0x57, 0x12, 0xbd, 0xaa, 0x7e, 0xd7, 0xf5, 0x1a, 0x0d, 0xf8, 0x20,
+ 0xf2, 0xb8, 0x50, 0x5a, 0x70, 0x3e, 0xc6, 0x85, 0x6c, 0xc3, 0xc8, 0xf2, 0xe3, 0x0e, 0xad, 0x07,
+ 0x22, 0x39, 0xea, 0xb5, 0xfe, 0xfc, 0x38, 0xae, 0x92, 0x1b, 0x95, 0x22, 0x40, 0xed, 0x2c, 0x8e,
+ 0xb2, 0x70, 0x1b, 0xf2, 0xb2, 0xf2, 0xb3, 0xcc, 0xdc, 0x85, 0xb7, 0x61, 0x5c, 0xa9, 0xe4, 0x4c,
+ 0x93, 0xfe, 0x17, 0xd8, 0xbe, 0xea, 0x36, 0x65, 0x3e, 0xd5, 0xe5, 0x84, 0xac, 0xa8, 0x64, 0xa3,
+ 0xe2, 0xb2, 0xa2, 0x75, 0x20, 0x8a, 0xfa, 0x08, 0x8d, 0x55, 0x98, 0xae, 0x1d, 0x38, 0x9d, 0x28,
+ 0x50, 0xac, 0x76, 0x22, 0x63, 0xc6, 0x1b, 0x71, 0x71, 0x8f, 0x9f, 0xc8, 0x71, 0x3a, 0xe3, 0xcf,
+ 0x32, 0x30, 0xc2, 0xfe, 0x7a, 0x78, 0xfb, 0x19, 0xdd, 0x32, 0x6f, 0x69, 0x5b, 0xe6, 0x8c, 0x12,
+ 0xab, 0x1d, 0x37, 0x8e, 0xdb, 0xa7, 0x6c, 0x96, 0xc7, 0x62, 0x80, 0x38, 0x32, 0xb9, 0x0b, 0xa3,
+ 0xc2, 0xa4, 0x48, 0xd8, 0x7e, 0xab, 0xc1, 0xdf, 0xa5, 0xb1, 0x51, 0x78, 0xc3, 0x77, 0x3b, 0x71,
+ 0x95, 0x88, 0xa4, 0x66, 0x72, 0xbd, 0x0c, 0xd9, 0xab, 0xe5, 0x4b, 0x77, 0xd1, 0x59, 0x8f, 0x87,
+ 0x2e, 0xf7, 0x97, 0x2e, 0x08, 0x4e, 0xbd, 0x7c, 0xeb, 0x4b, 0xe2, 0x35, 0x24, 0xd7, 0x8f, 0xc9,
+ 0x79, 0x99, 0xa4, 0x38, 0xf5, 0xa1, 0xa4, 0x05, 0xe7, 0x6b, 0xb5, 0x15, 0x34, 0x3f, 0xdc, 0x70,
+ 0xbd, 0xe0, 0x8e, 0xeb, 0x1d, 0xda, 0x68, 0x5b, 0x8c, 0x1a, 0x3e, 0xc5, 0x06, 0x21, 0xcd, 0x28,
+ 0xec, 0xb5, 0x54, 0xa3, 0xb0, 0x3e, 0x76, 0x0a, 0x46, 0x1b, 0x2e, 0xd4, 0x6a, 0x2b, 0x3c, 0x70,
+ 0xf8, 0x9f, 0x47, 0x7d, 0xbf, 0x9e, 0x81, 0x99, 0x5a, 0x6d, 0x25, 0x56, 0xd5, 0xaa, 0x8c, 0x58,
+ 0x9e, 0xd1, 0xf3, 0x7c, 0xa7, 0x76, 0x04, 0x8e, 0x42, 0x86, 0x4b, 0x78, 0x75, 0x2d, 0x38, 0x25,
+ 0x67, 0x42, 0x36, 0xc2, 0x18, 0xe9, 0x59, 0xcd, 0x1f, 0xa0, 0x47, 0x43, 0x51, 0xc3, 0x2d, 0xbc,
+ 0xe9, 0x58, 0xa9, 0xae, 0xe1, 0x66, 0x10, 0xe3, 0xbf, 0x39, 0xcf, 0xa3, 0xb0, 0xcb, 0xd9, 0xf2,
+ 0x1e, 0x4c, 0x08, 0x7a, 0x34, 0x9a, 0x17, 0x36, 0x21, 0x17, 0xd9, 0x06, 0xb9, 0xcb, 0xe1, 0x3c,
+ 0x3a, 0xef, 0x77, 0x8e, 0x8b, 0x43, 0xac, 0x6b, 0x4c, 0x0d, 0x9d, 0x3c, 0x80, 0xc9, 0x35, 0xfb,
+ 0xb1, 0xa2, 0xce, 0xe0, 0x2e, 0x51, 0xd7, 0xd8, 0xae, 0xd2, 0xb2, 0x1f, 0x0f, 0x60, 0x74, 0xa7,
+ 0xd3, 0x93, 0x03, 0x98, 0xd2, 0xdb, 0x24, 0x66, 0x60, 0x72, 0xc4, 0x6e, 0xa6, 0x8e, 0xd8, 0xc5,
+ 0x8e, 0xeb, 0x05, 0xd6, 0x6e, 0x48, 0xae, 0x65, 0x1c, 0x88, 0xb1, 0x26, 0xef, 0xc1, 0x8c, 0x12,
+ 0x02, 0xf4, 0x8e, 0xeb, 0xb5, 0x6c, 0x79, 0xe1, 0x42, 0x1d, 0x3f, 0xda, 0x12, 0xed, 0x22, 0xd8,
+ 0x4c, 0x62, 0x92, 0x2f, 0xa7, 0xb9, 0x99, 0x0d, 0x47, 0x96, 0x87, 0x29, 0x6e, 0x66, 0xbd, 0x2c,
+ 0x0f, 0x93, 0x0e, 0x67, 0x7b, 0xfd, 0x2c, 0x93, 0xf3, 0xbc, 0xf5, 0x03, 0x59, 0x1e, 0x87, 0x23,
+ 0xd7, 0xc3, 0x02, 0x79, 0x11, 0x72, 0x4b, 0x1b, 0x77, 0xf0, 0x65, 0x4a, 0x1a, 0x51, 0xb5, 0xf7,
+ 0xed, 0x76, 0x1d, 0x2f, 0x42, 0xc2, 0x1b, 0x40, 0x3d, 0x28, 0x97, 0x36, 0xee, 0x10, 0x1b, 0x66,
+ 0x31, 0xcf, 0x5b, 0xf0, 0xa5, 0x9b, 0x37, 0x95, 0xa1, 0xca, 0xe3, 0xa7, 0xdd, 0x10, 0x9f, 0x56,
+ 0xc4, 0x2c, 0x71, 0x81, 0xf5, 0xf8, 0xe6, 0xcd, 0xd4, 0x01, 0x09, 0x3f, 0x2c, 0x8d, 0x17, 0x3b,
+ 0xb0, 0xd6, 0xec, 0xc7, 0x91, 0x13, 0x87, 0x2f, 0x1c, 0x76, 0x5f, 0x94, 0x53, 0x2b, 0x72, 0x00,
+ 0xd1, 0x0e, 0x2c, 0x9d, 0x88, 0xdd, 0x63, 0xa3, 0x09, 0xe6, 0x0b, 0x57, 0xa7, 0x05, 0xa9, 0xae,
+ 0x93, 0x5e, 0xdd, 0xea, 0x65, 0x4c, 0x41, 0x27, 0x5b, 0xe1, 0x6d, 0x9c, 0xdf, 0x66, 0x45, 0x66,
+ 0xe4, 0x1b, 0xea, 0x6d, 0x9c, 0x2b, 0xc9, 0xb4, 0x66, 0x4d, 0x87, 0x2a, 0x1c, 0xee, 0xd5, 0x62,
+ 0xea, 0x5c, 0x92, 0x97, 0xfc, 0x89, 0xb3, 0x5f, 0xf2, 0x29, 0x0c, 0xad, 0xba, 0xf5, 0x03, 0x11,
+ 0x9c, 0xef, 0x8b, 0x6c, 0x17, 0xd6, 0xd3, 0xe8, 0x3f, 0xa9, 0xc5, 0x35, 0xb2, 0x27, 0xeb, 0xec,
+ 0x53, 0xd9, 0x2c, 0x10, 0x7d, 0x22, 0xac, 0x78, 0xe7, 0xc2, 0x5b, 0xae, 0x52, 0xc6, 0xe5, 0x51,
+ 0x3e, 0x69, 0x64, 0xd7, 0x9a, 0x3a, 0x39, 0xa1, 0x50, 0xa8, 0x50, 0xff, 0x20, 0x70, 0x3b, 0xe5,
+ 0xa6, 0xd3, 0xd9, 0x71, 0x6d, 0x4f, 0x86, 0x72, 0x1e, 0x78, 0x4f, 0x6e, 0x70, 0x7a, 0xab, 0x2e,
+ 0x19, 0x98, 0x09, 0x96, 0xe4, 0xcb, 0x30, 0xc5, 0x26, 0xf7, 0xf2, 0xe3, 0x80, 0xb6, 0xf9, 0xc8,
+ 0xcf, 0xa0, 0x44, 0x37, 0xa7, 0xe4, 0x2e, 0x09, 0x0b, 0xf9, 0x9c, 0xc2, 0xc5, 0x4e, 0x43, 0x02,
+ 0x2d, 0xb0, 0xa1, 0xc6, 0x8a, 0x34, 0x60, 0x7e, 0xcd, 0x7e, 0xac, 0xe4, 0x60, 0x56, 0x26, 0x29,
+ 0xc1, 0x09, 0x76, 0xf5, 0xe4, 0xb8, 0xf8, 0x0a, 0x9b, 0x60, 0x51, 0x74, 0xf1, 0x1e, 0xf3, 0xb5,
+ 0x27, 0x27, 0xf2, 0x4d, 0xb8, 0x20, 0x9a, 0x55, 0xc1, 0xbc, 0x61, 0xae, 0x77, 0x54, 0xdb, 0xb7,
+ 0xd1, 0x7f, 0x6b, 0xb6, 0x47, 0x87, 0xdd, 0x48, 0xdf, 0x12, 0x65, 0x87, 0x35, 0x24, 0x1f, 0xcb,
+ 0xe7, 0x8c, 0xcc, 0x5e, 0x35, 0x90, 0x8f, 0x60, 0x8a, 0x3f, 0xc7, 0xad, 0xb8, 0x7e, 0x80, 0xca,
+ 0x9a, 0xb9, 0xb3, 0xb9, 0x25, 0xf0, 0x37, 0x3e, 0xee, 0xc8, 0x13, 0x53, 0xee, 0xc4, 0x38, 0x93,
+ 0x77, 0x60, 0x7c, 0xc3, 0x69, 0xf3, 0xd0, 0xa3, 0xd5, 0x0d, 0x54, 0x2b, 0x8b, 0x13, 0xa8, 0xe3,
+ 0xb4, 0x2d, 0xa9, 0x31, 0xe9, 0x84, 0xdb, 0x85, 0x8a, 0x4d, 0xb6, 0x61, 0xbc, 0x56, 0x5b, 0xb9,
+ 0xe3, 0x30, 0xb9, 0xa4, 0x73, 0x34, 0x7f, 0xbe, 0xc7, 0x57, 0xbe, 0x9c, 0xfa, 0x95, 0x93, 0xbe,
+ 0xbf, 0x6f, 0xed, 0x3a, 0x4d, 0x6a, 0xd5, 0xdd, 0xce, 0x91, 0xa9, 0x72, 0x4a, 0x31, 0xd5, 0xbf,
+ 0xf0, 0x94, 0x4d, 0xf5, 0xab, 0x30, 0xad, 0x18, 0xcf, 0xa2, 0xe1, 0xec, 0x7c, 0x14, 0xaf, 0x4a,
+ 0x35, 0xcd, 0x8f, 0xbb, 0xa6, 0xc6, 0xe9, 0xa4, 0x8d, 0xfe, 0xc5, 0xb3, 0xda, 0xe8, 0x3b, 0x30,
+ 0xc3, 0x07, 0x43, 0xcc, 0x03, 0x1c, 0xe9, 0x85, 0x1e, 0x7d, 0x78, 0x2d, 0xb5, 0x0f, 0x67, 0xc5,
+ 0x48, 0xcb, 0x49, 0x86, 0xcf, 0xcf, 0x49, 0xae, 0x64, 0x17, 0x88, 0x00, 0xda, 0x81, 0xbd, 0x63,
+ 0xfb, 0x14, 0xeb, 0x7a, 0xbe, 0x47, 0x5d, 0xaf, 0xa4, 0xd6, 0x35, 0x25, 0xeb, 0xda, 0xe1, 0xd5,
+ 0xa4, 0x70, 0x24, 0x6d, 0x59, 0x8f, 0x9c, 0x5f, 0xd8, 0xb1, 0x2f, 0x68, 0x3a, 0xee, 0x24, 0x02,
+ 0x0f, 0xfd, 0x14, 0x9f, 0xb4, 0xf1, 0x7e, 0x4f, 0xe1, 0x4c, 0x1e, 0xc3, 0xf9, 0xe4, 0x57, 0x60,
+ 0x9d, 0x2f, 0x62, 0x9d, 0x2f, 0x6a, 0x75, 0xc6, 0x91, 0xf8, 0xbc, 0xd1, 0x9b, 0x15, 0xaf, 0xb5,
+ 0x07, 0x7f, 0xf2, 0x83, 0x19, 0xb8, 0xb0, 0x76, 0xa7, 0x84, 0xd9, 0x44, 0x1d, 0x1e, 0x89, 0x2e,
+ 0x74, 0xe9, 0xbd, 0x24, 0xde, 0x41, 0xe2, 0x6f, 0x33, 0x52, 0xe2, 0xc0, 0xad, 0x82, 0x89, 0xee,
+ 0x2f, 0xb7, 0x76, 0x6d, 0x9e, 0xa4, 0x54, 0xb0, 0x48, 0xf1, 0xfb, 0xfd, 0xd6, 0x1f, 0x16, 0x33,
+ 0x66, 0xaf, 0xaa, 0x48, 0x13, 0x16, 0xf4, 0x6e, 0x91, 0x5e, 0x14, 0xfb, 0xb4, 0xd9, 0x9c, 0x2f,
+ 0xe2, 0x8c, 0x7e, 0xe3, 0xe4, 0xb8, 0x78, 0x35, 0xd1, 0xbb, 0xa1, 0x67, 0x06, 0xc3, 0x54, 0x1a,
+ 0xdc, 0x87, 0x1f, 0x69, 0xa5, 0x08, 0xdd, 0xf3, 0x97, 0xb5, 0xd8, 0x3f, 0x89, 0xf2, 0xa5, 0x57,
+ 0x85, 0x44, 0xf2, 0x22, 0x5b, 0xef, 0x3d, 0x05, 0x44, 0x33, 0xc9, 0xf9, 0xde, 0x50, 0x7e, 0xb2,
+ 0x30, 0x95, 0xe2, 0xb2, 0x60, 0xfc, 0x56, 0x36, 0x76, 0x30, 0x92, 0x2a, 0x8c, 0x8a, 0xf9, 0xde,
+ 0xf3, 0x92, 0xf1, 0x62, 0xea, 0xac, 0x1e, 0x15, 0x4b, 0xc7, 0x94, 0xf4, 0xe4, 0x90, 0xb1, 0xc2,
+ 0x46, 0x8b, 0x1b, 0xef, 0x57, 0xf9, 0xb9, 0x87, 0x20, 0xed, 0x84, 0xaf, 0x9c, 0xdd, 0x11, 0x4f,
+ 0xf7, 0xf3, 0xc4, 0xa3, 0x5e, 0xd6, 0x46, 0x0e, 0x78, 0x2a, 0xa9, 0x5c, 0xe8, 0xcd, 0xa5, 0xe7,
+ 0x8d, 0x7a, 0x6a, 0x15, 0xb2, 0x5a, 0x8c, 0xdf, 0xcc, 0xc0, 0xa4, 0x76, 0xb2, 0x92, 0xdb, 0x8a,
+ 0xab, 0x62, 0xe4, 0xbd, 0xaf, 0xe1, 0xe0, 0x66, 0x1b, 0x77, 0x62, 0xbc, 0x2d, 0xfc, 0x0e, 0xb2,
+ 0xbd, 0xe9, 0x70, 0xb1, 0xc5, 0x3d, 0x57, 0xfb, 0xeb, 0x87, 0xc3, 0x3c, 0x98, 0x43, 0x3d, 0xf2,
+ 0x60, 0xfe, 0xfd, 0x22, 0x4c, 0xe9, 0x37, 0x62, 0xf2, 0x06, 0x8c, 0xa0, 0x6e, 0x5e, 0xaa, 0x57,
+ 0x50, 0x2d, 0x84, 0xea, 0x7b, 0xcd, 0x19, 0x85, 0xe3, 0x90, 0x57, 0x01, 0x42, 0x03, 0x70, 0xf9,
+ 0x32, 0x35, 0x7c, 0x72, 0x5c, 0xcc, 0xbc, 0x69, 0x2a, 0x05, 0xe4, 0x6b, 0x00, 0xeb, 0x6e, 0x83,
+ 0x86, 0xc9, 0x8d, 0xfb, 0x58, 0x5f, 0xbc, 0x96, 0x48, 0xb3, 0x72, 0xae, 0xed, 0x36, 0x68, 0x32,
+ 0xa7, 0x8a, 0xc2, 0x91, 0x7c, 0x1e, 0x86, 0xcd, 0x6e, 0x93, 0xca, 0x17, 0x8c, 0x71, 0x79, 0xc2,
+ 0x75, 0x9b, 0x34, 0xd2, 0x13, 0x78, 0xdd, 0xb8, 0x61, 0x21, 0x03, 0x90, 0x0f, 0x78, 0xfa, 0x15,
+ 0x11, 0x23, 0x74, 0x38, 0x7a, 0xab, 0x53, 0x24, 0x9f, 0x44, 0x94, 0x50, 0x85, 0x84, 0x3c, 0x80,
+ 0x51, 0xf5, 0x91, 0x49, 0xf1, 0x79, 0x57, 0x1f, 0x22, 0x15, 0xa5, 0x83, 0xc8, 0x8a, 0x1c, 0x7f,
+ 0x7f, 0x92, 0x5c, 0xc8, 0xbb, 0x30, 0xc6, 0xd8, 0xb3, 0x9d, 0xc3, 0x17, 0xb7, 0x1a, 0x7c, 0x91,
+ 0x53, 0x3e, 0x88, 0xed, 0x3e, 0x5a, 0x24, 0xcf, 0x90, 0x80, 0x7c, 0x19, 0xf3, 0xd8, 0x8a, 0xae,
+ 0xee, 0x6b, 0x95, 0x73, 0x25, 0xd1, 0xd5, 0x98, 0xd8, 0x36, 0xd1, 0xd3, 0x11, 0x3f, 0xb2, 0x17,
+ 0x86, 0x5c, 0x1b, 0x24, 0x65, 0xce, 0xeb, 0x89, 0x0a, 0xe6, 0x65, 0x14, 0xb1, 0x64, 0x92, 0x6a,
+ 0x8d, 0x2f, 0xe9, 0x40, 0x21, 0x12, 0x2a, 0x45, 0x5d, 0xd0, 0xaf, 0xae, 0x37, 0x13, 0x75, 0xa9,
+ 0x03, 0x98, 0xa8, 0x2e, 0xc1, 0x9d, 0x34, 0x60, 0x4a, 0x1e, 0x50, 0xa2, 0xbe, 0xf1, 0x7e, 0xf5,
+ 0xbd, 0x9a, 0xa8, 0x6f, 0xb6, 0xb1, 0x93, 0xac, 0x27, 0xc6, 0x93, 0xbc, 0x0b, 0x93, 0x12, 0xc2,
+ 0x53, 0x46, 0x4f, 0x44, 0x39, 0x77, 0x1b, 0x3b, 0x89, 0x44, 0xd1, 0x3a, 0xb2, 0x4a, 0xcd, 0x67,
+ 0xc7, 0xa4, 0x46, 0x1d, 0x9f, 0x15, 0x3a, 0x32, 0xf9, 0x10, 0xc6, 0xab, 0x2d, 0xd6, 0x10, 0xb7,
+ 0x6d, 0x07, 0x54, 0xf8, 0x43, 0x4a, 0x0b, 0x23, 0xa5, 0x44, 0x99, 0xaa, 0x3c, 0x19, 0x76, 0x54,
+ 0xa4, 0x25, 0xc3, 0x8e, 0xc0, 0xac, 0xf3, 0xf8, 0xab, 0xa2, 0x98, 0xc3, 0xd2, 0x57, 0xf2, 0xc5,
+ 0x14, 0x2b, 0x1f, 0x85, 0xbd, 0x88, 0x07, 0xc9, 0xa0, 0xf2, 0x55, 0x2f, 0x16, 0x8b, 0x57, 0xe5,
+ 0x49, 0xde, 0x83, 0x71, 0x91, 0x4d, 0xac, 0x64, 0xae, 0xfb, 0xf3, 0x05, 0x6c, 0x3c, 0x46, 0x78,
+ 0x90, 0x89, 0xc7, 0x2c, 0xdb, 0x8b, 0x99, 0xb3, 0x46, 0xf8, 0xe4, 0x4b, 0x30, 0xb7, 0xed, 0xb4,
+ 0x1b, 0xee, 0xa1, 0x2f, 0x8e, 0x29, 0xb1, 0xd1, 0xcd, 0x44, 0xce, 0x64, 0x87, 0xbc, 0x3c, 0x94,
+ 0x05, 0x13, 0x1b, 0x5f, 0x2a, 0x07, 0xf2, 0x7d, 0x09, 0xce, 0x7c, 0x06, 0x91, 0x7e, 0x33, 0x68,
+ 0x31, 0x31, 0x83, 0x92, 0xd5, 0xc7, 0xa7, 0x53, 0x6a, 0x35, 0xc4, 0x05, 0xa2, 0x9f, 0xef, 0xf7,
+ 0x5c, 0xa7, 0x3d, 0x3f, 0x8b, 0x7b, 0xe1, 0xf3, 0xf1, 0x98, 0x0a, 0x88, 0x27, 0x92, 0x8a, 0x1b,
+ 0x27, 0xc7, 0xc5, 0x4b, 0x71, 0x99, 0xff, 0x23, 0x57, 0x7b, 0x2e, 0x49, 0x61, 0x4d, 0x3e, 0x84,
+ 0x09, 0xf6, 0x7f, 0xa8, 0x94, 0x98, 0xd3, 0xec, 0x42, 0x15, 0x4c, 0x51, 0x0f, 0x8e, 0x11, 0xa6,
+ 0x3b, 0x4b, 0xd1, 0x57, 0x68, 0xac, 0xc8, 0xdb, 0x00, 0x4c, 0x6c, 0x12, 0xdb, 0xf1, 0xb9, 0x28,
+ 0xf4, 0x31, 0x4a, 0x5d, 0xc9, 0x8d, 0x38, 0x42, 0x26, 0xef, 0xc2, 0x38, 0xfb, 0x55, 0xeb, 0x36,
+ 0x5c, 0xb6, 0x36, 0xce, 0x23, 0x2d, 0x77, 0x4d, 0x65, 0xb4, 0x3e, 0x87, 0x6b, 0xae, 0xa9, 0x11,
+ 0x3a, 0x59, 0x81, 0x69, 0x0c, 0x51, 0x2d, 0x82, 0xa3, 0x3a, 0xd4, 0x9f, 0xbf, 0xa0, 0x58, 0x43,
+ 0xb0, 0x22, 0xcb, 0x09, 0xcb, 0xd4, 0xbb, 0x4c, 0x8c, 0x8c, 0xf8, 0x30, 0x9b, 0x7c, 0x4e, 0xf6,
+ 0xe7, 0xe7, 0xb1, 0x93, 0xa4, 0x04, 0x9f, 0xc4, 0xe0, 0xfb, 0x31, 0x1b, 0x11, 0x65, 0xe3, 0x92,
+ 0x8f, 0x4a, 0x6a, 0x85, 0x69, 0xdc, 0x89, 0x09, 0xe4, 0x6e, 0x79, 0x23, 0x1e, 0xc3, 0xf9, 0x22,
+ 0xb6, 0x00, 0x87, 0x79, 0xaf, 0x1e, 0x65, 0x11, 0x4f, 0x89, 0xe3, 0x9c, 0x42, 0x4d, 0xbe, 0x17,
+ 0xce, 0xc9, 0x1d, 0x44, 0x14, 0x89, 0x79, 0xbd, 0x70, 0xc6, 0x9d, 0xb8, 0xb1, 0x13, 0x56, 0x9d,
+ 0x98, 0xd2, 0xe9, 0x55, 0x10, 0x1b, 0xc6, 0x71, 0x58, 0x45, 0x8d, 0xcf, 0xf7, 0xab, 0xf1, 0x6a,
+ 0xa2, 0xc6, 0xf3, 0x38, 0x51, 0x92, 0x95, 0xa9, 0x3c, 0xc9, 0x12, 0x4c, 0x8a, 0x75, 0x24, 0x66,
+ 0xdb, 0x0b, 0xd8, 0x5b, 0xa8, 0xc4, 0x92, 0x2b, 0x30, 0x31, 0xe1, 0x74, 0x12, 0x75, 0x47, 0xe6,
+ 0x8f, 0x49, 0x2f, 0x6a, 0x3b, 0x72, 0xfc, 0x0d, 0x49, 0x47, 0x66, 0x3b, 0x52, 0x24, 0xc5, 0x2c,
+ 0x3f, 0xee, 0x78, 0x42, 0x45, 0x75, 0x29, 0xca, 0x8a, 0xa4, 0x08, 0x3f, 0x16, 0x0d, 0x31, 0xd4,
+ 0x2d, 0x21, 0x8d, 0x03, 0xd9, 0x82, 0xd9, 0xf0, 0xd4, 0x56, 0x18, 0x17, 0xa3, 0x28, 0xc1, 0xd1,
+ 0x51, 0x9f, 0xce, 0x37, 0x8d, 0x9e, 0xd8, 0x70, 0x41, 0x3b, 0xa7, 0x15, 0xd6, 0x97, 0x91, 0x35,
+ 0x66, 0xad, 0xd7, 0x0f, 0xf9, 0x74, 0xf6, 0xbd, 0xf8, 0x90, 0x8f, 0x60, 0x21, 0x7e, 0x36, 0x2b,
+ 0xb5, 0xbc, 0x84, 0xb5, 0xbc, 0x7e, 0x72, 0x5c, 0xbc, 0x92, 0x38, 0xde, 0xd3, 0x2b, 0xea, 0xc3,
+ 0x8d, 0x7c, 0x0d, 0xe6, 0xf5, 0xf3, 0x59, 0xa9, 0xc9, 0xc0, 0x9a, 0x70, 0xe9, 0x84, 0x07, 0x7b,
+ 0x7a, 0x0d, 0x3d, 0x79, 0x90, 0x00, 0x8a, 0xa9, 0xb3, 0x5b, 0xa9, 0xe6, 0xe5, 0xa8, 0x41, 0x89,
+ 0x55, 0x92, 0x5e, 0xdd, 0x69, 0x2c, 0xc9, 0x21, 0x5c, 0x4a, 0x3b, 0x26, 0x94, 0x4a, 0x5f, 0x09,
+ 0x95, 0xc0, 0x9f, 0x4a, 0x3f, 0x72, 0xd2, 0x6b, 0x3e, 0x85, 0x2d, 0xf9, 0x32, 0x9c, 0x53, 0xd6,
+ 0x97, 0x52, 0xdf, 0xab, 0x58, 0x1f, 0xba, 0x82, 0xab, 0x0b, 0x33, 0xbd, 0x96, 0x74, 0x1e, 0xa4,
+ 0x05, 0xb3, 0xb2, 0xe1, 0xa8, 0x6d, 0x17, 0x47, 0xcf, 0x15, 0x6d, 0x57, 0x4d, 0x62, 0x2c, 0x5d,
+ 0x16, 0xbb, 0xea, 0x7c, 0x63, 0xc7, 0xea, 0x44, 0x84, 0xea, 0x4c, 0x4f, 0xe1, 0x4b, 0x56, 0x60,
+ 0xa4, 0xb6, 0x51, 0xbd, 0x73, 0x67, 0x79, 0xfe, 0x35, 0xac, 0x41, 0xfa, 0x8d, 0x71, 0xa0, 0x76,
+ 0x69, 0x12, 0xe6, 0x8a, 0x1d, 0x67, 0x77, 0x57, 0x7b, 0xb0, 0xe2, 0xa8, 0xe4, 0xfb, 0xd0, 0x50,
+ 0x90, 0xed, 0xa8, 0x25, 0xdf, 0x77, 0xf6, 0x30, 0xea, 0xb4, 0x3f, 0xff, 0xba, 0xf6, 0xde, 0x2f,
+ 0x23, 0x72, 0x97, 0x31, 0x61, 0x59, 0x02, 0x9d, 0x4b, 0x9b, 0xec, 0xfe, 0x2f, 0x76, 0x6e, 0xcb,
+ 0x8e, 0x58, 0xa9, 0x9b, 0x78, 0xb2, 0x22, 0xd6, 0x6f, 0x7b, 0x4e, 0x60, 0xed, 0x77, 0xb5, 0xe6,
+ 0xcf, 0x7f, 0x4a, 0x8b, 0xc0, 0xcc, 0xd3, 0xb8, 0x29, 0xbd, 0xf6, 0x8a, 0xa8, 0xf0, 0x05, 0x7e,
+ 0x5b, 0xee, 0xd1, 0x73, 0x33, 0x7b, 0x31, 0x3a, 0x9f, 0xfc, 0x40, 0x06, 0xce, 0x6f, 0xbb, 0xde,
+ 0x41, 0xd3, 0xb5, 0x1b, 0xb2, 0x55, 0x62, 0x0f, 0x7f, 0xa3, 0xdf, 0x1e, 0xfe, 0x99, 0xc4, 0x1e,
+ 0x6e, 0x1c, 0x0a, 0x36, 0x56, 0x18, 0xd0, 0x3c, 0xb1, 0x9f, 0xf7, 0xa8, 0x8a, 0x7c, 0x1f, 0x5c,
+ 0x4e, 0x2f, 0x51, 0x26, 0xe5, 0x9b, 0x38, 0x29, 0x6f, 0x9e, 0x1c, 0x17, 0xdf, 0xec, 0x55, 0x53,
+ 0xfa, 0x04, 0x3d, 0x95, 0xf5, 0xbd, 0xa1, 0xfc, 0xd5, 0xc2, 0xb5, 0x7b, 0x43, 0xf9, 0x6b, 0x85,
+ 0xd7, 0xcd, 0x17, 0x6a, 0xa5, 0xb5, 0xd5, 0x6a, 0x43, 0x1e, 0xae, 0x32, 0xe6, 0x3a, 0xa7, 0x31,
+ 0xaf, 0xf4, 0x2b, 0x8d, 0x38, 0x1a, 0x7f, 0x2b, 0x03, 0xc5, 0x53, 0x26, 0x09, 0x3b, 0xcf, 0xa2,
+ 0x91, 0xa8, 0xd1, 0x40, 0x8d, 0xdc, 0x1e, 0x8d, 0x9f, 0xa5, 0x9b, 0x8d, 0xe8, 0x24, 0xe8, 0x74,
+ 0x28, 0xd2, 0x85, 0x28, 0xbe, 0xa7, 0xc9, 0x34, 0x21, 0x12, 0xcb, 0x58, 0x85, 0x42, 0x7c, 0xf2,
+ 0x90, 0xcf, 0xc1, 0xa4, 0x9a, 0xac, 0x40, 0xaa, 0x12, 0x78, 0xa0, 0x11, 0x6f, 0x4f, 0x3b, 0x10,
+ 0x35, 0x44, 0xe3, 0x17, 0x32, 0x30, 0x9b, 0xb2, 0xc2, 0xc8, 0x15, 0x18, 0xc2, 0x6c, 0x62, 0x8a,
+ 0xd5, 0x50, 0x2c, 0x8b, 0x18, 0x96, 0x93, 0x4f, 0xc3, 0x68, 0x65, 0xbd, 0x56, 0x2b, 0xad, 0x4b,
+ 0x65, 0x04, 0x3f, 0x88, 0xdb, 0xbe, 0xe5, 0xdb, 0xba, 0xb1, 0x81, 0x40, 0x23, 0x6f, 0xc2, 0x48,
+ 0x75, 0x03, 0x09, 0xb8, 0xed, 0x2b, 0xb6, 0xd7, 0xe9, 0xc4, 0xf1, 0x05, 0x92, 0xf1, 0x63, 0x19,
+ 0x20, 0xc9, 0xed, 0x82, 0xdc, 0x84, 0x71, 0x75, 0x53, 0xe2, 0xed, 0xc5, 0x17, 0x58, 0x65, 0xe1,
+ 0x98, 0x2a, 0x0e, 0xa9, 0xc0, 0x30, 0xe6, 0x81, 0x0d, 0xad, 0x1c, 0x52, 0x97, 0xc5, 0x85, 0xc4,
+ 0xb2, 0x18, 0xc6, 0x2c, 0xb3, 0x26, 0x27, 0x36, 0x7e, 0x27, 0x03, 0x24, 0xdd, 0x76, 0x71, 0x20,
+ 0x2b, 0xab, 0xb7, 0x94, 0xd8, 0x05, 0x6a, 0xbe, 0xa0, 0x30, 0xd9, 0x9b, 0xaa, 0x06, 0x88, 0xa2,
+ 0x1c, 0x5c, 0xd1, 0xd4, 0x4e, 0xbd, 0x1d, 0x5e, 0xaf, 0xc1, 0xf0, 0x43, 0xea, 0xed, 0x48, 0xb3,
+ 0x6e, 0x34, 0x05, 0x7d, 0xc4, 0x00, 0xaa, 0x1a, 0x06, 0x31, 0x8c, 0x3f, 0xce, 0xc0, 0x5c, 0xda,
+ 0x1d, 0xe5, 0x14, 0xbf, 0x54, 0x23, 0xe6, 0x52, 0x8b, 0x16, 0x56, 0xdc, 0x4e, 0x34, 0x74, 0xa4,
+ 0x2d, 0xc2, 0x30, 0x6b, 0xac, 0x1c, 0x61, 0x54, 0x83, 0xb1, 0xde, 0xf0, 0x4d, 0x0e, 0x67, 0x08,
+ 0x3c, 0x46, 0xdf, 0x10, 0x86, 0x77, 0x44, 0x04, 0x9c, 0xdd, 0x26, 0x87, 0x33, 0x84, 0x35, 0xb7,
+ 0x41, 0xa5, 0x7a, 0x08, 0x11, 0x5a, 0x0c, 0x60, 0x72, 0x38, 0xb9, 0x02, 0xa3, 0x0f, 0xda, 0xab,
+ 0xd4, 0x7e, 0x24, 0x73, 0x56, 0xa0, 0x45, 0x98, 0xdb, 0xb6, 0x9a, 0x0c, 0x66, 0xca, 0x42, 0xe3,
+ 0x67, 0x32, 0x30, 0x93, 0xb8, 0x1e, 0x9d, 0xee, 0x7a, 0xdb, 0xdf, 0x07, 0x6e, 0x90, 0xf6, 0xf1,
+ 0xcf, 0x1f, 0x4a, 0xff, 0x7c, 0xe3, 0xbf, 0x1b, 0x81, 0x0b, 0x3d, 0xb4, 0x55, 0x91, 0x8f, 0x6e,
+ 0xe6, 0x54, 0x1f, 0xdd, 0xaf, 0xc0, 0x64, 0xb9, 0x69, 0x3b, 0x2d, 0x7f, 0xd3, 0x8d, 0xbe, 0x38,
+ 0x72, 0xf5, 0xc1, 0x32, 0xe1, 0x07, 0x11, 0xfa, 0x84, 0x5c, 0xac, 0x23, 0x85, 0x15, 0xb8, 0x49,
+ 0x61, 0x59, 0x63, 0x96, 0xf0, 0x92, 0xcd, 0xfd, 0x05, 0xf1, 0x92, 0xd5, 0xfd, 0xb6, 0x86, 0x9e,
+ 0xaa, 0xdf, 0x56, 0xba, 0xcd, 0xf7, 0xf0, 0x93, 0x78, 0x00, 0x94, 0x61, 0x92, 0x9b, 0xc4, 0x95,
+ 0x7c, 0x3e, 0x48, 0x23, 0x09, 0x33, 0x3a, 0xdb, 0x4f, 0x8e, 0x85, 0x46, 0x43, 0x56, 0x74, 0x1f,
+ 0xa3, 0x51, 0x7c, 0x33, 0xbe, 0xd2, 0xdb, 0x87, 0x48, 0xb3, 0x15, 0xd1, 0x7c, 0x89, 0xbe, 0x09,
+ 0x73, 0x69, 0xd7, 0xdd, 0xf9, 0xbc, 0x66, 0x6d, 0xdb, 0xd3, 0x4a, 0x7b, 0xf0, 0x4b, 0xf3, 0x41,
+ 0xea, 0xa5, 0x59, 0xfa, 0x7e, 0x8f, 0x69, 0x21, 0x9d, 0x7b, 0xac, 0x05, 0x8e, 0xdb, 0xdf, 0x43,
+ 0xdc, 0xf8, 0x0a, 0xbc, 0xd8, 0x97, 0x9c, 0xbc, 0xa3, 0xc5, 0x18, 0x7a, 0x2d, 0x19, 0x63, 0xe8,
+ 0x3b, 0xc7, 0xc5, 0x19, 0xcd, 0x6f, 0x73, 0x2d, 0x54, 0xf8, 0x1b, 0x3f, 0x93, 0xd5, 0x3d, 0x8e,
+ 0xff, 0x22, 0x2e, 0xd4, 0x6b, 0x30, 0xbc, 0xbd, 0x4f, 0x3d, 0x79, 0x3c, 0xe0, 0x87, 0x1c, 0x32,
+ 0x80, 0xfa, 0x21, 0x88, 0x41, 0xee, 0xc0, 0xd4, 0x06, 0x9f, 0xb8, 0x72, 0x36, 0x0e, 0x45, 0x3a,
+ 0x97, 0x8e, 0xd0, 0x0c, 0xa6, 0x4c, 0xc7, 0x18, 0x95, 0x71, 0x37, 0xd6, 0xe9, 0x22, 0x42, 0x12,
+ 0xf7, 0x8c, 0xe2, 0x02, 0xc4, 0x54, 0xe4, 0x0b, 0x16, 0x6d, 0xb6, 0x66, 0x0c, 0x6a, 0xec, 0xc2,
+ 0xa5, 0xbe, 0x8c, 0xd8, 0xb9, 0x0d, 0x9d, 0xf0, 0x57, 0xcc, 0xf2, 0xba, 0x2f, 0xa9, 0xa9, 0xd0,
+ 0x19, 0xdf, 0x84, 0x09, 0xb5, 0x97, 0xf1, 0x08, 0x62, 0xbf, 0xc5, 0xac, 0xe0, 0x47, 0x10, 0x03,
+ 0x98, 0x1c, 0x1e, 0xbd, 0xe5, 0x64, 0xd3, 0xdf, 0x72, 0xa2, 0xe1, 0xcf, 0x9d, 0x36, 0xfc, 0xac,
+ 0x72, 0xdc, 0xe1, 0x94, 0xca, 0xf1, 0xb7, 0x5a, 0x39, 0x86, 0x40, 0x32, 0x39, 0xfc, 0xa9, 0x56,
+ 0xfe, 0x4f, 0x65, 0x92, 0x33, 0x74, 0xbc, 0x92, 0xcb, 0x3d, 0x13, 0x65, 0x2a, 0x4b, 0x5b, 0xbd,
+ 0x11, 0x66, 0x24, 0x53, 0x64, 0x4f, 0x93, 0x29, 0xce, 0x32, 0x11, 0x51, 0xee, 0xe5, 0x43, 0x3a,
+ 0x14, 0xc9, 0x81, 0x76, 0xc2, 0xda, 0x45, 0x62, 0x19, 0xdf, 0xca, 0xc0, 0xb9, 0x54, 0x9d, 0x39,
+ 0xab, 0x95, 0x2b, 0xe7, 0x95, 0x75, 0x18, 0xd7, 0xcc, 0x73, 0x8c, 0xb3, 0xc4, 0xbf, 0x18, 0xbc,
+ 0x2d, 0xc6, 0x4b, 0x30, 0x16, 0xbe, 0xd8, 0x92, 0x39, 0x39, 0x74, 0x68, 0x17, 0x29, 0x1f, 0xfe,
+ 0x6a, 0x00, 0xec, 0x0b, 0x9e, 0xaa, 0x69, 0xb5, 0xf1, 0x4f, 0xb3, 0x3c, 0x01, 0xee, 0x33, 0x1b,
+ 0xca, 0x36, 0xdd, 0x1e, 0x9a, 0x35, 0xa9, 0x77, 0x00, 0x5b, 0xb2, 0x0c, 0x23, 0xb5, 0xc0, 0x0e,
+ 0xba, 0x32, 0x6c, 0xc7, 0xac, 0x4a, 0x86, 0x05, 0x0f, 0x17, 0xa3, 0xc0, 0x0d, 0x3e, 0x42, 0x34,
+ 0x2d, 0x01, 0x42, 0x14, 0xb3, 0xea, 0xdf, 0xcf, 0xc0, 0x84, 0x4a, 0x4c, 0x3e, 0x84, 0x29, 0x19,
+ 0xa0, 0x93, 0x07, 0x33, 0x11, 0xcf, 0xcb, 0xd2, 0x14, 0x4c, 0x06, 0xe8, 0x54, 0x83, 0x9f, 0x68,
+ 0xf8, 0xea, 0x56, 0xdd, 0x51, 0x91, 0x49, 0x03, 0x48, 0x6b, 0xd7, 0xb6, 0x0e, 0xa9, 0x7d, 0x40,
+ 0xfd, 0xc0, 0xe2, 0x26, 0x3b, 0xe2, 0x15, 0x5a, 0xb2, 0x5f, 0xbb, 0x53, 0xe2, 0xd6, 0x3a, 0x6c,
+ 0x24, 0x44, 0xa4, 0xd5, 0x04, 0x8d, 0xfa, 0xb4, 0xd6, 0xda, 0xb5, 0xb7, 0x79, 0x21, 0xa7, 0x33,
+ 0xfe, 0x64, 0x84, 0x4f, 0x37, 0x11, 0xcf, 0x77, 0x07, 0xa6, 0x1e, 0x54, 0x2b, 0x65, 0x45, 0xd1,
+ 0xae, 0xa7, 0x83, 0x5a, 0x7e, 0x1c, 0x50, 0xaf, 0x6d, 0x37, 0xe5, 0x7d, 0x37, 0x3a, 0x82, 0x5c,
+ 0xa7, 0x51, 0x4f, 0x57, 0xc2, 0xc7, 0x38, 0xb2, 0x3a, 0xf8, 0xcd, 0x3a, 0xac, 0x23, 0x3b, 0x60,
+ 0x1d, 0xbe, 0xdd, 0x6a, 0xf6, 0xa8, 0x43, 0xe7, 0x48, 0xf6, 0xf1, 0xea, 0xbb, 0xdf, 0xdd, 0x51,
+ 0x6a, 0xc9, 0xf5, 0xaf, 0xe5, 0x65, 0x51, 0xcb, 0xf3, 0x42, 0xad, 0x92, 0x5a, 0x4f, 0x82, 0x6b,
+ 0xb4, 0x4f, 0x0c, 0x9d, 0xba, 0x4f, 0xfc, 0x8d, 0x0c, 0x8c, 0x70, 0xf1, 0x55, 0x4c, 0xe3, 0x1e,
+ 0x02, 0xf2, 0xf6, 0xd3, 0x11, 0x90, 0x0b, 0x78, 0x4e, 0x68, 0x13, 0x9a, 0x97, 0x91, 0x4a, 0x6c,
+ 0x5d, 0x48, 0x6f, 0x00, 0x7c, 0x32, 0xe3, 0x25, 0xa7, 0x2f, 0x0b, 0x52, 0x8d, 0x42, 0x69, 0x8c,
+ 0x9e, 0xea, 0xad, 0x2d, 0xc3, 0x8f, 0x8c, 0x8a, 0x50, 0x1a, 0x7a, 0x00, 0x8d, 0x55, 0x18, 0x13,
+ 0x01, 0x3a, 0x96, 0x8e, 0xc4, 0xc3, 0x78, 0x41, 0x33, 0x6d, 0x6a, 0x2c, 0x1d, 0x45, 0xa2, 0xb9,
+ 0x08, 0xf1, 0x61, 0xed, 0x1c, 0x69, 0xf9, 0x84, 0x25, 0x22, 0x79, 0xc0, 0xf3, 0x6c, 0xf2, 0x88,
+ 0xc7, 0x7a, 0x8a, 0x83, 0x10, 0x2e, 0x42, 0x7f, 0x49, 0x2f, 0xff, 0x94, 0x00, 0xc7, 0x11, 0x0f,
+ 0xb2, 0x0a, 0x05, 0x34, 0x87, 0xa3, 0x0d, 0xbe, 0x6a, 0xaa, 0x15, 0x1e, 0x04, 0x42, 0x98, 0x34,
+ 0x07, 0xbc, 0x4c, 0x2c, 0xb7, 0x98, 0xff, 0x65, 0x82, 0xd2, 0xf8, 0xe9, 0x2c, 0x14, 0xe2, 0xb3,
+ 0x8f, 0xbc, 0x0b, 0xe3, 0x61, 0xc4, 0xe9, 0xd0, 0x03, 0x1c, 0x1f, 0xc8, 0xa2, 0x10, 0xd5, 0x7a,
+ 0x76, 0x46, 0x05, 0x9d, 0x2c, 0x42, 0x9e, 0x2d, 0xe2, 0x78, 0x26, 0xe3, 0xae, 0x80, 0xa9, 0x1e,
+ 0x59, 0x12, 0x8f, 0xd4, 0x60, 0x96, 0x2d, 0x9a, 0x9a, 0xd3, 0xde, 0x6b, 0xd2, 0x55, 0x77, 0xcf,
+ 0xed, 0x06, 0x51, 0xb2, 0x42, 0x7e, 0x81, 0xb1, 0x5b, 0x4d, 0xad, 0x58, 0x4f, 0x55, 0x98, 0x42,
+ 0xad, 0xe4, 0x59, 0x1f, 0x1a, 0x20, 0xcf, 0xba, 0xb2, 0xb3, 0xfe, 0x61, 0x16, 0xc6, 0x95, 0xe9,
+ 0x47, 0xae, 0x41, 0xbe, 0xea, 0xaf, 0xba, 0xf5, 0x83, 0x30, 0x94, 0xe4, 0xe4, 0xc9, 0x71, 0x71,
+ 0xcc, 0xf1, 0xad, 0x26, 0x02, 0xcd, 0xb0, 0x98, 0x2c, 0xc1, 0x24, 0xff, 0x4b, 0x26, 0x0e, 0xc9,
+ 0x46, 0xba, 0x35, 0x8e, 0x2c, 0x53, 0x86, 0xa8, 0x9b, 0xad, 0x46, 0x42, 0xbe, 0x0a, 0xc0, 0x01,
+ 0x18, 0x7c, 0x20, 0x37, 0x78, 0xd8, 0x04, 0x51, 0x41, 0x4a, 0xd8, 0x01, 0x85, 0x21, 0xf9, 0x3a,
+ 0x0f, 0x68, 0x2d, 0x97, 0xcb, 0xd0, 0xe0, 0x71, 0x1f, 0x18, 0x7f, 0x2b, 0x3d, 0xfc, 0x8c, 0xca,
+ 0x52, 0xe4, 0xfa, 0x59, 0x30, 0x69, 0xdd, 0x7d, 0x44, 0xbd, 0xa3, 0x52, 0x80, 0x88, 0x0a, 0x86,
+ 0xf1, 0xbf, 0x64, 0x94, 0x45, 0x46, 0xd6, 0x31, 0x57, 0x37, 0x9f, 0x40, 0xc2, 0xa4, 0x2c, 0xbc,
+ 0x62, 0x48, 0xb8, 0x49, 0x77, 0x97, 0x9e, 0x17, 0xd6, 0x6d, 0xb3, 0xe1, 0x34, 0x8c, 0xe5, 0xf0,
+ 0xe6, 0x40, 0xf2, 0x05, 0x18, 0xc2, 0xae, 0xcb, 0x9e, 0xda, 0x34, 0x79, 0xca, 0x0f, 0xb1, 0x3e,
+ 0xc3, 0x86, 0x20, 0x25, 0xf9, 0xb4, 0x70, 0xdc, 0xe6, 0x9d, 0x3f, 0xa5, 0x1c, 0xd5, 0xec, 0x3b,
+ 0xc2, 0xe3, 0x3d, 0x8a, 0x40, 0xa4, 0xcc, 0x9e, 0xbf, 0x95, 0x85, 0x42, 0x7c, 0x69, 0x93, 0x0f,
+ 0x60, 0x42, 0x1e, 0xbf, 0x2b, 0xb6, 0xc8, 0x7a, 0x31, 0x21, 0xb2, 0x4e, 0xc8, 0x33, 0x78, 0xdf,
+ 0x56, 0x4d, 0xd0, 0x4c, 0x8d, 0x80, 0xc9, 0x42, 0x9b, 0x22, 0x22, 0xa0, 0xb2, 0xa8, 0x02, 0x37,
+ 0xe8, 0xc4, 0xe2, 0x28, 0x4b, 0x34, 0xf2, 0x16, 0xe4, 0xd6, 0xee, 0x94, 0x84, 0x83, 0x5f, 0x21,
+ 0x7e, 0x48, 0x73, 0x4b, 0x59, 0xdd, 0x6e, 0x97, 0xe1, 0x93, 0x55, 0x25, 0xe4, 0xf8, 0x88, 0x66,
+ 0x6e, 0x28, 0xc1, 0x61, 0xe3, 0x4e, 0x8f, 0x3d, 0x7e, 0x6f, 0x28, 0x9f, 0x2b, 0x0c, 0x89, 0x20,
+ 0xba, 0xff, 0x7d, 0x0e, 0xc6, 0xc2, 0xfa, 0x09, 0x51, 0xdd, 0xa6, 0xb9, 0x8b, 0x34, 0xb9, 0x08,
+ 0x79, 0x29, 0xdd, 0x09, 0x3f, 0xbf, 0x51, 0x5f, 0x48, 0x76, 0xf3, 0x20, 0xc5, 0x38, 0xbe, 0x2b,
+ 0x98, 0xf2, 0x27, 0xb9, 0x09, 0xa1, 0x8c, 0xd6, 0x4b, 0x98, 0x1b, 0x62, 0x03, 0x66, 0x86, 0x68,
+ 0x64, 0x0a, 0xb2, 0x0e, 0x0f, 0xcc, 0x36, 0x66, 0x66, 0x9d, 0x06, 0xf9, 0x00, 0xf2, 0x76, 0xa3,
+ 0x41, 0x1b, 0x96, 0x2d, 0x6d, 0xb3, 0xfa, 0x4d, 0x9a, 0x3c, 0xe3, 0xc6, 0xcf, 0x0c, 0xa4, 0x2a,
+ 0x05, 0xa4, 0x04, 0x63, 0x4d, 0x9b, 0x5b, 0x7b, 0x36, 0x06, 0x38, 0x80, 0x22, 0x0e, 0x79, 0x46,
+ 0xb6, 0xe5, 0xd3, 0x06, 0x79, 0x0d, 0x86, 0xd8, 0x68, 0x8a, 0x13, 0x47, 0x0a, 0x95, 0x6c, 0x30,
+ 0x79, 0x87, 0xad, 0x3c, 0x67, 0x22, 0x02, 0x79, 0x05, 0x72, 0xdd, 0xc5, 0x5d, 0x71, 0x96, 0x14,
+ 0xa2, 0xf0, 0xff, 0x21, 0x1a, 0x2b, 0x26, 0xb7, 0x20, 0x7f, 0xa8, 0x47, 0x8e, 0x3f, 0x17, 0x1b,
+ 0xc6, 0x10, 0x3f, 0x44, 0x24, 0xaf, 0x41, 0xce, 0xf7, 0x5d, 0x61, 0xd0, 0x34, 0x1b, 0x5a, 0x99,
+ 0x3e, 0x08, 0x47, 0x8d, 0x71, 0xf7, 0x7d, 0x77, 0x29, 0x0f, 0x23, 0xfc, 0x80, 0x31, 0x2e, 0x01,
+ 0x44, 0xdf, 0x98, 0xf4, 0xdb, 0x34, 0xbe, 0x0a, 0x63, 0xe1, 0xb7, 0x91, 0x17, 0x01, 0x0e, 0xe8,
+ 0x91, 0xb5, 0x6f, 0xb7, 0x1b, 0x4d, 0x2e, 0x9d, 0x4e, 0x98, 0x63, 0x07, 0xf4, 0x68, 0x05, 0x01,
+ 0xe4, 0x02, 0x8c, 0x76, 0xd8, 0xf0, 0x8b, 0x39, 0x3e, 0x61, 0x8e, 0x74, 0xba, 0x3b, 0x6c, 0x2a,
+ 0xcf, 0xc3, 0x28, 0xea, 0x59, 0xc5, 0x8a, 0x9c, 0x34, 0xe5, 0x4f, 0xe3, 0x4f, 0x73, 0x98, 0x5e,
+ 0x49, 0x69, 0x10, 0x79, 0x19, 0x26, 0xeb, 0x1e, 0xc5, 0xb3, 0xcc, 0x66, 0x12, 0x9a, 0xa8, 0x67,
+ 0x22, 0x02, 0x56, 0x1b, 0xe4, 0x0a, 0x4c, 0x77, 0xba, 0x3b, 0x4d, 0xa7, 0xce, 0x6a, 0xb3, 0xea,
+ 0x3b, 0x22, 0x1f, 0xc4, 0x84, 0x39, 0xc9, 0xc1, 0xf7, 0xe9, 0x51, 0x79, 0x07, 0x23, 0x0f, 0x16,
+ 0xd4, 0xc0, 0xd1, 0x41, 0x98, 0xf8, 0xde, 0x9c, 0x56, 0xe0, 0x68, 0x9b, 0x79, 0x1e, 0x46, 0x6c,
+ 0x7b, 0xaf, 0xeb, 0xf0, 0x08, 0x61, 0x13, 0xa6, 0xf8, 0x45, 0x3e, 0x05, 0x33, 0x51, 0x2c, 0x73,
+ 0xd9, 0x8c, 0x61, 0x6c, 0x46, 0x21, 0x2c, 0x28, 0x73, 0x38, 0x79, 0x13, 0x88, 0x5a, 0x9f, 0xbb,
+ 0xf3, 0x11, 0xad, 0xf3, 0x39, 0x39, 0x61, 0xce, 0x28, 0x25, 0x0f, 0xb0, 0x80, 0xbc, 0x04, 0x13,
+ 0x1e, 0xf5, 0x51, 0x3a, 0xc4, 0x6e, 0xc3, 0xec, 0x83, 0xe6, 0xb8, 0x84, 0xb1, 0xbe, 0xbb, 0x0a,
+ 0x05, 0xa5, 0x3b, 0x30, 0x36, 0x37, 0x4f, 0x86, 0x60, 0x4e, 0x45, 0x70, 0xb3, 0x53, 0x6d, 0x90,
+ 0x2f, 0xc1, 0x82, 0x82, 0xc9, 0x13, 0x21, 0x5a, 0xb4, 0xe9, 0xec, 0x39, 0x3b, 0x4d, 0x2a, 0xe6,
+ 0x5b, 0x72, 0x56, 0x87, 0x57, 0x48, 0x73, 0x3e, 0xa2, 0xe6, 0x29, 0x12, 0x97, 0x05, 0x2d, 0x59,
+ 0x85, 0xb9, 0x18, 0x67, 0xda, 0xb0, 0xba, 0x9d, 0x9e, 0x21, 0xf9, 0x22, 0x9e, 0x44, 0xe7, 0x49,
+ 0x1b, 0x5b, 0x1d, 0xe3, 0x9b, 0x30, 0xa1, 0xce, 0x49, 0xd6, 0x09, 0xaa, 0x5c, 0x22, 0x66, 0xdf,
+ 0x78, 0x08, 0xab, 0xb2, 0x7b, 0xe1, 0x54, 0x84, 0x12, 0x84, 0x39, 0xfe, 0xcd, 0xc9, 0x10, 0x8a,
+ 0x43, 0xf8, 0x12, 0x4c, 0x34, 0x1c, 0xbf, 0xd3, 0xb4, 0x8f, 0xac, 0x28, 0xc3, 0xb7, 0x39, 0x2e,
+ 0x60, 0xa8, 0xf8, 0x59, 0x82, 0x99, 0xc4, 0x3e, 0xa8, 0x48, 0x1a, 0x7c, 0x5f, 0xef, 0x2f, 0x69,
+ 0x18, 0x6d, 0x98, 0x50, 0xcf, 0xb5, 0x53, 0x12, 0x97, 0x9c, 0xc7, 0x30, 0x3c, 0x7c, 0xd3, 0x1f,
+ 0x39, 0x39, 0x2e, 0x66, 0x9d, 0x06, 0x06, 0xdf, 0xb9, 0x0a, 0x79, 0x29, 0xb1, 0x09, 0x41, 0x09,
+ 0x1f, 0x13, 0xe4, 0xd3, 0xa4, 0x19, 0x96, 0x1a, 0xaf, 0xc1, 0xa8, 0x38, 0xba, 0xfa, 0x3f, 0x21,
+ 0x18, 0x3f, 0x94, 0x85, 0x69, 0x93, 0xb2, 0x8d, 0x95, 0xf2, 0x6c, 0x45, 0xcf, 0xec, 0x15, 0x3d,
+ 0x3d, 0x98, 0xab, 0xd6, 0xb6, 0x3e, 0x79, 0x82, 0x7e, 0x25, 0x03, 0xb3, 0x29, 0xb8, 0x1f, 0x2b,
+ 0x4f, 0xee, 0x6d, 0x18, 0xab, 0x38, 0x76, 0xb3, 0xd4, 0x68, 0x84, 0x31, 0x79, 0x50, 0xce, 0xc7,
+ 0x64, 0x5a, 0x36, 0x83, 0xaa, 0x42, 0x4c, 0x88, 0x4a, 0x5e, 0x17, 0x93, 0x22, 0xca, 0x32, 0x8f,
+ 0x93, 0xe2, 0x3b, 0xc7, 0x45, 0xe0, 0xdf, 0xb4, 0x19, 0x4e, 0x11, 0x0c, 0xb0, 0xcc, 0x81, 0x91,
+ 0x5f, 0xd5, 0x33, 0x3b, 0x74, 0xe9, 0x01, 0x96, 0xe3, 0xcd, 0x1b, 0x28, 0x55, 0xd0, 0x8f, 0x67,
+ 0xe1, 0x7c, 0x3a, 0xe1, 0xc7, 0x4d, 0x79, 0x8c, 0x49, 0x9a, 0x94, 0xa0, 0xf0, 0x98, 0xf2, 0x98,
+ 0x67, 0x74, 0x42, 0xfc, 0x08, 0x81, 0xec, 0xc2, 0xe4, 0xaa, 0xed, 0x07, 0x2b, 0xd4, 0xf6, 0x82,
+ 0x1d, 0x6a, 0x07, 0x03, 0x48, 0xf2, 0xd2, 0x9a, 0x62, 0x1e, 0x85, 0x89, 0x7d, 0x49, 0x19, 0x93,
+ 0xb5, 0x75, 0xb6, 0xe1, 0x44, 0x19, 0x1a, 0x60, 0xa2, 0x7c, 0x03, 0xa6, 0x6b, 0xb4, 0x65, 0x77,
+ 0xf6, 0x5d, 0x4f, 0xc6, 0x4b, 0xb8, 0x0e, 0x93, 0x21, 0x28, 0x75, 0xb6, 0xe8, 0xc5, 0x1a, 0xbe,
+ 0xd2, 0x11, 0xd1, 0x56, 0xa2, 0x17, 0x1b, 0x7f, 0x3b, 0x0b, 0x17, 0x4a, 0x75, 0x61, 0x1a, 0x2a,
+ 0x0a, 0xa4, 0x05, 0xfb, 0x27, 0x5c, 0x37, 0xb9, 0x01, 0x63, 0x6b, 0xf6, 0xe3, 0x55, 0x6a, 0xfb,
+ 0xd4, 0x17, 0x09, 0x27, 0xb9, 0xd8, 0x6b, 0x3f, 0x8e, 0x1e, 0x7f, 0xcc, 0x08, 0x47, 0x55, 0x23,
+ 0x0c, 0x3d, 0xa1, 0x1a, 0xc1, 0x80, 0x91, 0x15, 0xb7, 0xd9, 0x10, 0x67, 0xbd, 0x78, 0x71, 0xde,
+ 0x47, 0x88, 0x29, 0x4a, 0x8c, 0x3f, 0xce, 0xc0, 0x54, 0xf8, 0xc5, 0xf8, 0x09, 0x9f, 0x78, 0x97,
+ 0x5c, 0x81, 0x51, 0xac, 0x28, 0xcc, 0x8c, 0x8f, 0x87, 0x46, 0x93, 0x62, 0xda, 0xc0, 0x86, 0x29,
+ 0x0b, 0xd5, 0x9e, 0x18, 0x7e, 0xb2, 0x9e, 0x30, 0xfe, 0x01, 0x3e, 0x66, 0xab, 0xad, 0x64, 0x27,
+ 0x91, 0xf2, 0x21, 0x99, 0x01, 0x3f, 0x24, 0xfb, 0xd4, 0x86, 0x24, 0xd7, 0x73, 0x48, 0x7e, 0x38,
+ 0x0b, 0xe3, 0xe1, 0xc7, 0x7e, 0x97, 0x65, 0x26, 0x08, 0xdb, 0x35, 0x50, 0x8c, 0xa3, 0x9a, 0xb2,
+ 0x57, 0x88, 0x50, 0x42, 0x5f, 0x80, 0x11, 0xb1, 0x98, 0x32, 0x31, 0x4b, 0xee, 0xd8, 0xe8, 0x2e,
+ 0x4d, 0x09, 0xd6, 0x23, 0x38, 0xa0, 0xbe, 0x29, 0xe8, 0x30, 0x88, 0xd4, 0x36, 0xdd, 0x11, 0xb6,
+ 0x0d, 0xcf, 0xec, 0x19, 0x95, 0x1e, 0x44, 0x2a, 0x6a, 0xd8, 0x40, 0xa7, 0xd3, 0x3f, 0xcf, 0x43,
+ 0x21, 0x4e, 0x72, 0x7a, 0xee, 0x87, 0x8d, 0xee, 0x0e, 0xbf, 0xaa, 0xf0, 0xdc, 0x0f, 0x9d, 0xee,
+ 0x8e, 0xc9, 0x60, 0x68, 0xfa, 0xe4, 0x39, 0x8f, 0xb0, 0xd5, 0x13, 0xc2, 0xf4, 0xc9, 0x73, 0x1e,
+ 0x69, 0xa6, 0x4f, 0x9e, 0xf3, 0x08, 0x15, 0x09, 0xab, 0x35, 0x0c, 0xb0, 0x80, 0xf7, 0x14, 0xa1,
+ 0x48, 0x68, 0xfa, 0xf1, 0x3c, 0x6e, 0x12, 0x8d, 0x1d, 0x95, 0x4b, 0xd4, 0xf6, 0x44, 0x9e, 0x02,
+ 0xb1, 0x9d, 0xe1, 0x51, 0xb9, 0x83, 0x60, 0x2b, 0x60, 0x70, 0x53, 0x45, 0x22, 0x4d, 0x20, 0xca,
+ 0x4f, 0xb9, 0x80, 0x4f, 0xbf, 0x5b, 0x4b, 0x2b, 0xcc, 0x39, 0x95, 0xb5, 0xa5, 0xae, 0xe6, 0x14,
+ 0xbe, 0x4f, 0x53, 0xfb, 0xbb, 0x21, 0x82, 0xaf, 0xa2, 0x02, 0x29, 0x7f, 0x2a, 0x33, 0x19, 0x18,
+ 0x06, 0x78, 0x70, 0xd6, 0x50, 0x8d, 0x14, 0x31, 0x21, 0xef, 0xc3, 0xb8, 0x1a, 0x36, 0x83, 0x07,
+ 0x77, 0x78, 0x81, 0xc7, 0xd3, 0xec, 0x91, 0xf9, 0x57, 0x25, 0x20, 0x3b, 0x70, 0xa1, 0xec, 0xb6,
+ 0xfd, 0x6e, 0x4b, 0x46, 0xee, 0x8c, 0xe2, 0x85, 0x03, 0x0e, 0x05, 0xfa, 0xe0, 0xd7, 0x05, 0x8a,
+ 0x88, 0xd2, 0x20, 0xdd, 0x64, 0xf4, 0x0b, 0x48, 0x2f, 0x46, 0x64, 0x13, 0xc6, 0x51, 0x83, 0x2a,
+ 0x4c, 0x1e, 0xc7, 0xf5, 0x6d, 0x23, 0x2a, 0xa9, 0xb0, 0x85, 0xc1, 0xa3, 0xc6, 0xd9, 0xad, 0xa6,
+ 0xf4, 0xd2, 0x50, 0x35, 0xc1, 0x0a, 0x32, 0xf9, 0x2a, 0x4c, 0xf1, 0x2b, 0xda, 0x36, 0xdd, 0xe1,
+ 0x73, 0x67, 0x42, 0xd3, 0x44, 0xe8, 0x85, 0xfc, 0x31, 0x5f, 0xe8, 0xad, 0x0f, 0xe9, 0x0e, 0x1f,
+ 0x7b, 0xcd, 0x47, 0x4a, 0xc3, 0x27, 0x5b, 0x30, 0xbb, 0x62, 0xfb, 0x1c, 0xa8, 0xc4, 0x3f, 0x98,
+ 0x44, 0x0d, 0x2d, 0xda, 0xae, 0xef, 0xdb, 0xbe, 0x54, 0x84, 0xa7, 0xc6, 0x3b, 0x48, 0xa3, 0x27,
+ 0x3f, 0x94, 0x81, 0x79, 0x4d, 0x4f, 0x2e, 0xec, 0xcc, 0x5a, 0xb4, 0x1d, 0xa0, 0x33, 0xd4, 0xd4,
+ 0x62, 0x51, 0x0a, 0xa5, 0x3d, 0xd0, 0xf8, 0x90, 0xc4, 0x54, 0xf1, 0x5e, 0x54, 0xae, 0x1a, 0x85,
+ 0xf7, 0xe2, 0x21, 0x16, 0x2a, 0xae, 0xe9, 0x69, 0x7d, 0xa1, 0xc6, 0xd6, 0xb5, 0x44, 0x33, 0x6e,
+ 0xc7, 0xfb, 0x5b, 0x28, 0xba, 0x32, 0xa1, 0xa2, 0x6b, 0x0e, 0x86, 0xb1, 0x57, 0x65, 0x14, 0x2d,
+ 0xfc, 0x61, 0x7c, 0x5a, 0xdd, 0x87, 0x84, 0x58, 0xd8, 0x77, 0x1f, 0x32, 0xfe, 0xc7, 0x11, 0x98,
+ 0x8e, 0x4d, 0x0b, 0x71, 0x4f, 0xcd, 0x24, 0xee, 0xa9, 0x35, 0x00, 0xae, 0xea, 0x1d, 0x50, 0x27,
+ 0x2b, 0x1d, 0x31, 0xc7, 0x85, 0x1b, 0x75, 0xb8, 0xa6, 0x14, 0x36, 0x8c, 0x29, 0x5f, 0xb1, 0x03,
+ 0xea, 0xc8, 0x43, 0xa6, 0x7c, 0xd1, 0x2b, 0x4c, 0x23, 0x36, 0xa4, 0x08, 0xc3, 0x18, 0x3f, 0x57,
+ 0xf5, 0x83, 0x75, 0x18, 0xc0, 0xe4, 0x70, 0xf2, 0x32, 0x8c, 0x30, 0x21, 0xaa, 0x5a, 0x11, 0x9b,
+ 0x20, 0x9e, 0x2d, 0x4c, 0xca, 0x62, 0x12, 0x8b, 0x28, 0x22, 0xb7, 0x61, 0x82, 0xff, 0x25, 0xc2,
+ 0xec, 0x8c, 0xe8, 0xc6, 0x8f, 0x96, 0xd3, 0x90, 0x91, 0x76, 0x34, 0x3c, 0x76, 0xbb, 0xa8, 0x75,
+ 0x51, 0xad, 0x53, 0xad, 0x88, 0x80, 0xeb, 0x78, 0xbb, 0xf0, 0x39, 0x90, 0x55, 0x11, 0x21, 0x30,
+ 0x59, 0x46, 0x78, 0xa3, 0xe4, 0xf1, 0x4e, 0x89, 0xb2, 0x0c, 0xf7, 0x42, 0x31, 0x45, 0x09, 0xb9,
+ 0xc6, 0x5f, 0x62, 0x50, 0x2c, 0xe4, 0x79, 0x2b, 0xf1, 0xdd, 0x02, 0x15, 0x13, 0x28, 0x1b, 0x86,
+ 0xc5, 0xac, 0x72, 0xf6, 0xf7, 0x72, 0xcb, 0x76, 0x9a, 0x62, 0x5b, 0xc1, 0xca, 0x11, 0x97, 0x32,
+ 0xa8, 0x19, 0x21, 0x90, 0x77, 0x61, 0x8a, 0xfd, 0x28, 0xbb, 0xad, 0x96, 0xdb, 0x46, 0xf6, 0xe3,
+ 0x51, 0x20, 0x3d, 0x24, 0xa9, 0x63, 0x11, 0xaf, 0x25, 0x86, 0xcb, 0xce, 0x13, 0x7c, 0xe5, 0xed,
+ 0xf2, 0x37, 0xa2, 0x89, 0xe8, 0x3c, 0x41, 0x52, 0x9f, 0xc3, 0x4d, 0x15, 0x89, 0xbc, 0x0d, 0x93,
+ 0xec, 0xe7, 0x5d, 0xe7, 0x11, 0xe5, 0x15, 0x4e, 0x46, 0xe6, 0x0d, 0x48, 0xb5, 0xc7, 0x4a, 0x78,
+ 0x7d, 0x3a, 0x26, 0xf9, 0x22, 0x9c, 0x43, 0x4e, 0x75, 0xb7, 0x43, 0x1b, 0xa5, 0xdd, 0x5d, 0xa7,
+ 0xe9, 0x70, 0x6b, 0x34, 0x1e, 0x50, 0x06, 0x75, 0xf0, 0xbc, 0x62, 0xc4, 0xb0, 0xec, 0x08, 0xc5,
+ 0x4c, 0xa7, 0x24, 0xdb, 0x50, 0x28, 0x77, 0xfd, 0xc0, 0x6d, 0x95, 0x82, 0xc0, 0x73, 0x76, 0xba,
+ 0x01, 0xf5, 0xe7, 0xa7, 0xb5, 0xb0, 0x2b, 0x6c, 0x71, 0x84, 0x85, 0x5c, 0x1f, 0x54, 0x47, 0x0a,
+ 0xcb, 0x0e, 0x49, 0xcc, 0x04, 0x13, 0xe3, 0x5f, 0x64, 0x60, 0x52, 0x23, 0x25, 0x6f, 0xc1, 0xc4,
+ 0x1d, 0xcf, 0xa1, 0xed, 0x46, 0xf3, 0x48, 0xb9, 0xa8, 0xe2, 0x2d, 0x66, 0x57, 0xc0, 0x79, 0xab,
+ 0x35, 0xb4, 0x50, 0xcf, 0x93, 0x4d, 0x35, 0x15, 0xbd, 0xc1, 0xdd, 0xb1, 0xc5, 0x04, 0xcd, 0x45,
+ 0x71, 0xa0, 0x70, 0x82, 0x8a, 0xd9, 0xa9, 0xa0, 0x90, 0xf7, 0x60, 0x84, 0xbf, 0x07, 0x0b, 0xbb,
+ 0xc5, 0x8b, 0x69, 0xcd, 0xe4, 0xae, 0xff, 0x38, 0x11, 0xd1, 0xe8, 0xc7, 0x37, 0x05, 0x91, 0xf1,
+ 0xb3, 0x19, 0x20, 0x49, 0xd4, 0x53, 0xf4, 0x5e, 0xa7, 0x1a, 0x13, 0x7d, 0x21, 0x5c, 0x8d, 0x39,
+ 0x4d, 0x67, 0xce, 0x6a, 0xe2, 0x05, 0xbc, 0xe3, 0xc5, 0xaa, 0x53, 0x15, 0x71, 0xbc, 0xd8, 0xf8,
+ 0xc1, 0x2c, 0x40, 0x84, 0x4d, 0x3e, 0xc7, 0xd3, 0x94, 0x7d, 0xb1, 0x6b, 0x37, 0x9d, 0x5d, 0x47,
+ 0x8f, 0xdb, 0x8b, 0x4c, 0xbe, 0x21, 0x4b, 0x4c, 0x1d, 0x91, 0x7c, 0x00, 0xd3, 0xb5, 0x0d, 0x9d,
+ 0x56, 0x31, 0x8b, 0xf7, 0x3b, 0x56, 0x8c, 0x3c, 0x8e, 0x8d, 0xf6, 0xc9, 0xea, 0x68, 0x70, 0xfb,
+ 0x64, 0x3e, 0x10, 0xa2, 0x84, 0x6d, 0x2c, 0xb5, 0x0d, 0x61, 0xf9, 0xdf, 0x08, 0x5f, 0x35, 0xf1,
+ 0xeb, 0xfc, 0x8e, 0xd5, 0x11, 0x2e, 0x01, 0x6c, 0x9f, 0xd0, 0xf0, 0xa2, 0x8e, 0x1c, 0xee, 0xe1,
+ 0xde, 0xff, 0x73, 0xa8, 0xf6, 0x6b, 0xb9, 0x01, 0x15, 0xda, 0x8e, 0x67, 0xf6, 0xde, 0x13, 0x19,
+ 0x13, 0x0c, 0x6b, 0x5e, 0xcb, 0x5a, 0xeb, 0x84, 0xc1, 0xcc, 0xad, 0xe8, 0x92, 0xc2, 0xcd, 0x0a,
+ 0x52, 0x6c, 0x6c, 0xfe, 0x5e, 0x06, 0xce, 0xa5, 0xd2, 0x92, 0xeb, 0x00, 0x91, 0x4e, 0x49, 0xf4,
+ 0x12, 0xee, 0x98, 0x51, 0xf4, 0x23, 0x53, 0xc1, 0x20, 0x5f, 0x89, 0x6b, 0x83, 0x4e, 0x3f, 0x08,
+ 0x17, 0x64, 0xd0, 0x41, 0x5d, 0x1b, 0x94, 0xa2, 0x03, 0x32, 0x7e, 0x25, 0x07, 0x33, 0x4a, 0x70,
+ 0x25, 0xfe, 0xad, 0xa7, 0xd8, 0x8b, 0x1f, 0xc0, 0x04, 0x6b, 0x8d, 0x53, 0x17, 0x6e, 0x37, 0xdc,
+ 0xf0, 0xe5, 0xf5, 0x84, 0xdf, 0xa9, 0xe0, 0x76, 0x5d, 0x45, 0xe6, 0xa1, 0x40, 0x71, 0xeb, 0xc4,
+ 0x07, 0x89, 0x7a, 0xd2, 0xe5, 0x46, 0x63, 0x4e, 0x7c, 0x98, 0xac, 0x1c, 0xb5, 0xed, 0x56, 0x58,
+ 0x1b, 0x37, 0x80, 0xf9, 0x54, 0xcf, 0xda, 0x34, 0x6c, 0x5e, 0x5d, 0xe4, 0xa1, 0xc5, 0xcb, 0x52,
+ 0x82, 0x03, 0x68, 0x54, 0x0b, 0x1f, 0xc0, 0x4c, 0xe2, 0xa3, 0xcf, 0x14, 0x95, 0x74, 0x1b, 0x48,
+ 0xf2, 0x3b, 0x52, 0x38, 0x7c, 0x4a, 0x8f, 0x79, 0x7b, 0x2e, 0x7c, 0xbc, 0x6e, 0xb5, 0xec, 0x76,
+ 0x83, 0x9b, 0xd3, 0x2c, 0xaa, 0x31, 0x4b, 0x7f, 0x2e, 0xab, 0xfa, 0xfe, 0x3e, 0xeb, 0xab, 0xee,
+ 0x0b, 0xda, 0x6d, 0xf8, 0x52, 0xaf, 0x31, 0x1d, 0x48, 0xeb, 0xf0, 0xed, 0x1c, 0x5c, 0xe8, 0x41,
+ 0x49, 0x8e, 0xe2, 0x93, 0x88, 0x6b, 0x21, 0x6e, 0xf6, 0xaf, 0xf0, 0x69, 0x4c, 0x25, 0xf2, 0x39,
+ 0x1e, 0xfd, 0xa3, 0xee, 0xb6, 0x77, 0x9d, 0x3d, 0x71, 0xff, 0x46, 0x35, 0xfe, 0x41, 0x08, 0x8d,
+ 0x87, 0xfd, 0xe0, 0x50, 0xf2, 0x01, 0x0c, 0xa3, 0xe3, 0x77, 0x2c, 0xbc, 0x23, 0xc3, 0x40, 0xb8,
+ 0x12, 0xa0, 0x94, 0xfd, 0xd4, 0x02, 0x94, 0x32, 0x00, 0xf9, 0x2c, 0xe4, 0x4a, 0xdb, 0x35, 0x31,
+ 0x2e, 0x53, 0x2a, 0xf9, 0x76, 0x2d, 0x4a, 0xae, 0x62, 0x6b, 0x59, 0x50, 0x18, 0x05, 0x23, 0xbc,
+ 0x5b, 0xde, 0x10, 0xa3, 0xa2, 0x12, 0xde, 0x2d, 0x6f, 0x44, 0x84, 0x7b, 0x75, 0x2d, 0x58, 0xd6,
+ 0xdd, 0xf2, 0xc6, 0x27, 0x37, 0xed, 0xff, 0xbd, 0x2c, 0x0f, 0x59, 0xc2, 0x1b, 0xf6, 0x01, 0x4c,
+ 0x68, 0x31, 0xc9, 0x33, 0x91, 0x3c, 0x16, 0xc6, 0x8f, 0x8f, 0x59, 0x0c, 0x69, 0x04, 0x32, 0x4d,
+ 0x11, 0xfb, 0x8d, 0x12, 0xaf, 0x6a, 0x6c, 0x13, 0x72, 0x40, 0x99, 0x38, 0x9e, 0xa6, 0x28, 0x24,
+ 0x21, 0xb7, 0x20, 0xbf, 0x49, 0xdb, 0x76, 0x3b, 0x08, 0x15, 0xa2, 0x68, 0x5c, 0x1c, 0x20, 0x4c,
+ 0x97, 0x1a, 0x42, 0x44, 0x34, 0x84, 0xed, 0xee, 0xf8, 0x75, 0xcf, 0xc1, 0xd0, 0x46, 0xe1, 0x59,
+ 0xcc, 0x0d, 0x61, 0x95, 0x12, 0x9d, 0x41, 0x8c, 0xc8, 0xf8, 0xb9, 0x0c, 0x8c, 0x8a, 0x81, 0xe4,
+ 0xe9, 0xe5, 0xf6, 0xa2, 0xb3, 0x44, 0x38, 0x0f, 0xec, 0x39, 0x71, 0xe7, 0x81, 0x3d, 0x1e, 0x3f,
+ 0x68, 0x4c, 0x38, 0xd6, 0x85, 0x4f, 0x83, 0x38, 0x1b, 0xa5, 0xdb, 0xa7, 0x9e, 0x3d, 0x2c, 0x44,
+ 0x1d, 0xd4, 0x21, 0xcb, 0xf8, 0x3b, 0xe2, 0xcb, 0xee, 0x96, 0x37, 0xc8, 0x22, 0xe4, 0x57, 0x5d,
+ 0x1e, 0x0a, 0x4b, 0xcd, 0x15, 0xdc, 0x14, 0x30, 0xb5, 0x83, 0x24, 0x1e, 0xfb, 0xbe, 0x0d, 0xcf,
+ 0x15, 0x77, 0x19, 0xe5, 0xfb, 0x3a, 0x1c, 0x18, 0xfb, 0xbe, 0x10, 0x75, 0xe0, 0xef, 0xa3, 0x29,
+ 0x9b, 0xc4, 0xc3, 0x5b, 0x98, 0xbf, 0xe5, 0x9e, 0xea, 0xe8, 0x26, 0x8a, 0xe4, 0x4e, 0xb1, 0xd0,
+ 0x6b, 0xa7, 0x78, 0x78, 0xcb, 0x4c, 0xa1, 0xc2, 0x77, 0xb5, 0x08, 0x5c, 0xa3, 0xde, 0xa3, 0x67,
+ 0x78, 0x97, 0x4e, 0x7f, 0x57, 0x8b, 0x37, 0x6f, 0xa0, 0x4d, 0xfa, 0xf7, 0xb3, 0x70, 0x3e, 0x9d,
+ 0x50, 0x6d, 0x4b, 0xa6, 0x4f, 0x5b, 0xae, 0x42, 0x7e, 0xc5, 0xf5, 0x03, 0xc5, 0x48, 0x10, 0xd5,
+ 0xff, 0xfb, 0x02, 0x66, 0x86, 0xa5, 0xec, 0xce, 0xcd, 0xfe, 0x0e, 0x97, 0x27, 0xf2, 0xc3, 0x40,
+ 0x1d, 0xec, 0xce, 0xcd, 0x8b, 0xc8, 0x5d, 0xc8, 0x9b, 0xc2, 0xd1, 0x2a, 0xd6, 0x35, 0x12, 0x1c,
+ 0x4a, 0x53, 0xc4, 0x13, 0x10, 0x2d, 0x34, 0xbc, 0x80, 0x91, 0x12, 0x8c, 0x8a, 0xd1, 0x8f, 0x3d,
+ 0x1d, 0xa7, 0x4c, 0x19, 0x3d, 0x5b, 0x83, 0xa4, 0x63, 0x3b, 0x0a, 0x3e, 0x02, 0x56, 0x2b, 0xd2,
+ 0x67, 0x0a, 0x77, 0x14, 0xfe, 0x48, 0xa8, 0xdb, 0x63, 0x86, 0x88, 0xc6, 0x0f, 0x65, 0x01, 0xa4,
+ 0xd6, 0xe6, 0x99, 0x9d, 0x61, 0x9f, 0xd5, 0x66, 0x98, 0x62, 0x6f, 0x34, 0x78, 0x3a, 0xe4, 0x07,
+ 0x68, 0xce, 0x33, 0x78, 0x32, 0xe4, 0x22, 0x0c, 0x6f, 0x46, 0x0a, 0x2d, 0xe1, 0x92, 0x82, 0xea,
+ 0x68, 0x0e, 0x37, 0x76, 0x60, 0xee, 0x2e, 0x0d, 0x22, 0xf5, 0x96, 0x7c, 0x7a, 0xec, 0xcf, 0xf6,
+ 0x0d, 0x18, 0x13, 0xf8, 0xe1, 0xfe, 0xc5, 0x75, 0x31, 0x22, 0xf6, 0x0d, 0xea, 0x62, 0x24, 0x02,
+ 0xdb, 0x8d, 0x2a, 0xb4, 0x49, 0x03, 0xfa, 0xc9, 0x56, 0x53, 0x03, 0xc2, 0x9b, 0x82, 0x2d, 0x1b,
+ 0xac, 0x86, 0x53, 0xfb, 0xe7, 0x21, 0x9c, 0x0b, 0xbf, 0xfd, 0x69, 0xf2, 0xbd, 0xc1, 0xae, 0x94,
+ 0x22, 0xd1, 0x41, 0xc4, 0xb1, 0x8f, 0xed, 0xc9, 0x63, 0x58, 0x90, 0x04, 0xdb, 0x4e, 0x68, 0x38,
+ 0x39, 0x10, 0x2d, 0x79, 0x17, 0xc6, 0x15, 0x1a, 0x11, 0xa8, 0x1f, 0xd5, 0xd4, 0x87, 0x4e, 0xb0,
+ 0x6f, 0xf9, 0x1c, 0xae, 0xaa, 0xa9, 0x15, 0x74, 0xe3, 0xcb, 0xf0, 0x7c, 0xe8, 0x36, 0x94, 0x52,
+ 0x75, 0x8c, 0x79, 0xe6, 0x6c, 0xcc, 0xd7, 0xa3, 0x66, 0x55, 0xdb, 0xa1, 0x67, 0xb4, 0xe4, 0x4d,
+ 0xd4, 0x66, 0x89, 0xc6, 0xbc, 0x90, 0xf0, 0xb5, 0x56, 0x5c, 0xaa, 0x8d, 0x77, 0x94, 0x8f, 0x4d,
+ 0x61, 0xa8, 0x11, 0x67, 0xe2, 0xc4, 0x3f, 0x94, 0x85, 0xe9, 0x07, 0xd5, 0x4a, 0x39, 0xb4, 0x3e,
+ 0xfa, 0x2e, 0x4b, 0xd6, 0xac, 0xb5, 0xad, 0xf7, 0x7e, 0x63, 0x6c, 0xc1, 0x6c, 0xac, 0x1b, 0x50,
+ 0x74, 0x78, 0x9f, 0x3b, 0x9c, 0x84, 0x60, 0x29, 0x36, 0x9c, 0x4f, 0x63, 0xff, 0xf0, 0x96, 0x19,
+ 0xc3, 0x36, 0xfe, 0x4b, 0x88, 0xf1, 0x15, 0x5b, 0xd8, 0x1b, 0x30, 0x56, 0xf5, 0xfd, 0x2e, 0xf5,
+ 0xb6, 0xcc, 0x55, 0x55, 0x55, 0xe0, 0x20, 0xd0, 0xea, 0x7a, 0x4d, 0x33, 0x42, 0x20, 0xd7, 0x20,
+ 0x2f, 0x82, 0xa4, 0xcb, 0x3d, 0x01, 0xb5, 0xb6, 0x61, 0x8c, 0x75, 0x33, 0x2c, 0x26, 0x6f, 0xc1,
+ 0x04, 0xff, 0x9b, 0xcf, 0x36, 0xd1, 0xe1, 0xa8, 0x1c, 0x14, 0xe8, 0x7c, 0x76, 0x9a, 0x1a, 0x1a,
+ 0x79, 0x1d, 0x72, 0xa5, 0xb2, 0x29, 0xd4, 0x41, 0x42, 0x6e, 0xf4, 0x2c, 0xae, 0xb3, 0xd3, 0x2e,
+ 0x11, 0x65, 0x93, 0x49, 0x7f, 0x32, 0xd8, 0x84, 0xd0, 0x64, 0xe3, 0x0c, 0x90, 0xda, 0xa6, 0xd8,
+ 0x61, 0x86, 0x30, 0x72, 0x03, 0x46, 0x2b, 0xdc, 0x64, 0x4e, 0xe8, 0xb1, 0x79, 0x26, 0x42, 0x0e,
+ 0xd2, 0x82, 0x2b, 0x70, 0x10, 0xb9, 0x26, 0x33, 0xb4, 0xe5, 0x23, 0xbf, 0x95, 0x1e, 0x69, 0xd8,
+ 0xde, 0x80, 0x11, 0x11, 0x4a, 0x7c, 0x4c, 0xc9, 0xdd, 0x12, 0x0f, 0x21, 0x2e, 0x70, 0x92, 0x0e,
+ 0xac, 0xf0, 0x34, 0x1d, 0x58, 0x77, 0xe0, 0xc2, 0x5d, 0xd4, 0xde, 0xe8, 0x01, 0xb1, 0xb6, 0xcc,
+ 0xaa, 0xd0, 0x87, 0xe3, 0x33, 0x10, 0x57, 0xf0, 0xc4, 0x63, 0x6a, 0x59, 0x5d, 0x4f, 0x4d, 0xac,
+ 0xdb, 0x8b, 0x11, 0xf9, 0x12, 0xcc, 0xa5, 0x15, 0x09, 0xad, 0x39, 0x86, 0x7e, 0x4a, 0xaf, 0x40,
+ 0x0d, 0xfd, 0x94, 0xc6, 0x81, 0xac, 0x42, 0x81, 0xc3, 0x4b, 0x8d, 0x96, 0xd3, 0xe6, 0x9a, 0x7f,
+ 0xae, 0x55, 0x47, 0x47, 0x12, 0xc1, 0xd5, 0x66, 0x85, 0xfc, 0x05, 0x40, 0x73, 0x3d, 0x8a, 0x51,
+ 0x92, 0x9f, 0xcc, 0xb0, 0xdb, 0x1c, 0x0f, 0xbc, 0xbd, 0x65, 0xae, 0xfa, 0x22, 0x6c, 0xe0, 0xf9,
+ 0xc8, 0xab, 0xa8, 0x16, 0x78, 0x4e, 0x7b, 0x4f, 0xb8, 0x15, 0x6d, 0x0a, 0xb7, 0xa2, 0x77, 0x3f,
+ 0x96, 0x5b, 0x11, 0x67, 0xe5, 0x9f, 0x1c, 0x17, 0x27, 0x3c, 0x51, 0x27, 0xae, 0x22, 0xed, 0x0b,
+ 0x58, 0xd7, 0xa1, 0x6f, 0xed, 0x56, 0x9b, 0x87, 0xfd, 0xa5, 0x0d, 0xde, 0xc8, 0x69, 0xdc, 0xc1,
+ 0xb1, 0xeb, 0x30, 0x27, 0x88, 0xd5, 0x0d, 0x11, 0x12, 0x0d, 0x4d, 0xe5, 0xc0, 0x2e, 0x9e, 0xd2,
+ 0x75, 0x85, 0x7b, 0xe3, 0x16, 0xa2, 0x8b, 0xa7, 0xf4, 0x73, 0xb1, 0x70, 0x1a, 0xa9, 0x93, 0x47,
+ 0x23, 0x21, 0x37, 0x60, 0x64, 0xcd, 0x7e, 0x5c, 0xda, 0xa3, 0x22, 0xf3, 0xe6, 0xa4, 0xdc, 0xfe,
+ 0x10, 0xb8, 0x94, 0xff, 0x03, 0xee, 0xeb, 0xf0, 0x9c, 0x29, 0xd0, 0xc8, 0x5f, 0xcb, 0xc0, 0x79,
+ 0xbe, 0x8c, 0x65, 0x2b, 0x6b, 0x34, 0x08, 0x58, 0x3f, 0x88, 0xf8, 0x81, 0x97, 0x23, 0x83, 0xed,
+ 0x74, 0x3c, 0xf4, 0xbc, 0x37, 0xc4, 0xce, 0x10, 0x76, 0x9c, 0x2f, 0x4a, 0xb5, 0x40, 0xcc, 0xa9,
+ 0xf4, 0x64, 0x13, 0xc6, 0xd7, 0xee, 0x94, 0xc2, 0x6a, 0x79, 0x74, 0xf6, 0x62, 0xda, 0xee, 0xa8,
+ 0xa0, 0xa5, 0x79, 0x1a, 0xa8, 0x6c, 0x84, 0x77, 0xc0, 0x67, 0x65, 0x7f, 0x90, 0x37, 0x55, 0x57,
+ 0xd4, 0x1c, 0x4a, 0xcf, 0xa3, 0x2d, 0xfb, 0xb1, 0x65, 0xef, 0x51, 0xed, 0x95, 0x5c, 0x68, 0xaf,
+ 0x7f, 0x26, 0x03, 0x17, 0x7b, 0x36, 0x99, 0xdc, 0x86, 0x0b, 0x36, 0x77, 0xb0, 0xb6, 0xf6, 0x83,
+ 0xa0, 0xe3, 0x5b, 0xf2, 0x8a, 0x21, 0x9c, 0x57, 0xcd, 0x73, 0xa2, 0x78, 0x85, 0x95, 0xca, 0x5b,
+ 0x87, 0x4f, 0x3e, 0x80, 0x17, 0x9c, 0xb6, 0x4f, 0xeb, 0x5d, 0x8f, 0x5a, 0x92, 0x41, 0xdd, 0x69,
+ 0x78, 0x96, 0x67, 0xb7, 0xf7, 0xa4, 0x27, 0xae, 0x79, 0x51, 0xe2, 0x08, 0x27, 0xee, 0xb2, 0xd3,
+ 0xf0, 0x4c, 0x44, 0x30, 0xfe, 0x45, 0x06, 0xe6, 0x7b, 0x75, 0x09, 0x99, 0x87, 0x51, 0xaa, 0xe4,
+ 0x69, 0xc9, 0x9b, 0xf2, 0x27, 0x79, 0x1e, 0xa2, 0x9d, 0x5e, 0x9c, 0xfe, 0xf9, 0xba, 0xc8, 0x99,
+ 0x81, 0xa6, 0xed, 0xea, 0xbe, 0x2e, 0x0c, 0x94, 0x27, 0xea, 0xea, 0xee, 0xfe, 0x22, 0x40, 0xb4,
+ 0x9d, 0x73, 0xc5, 0x84, 0x39, 0x66, 0xd7, 0x3d, 0xbe, 0xf2, 0xc8, 0x79, 0x18, 0xe1, 0xdb, 0xa5,
+ 0xf0, 0x7f, 0x10, 0xbf, 0xd8, 0xb9, 0x2d, 0x3a, 0x19, 0xf7, 0xf9, 0xdc, 0xd2, 0x84, 0xd6, 0xd9,
+ 0x23, 0x2d, 0x1c, 0x1c, 0xe3, 0xa7, 0x26, 0xb9, 0x08, 0x51, 0xea, 0x06, 0xfb, 0x52, 0xe8, 0x58,
+ 0x4c, 0xf3, 0x17, 0xe3, 0xb6, 0x94, 0x8a, 0x5d, 0xb6, 0xee, 0x25, 0x26, 0xdf, 0x7e, 0xb2, 0xa9,
+ 0x6f, 0x3f, 0x6f, 0xc0, 0x58, 0x79, 0x9f, 0xd6, 0x0f, 0x42, 0x27, 0x9c, 0xbc, 0x50, 0xae, 0x33,
+ 0x20, 0x0f, 0x89, 0x1e, 0x21, 0x90, 0x1b, 0x00, 0xe8, 0xa6, 0xca, 0x25, 0x52, 0x25, 0xad, 0x09,
+ 0x7a, 0xb5, 0x0a, 0xf3, 0x14, 0x05, 0x05, 0xd9, 0xd7, 0xcc, 0x3b, 0xaa, 0x3d, 0x0b, 0x67, 0xef,
+ 0x7b, 0xbb, 0x02, 0x3d, 0x42, 0x60, 0xcd, 0x53, 0xf6, 0x15, 0x71, 0x0a, 0x16, 0x12, 0x9b, 0x8f,
+ 0x8a, 0x44, 0xae, 0xc3, 0xd8, 0x86, 0x74, 0x24, 0xc0, 0x43, 0x70, 0x02, 0x29, 0x20, 0x72, 0x3a,
+ 0x98, 0xcf, 0x98, 0x11, 0x0a, 0xf9, 0x2c, 0x8c, 0x96, 0xa9, 0x17, 0x6c, 0x6e, 0xae, 0xa2, 0xd1,
+ 0x09, 0xcf, 0xfe, 0x91, 0xc7, 0x4c, 0x0d, 0x41, 0xd0, 0xfc, 0xce, 0x71, 0x71, 0x32, 0x70, 0x5a,
+ 0x34, 0x8c, 0x6a, 0x6e, 0x4a, 0x6c, 0xb2, 0x04, 0x05, 0xfe, 0x2c, 0x1e, 0xdd, 0x3d, 0xf0, 0x64,
+ 0xcc, 0xf3, 0x73, 0x5a, 0xbc, 0xa1, 0x1f, 0xd2, 0x9d, 0x30, 0x4f, 0x45, 0x02, 0x9f, 0x2c, 0xcb,
+ 0xf4, 0x2e, 0x6a, 0x33, 0x21, 0x52, 0x86, 0xc5, 0x77, 0x0c, 0xd6, 0xda, 0x24, 0x05, 0x29, 0xc1,
+ 0x64, 0xd9, 0x6d, 0x75, 0xec, 0xc0, 0xc1, 0x3c, 0x98, 0x47, 0xe2, 0x10, 0x44, 0x85, 0x5e, 0x5d,
+ 0x2d, 0xd0, 0x4e, 0x54, 0xb5, 0x80, 0xdc, 0x81, 0x29, 0xd3, 0xed, 0xb2, 0x61, 0x92, 0xb7, 0x70,
+ 0x7e, 0xce, 0xa1, 0x69, 0x88, 0xc7, 0x4a, 0xd8, 0xb1, 0x2c, 0xae, 0xdc, 0x5a, 0x04, 0x58, 0x8d,
+ 0x8a, 0xac, 0xa7, 0x3c, 0x87, 0xa8, 0x87, 0x9b, 0x9a, 0xad, 0x22, 0xc1, 0x2c, 0xe5, 0x25, 0xe5,
+ 0x16, 0x8c, 0xd7, 0x6a, 0x0f, 0x36, 0xa9, 0x1f, 0xdc, 0x69, 0xba, 0x87, 0x78, 0xb6, 0xe5, 0x45,
+ 0x72, 0x35, 0xdf, 0xb5, 0x02, 0xea, 0x07, 0xd6, 0x6e, 0xd3, 0x3d, 0x34, 0x55, 0x2c, 0xf2, 0x35,
+ 0xd6, 0x1f, 0x8a, 0x24, 0x28, 0x62, 0xdd, 0xf6, 0x13, 0x56, 0xf1, 0x04, 0x89, 0x16, 0x0d, 0x13,
+ 0x59, 0xf5, 0xce, 0x52, 0xd0, 0xd1, 0xa7, 0xcc, 0x73, 0x1f, 0x1f, 0x95, 0x1a, 0x0d, 0x8f, 0xfa,
+ 0xbe, 0x38, 0x84, 0xb8, 0x4f, 0x19, 0x2a, 0x1b, 0x6c, 0x5e, 0xa0, 0xf9, 0x94, 0x29, 0x04, 0xe4,
+ 0x47, 0x32, 0x70, 0x4e, 0xf5, 0x36, 0xc1, 0xe5, 0x82, 0x66, 0x2e, 0xfc, 0x48, 0x7a, 0xf3, 0xba,
+ 0x3c, 0x84, 0xaf, 0x2b, 0x68, 0xd7, 0x1f, 0xdd, 0xbc, 0x5e, 0x8a, 0x7e, 0xd6, 0x24, 0x11, 0xc6,
+ 0xed, 0x2b, 0xa6, 0xf2, 0xd3, 0x72, 0x13, 0xcd, 0xd9, 0x29, 0xc4, 0xa4, 0xcc, 0x24, 0x35, 0x36,
+ 0xa3, 0xd0, 0x70, 0xaa, 0xba, 0x81, 0x67, 0x9a, 0xd0, 0xa8, 0x8a, 0xf9, 0xc7, 0x4d, 0xac, 0x9c,
+ 0x8e, 0x2e, 0x90, 0x29, 0x34, 0xa4, 0x0a, 0xd3, 0x1c, 0xc0, 0xb6, 0x05, 0x9e, 0xe6, 0x69, 0x36,
+ 0x4a, 0x34, 0x21, 0xd8, 0xe0, 0x5b, 0x3f, 0xa6, 0x7a, 0x52, 0x83, 0xb3, 0xc6, 0xe8, 0xc8, 0x07,
+ 0x30, 0x85, 0x31, 0xf4, 0xa3, 0xf5, 0x3a, 0x87, 0xab, 0x18, 0x63, 0xcc, 0x8a, 0x92, 0x98, 0xe7,
+ 0xdd, 0x84, 0xef, 0xef, 0x47, 0x2b, 0xfa, 0x03, 0x98, 0x42, 0x5b, 0x9d, 0x88, 0xc1, 0xb9, 0x88,
+ 0x81, 0x28, 0x89, 0x33, 0x08, 0x9a, 0x7e, 0xc4, 0xe0, 0xa7, 0x33, 0x70, 0x91, 0x55, 0x94, 0x3e,
+ 0x42, 0xe7, 0x3f, 0xce, 0x08, 0x61, 0xd4, 0xcd, 0x9e, 0x3c, 0x55, 0x71, 0xd4, 0xf7, 0xf7, 0xd3,
+ 0x38, 0xe0, 0x47, 0xb1, 0x8f, 0x4f, 0xff, 0xa8, 0x0b, 0x1f, 0xfb, 0xa3, 0x7a, 0xf2, 0x54, 0x3f,
+ 0x2a, 0x68, 0xfa, 0x69, 0x1c, 0xf0, 0x5a, 0x5b, 0x2b, 0xad, 0xad, 0x46, 0x77, 0xb3, 0xef, 0x2e,
+ 0xb7, 0x15, 0xad, 0x6d, 0x7d, 0xdc, 0x56, 0xb6, 0xb8, 0x17, 0xb5, 0xd2, 0x0d, 0xf2, 0x5a, 0xab,
+ 0x81, 0xe3, 0xd7, 0xda, 0x18, 0x8d, 0x19, 0xc3, 0x36, 0x7e, 0x09, 0x62, 0x7c, 0x85, 0xa9, 0xaa,
+ 0x01, 0x23, 0xfc, 0xd6, 0x2a, 0x3a, 0x19, 0x6d, 0x16, 0xf8, 0x9d, 0xd6, 0x14, 0x25, 0xe4, 0x22,
+ 0xe4, 0x6a, 0xb5, 0x07, 0xa2, 0x93, 0xd1, 0x60, 0xd5, 0xf7, 0x5d, 0x93, 0xc1, 0xd8, 0x08, 0xa1,
+ 0x15, 0xaa, 0x92, 0x93, 0x80, 0x9d, 0x77, 0x26, 0x42, 0x59, 0x7f, 0xcb, 0x3b, 0xe4, 0x50, 0xd4,
+ 0xdf, 0xe2, 0x0e, 0x19, 0xdd, 0x1c, 0xcb, 0x30, 0x5f, 0xf2, 0x7d, 0xea, 0xb1, 0x09, 0x21, 0x8c,
+ 0x1b, 0x3d, 0x71, 0xcf, 0x11, 0x07, 0x3b, 0x56, 0x6a, 0xd7, 0x7d, 0xb3, 0x27, 0x22, 0xb9, 0x0a,
+ 0xf9, 0x52, 0xb7, 0xe1, 0xd0, 0x76, 0x5d, 0x0b, 0xcb, 0x66, 0x0b, 0x98, 0x19, 0x96, 0x92, 0x2f,
+ 0xc2, 0xb9, 0x58, 0x04, 0x46, 0xd1, 0x03, 0xa3, 0xd1, 0xde, 0x2b, 0xef, 0x61, 0x91, 0x41, 0x06,
+ 0xef, 0x92, 0x74, 0x4a, 0x52, 0x82, 0xc2, 0x32, 0xba, 0x69, 0x55, 0x28, 0x7f, 0x1b, 0x72, 0x3d,
+ 0xee, 0x9f, 0xc7, 0x6f, 0xcd, 0x22, 0xce, 0x64, 0x23, 0x2c, 0x34, 0x13, 0xe8, 0xe4, 0x3e, 0xcc,
+ 0xc6, 0x61, 0xec, 0x04, 0xe7, 0x17, 0x64, 0xdc, 0x6f, 0x12, 0x5c, 0xf0, 0x0c, 0x4f, 0xa3, 0x22,
+ 0x3b, 0x30, 0x13, 0x19, 0x24, 0xe9, 0xd7, 0x66, 0x69, 0xe7, 0x1c, 0x96, 0xcb, 0xab, 0xf3, 0xf3,
+ 0x62, 0x32, 0xce, 0x46, 0xc6, 0x4d, 0xe1, 0xf5, 0xd9, 0x4c, 0xb2, 0x23, 0x0d, 0x98, 0xaa, 0x39,
+ 0x7b, 0x6d, 0xa7, 0xbd, 0x77, 0x9f, 0x1e, 0x6d, 0xd8, 0x8e, 0x27, 0x2c, 0x4e, 0xa5, 0x3d, 0x79,
+ 0xc9, 0x3f, 0x6a, 0xb5, 0x68, 0xe0, 0xe1, 0x46, 0xc8, 0xca, 0xd1, 0x07, 0x9d, 0x5d, 0x87, 0x16,
+ 0x7c, 0x4e, 0x87, 0x6e, 0x9b, 0x1d, 0xdb, 0xd1, 0x84, 0x00, 0x9d, 0xa7, 0xa6, 0xba, 0x98, 0x18,
+ 0x50, 0x75, 0xd1, 0x84, 0x99, 0xe5, 0x76, 0xdd, 0x3b, 0xc2, 0x27, 0x3a, 0xf9, 0x71, 0x93, 0xa7,
+ 0x7c, 0xdc, 0x2b, 0xe2, 0xe3, 0x5e, 0xb0, 0xe5, 0x0c, 0x4b, 0xfb, 0xbc, 0x24, 0x63, 0x52, 0x83,
+ 0x19, 0xbc, 0x38, 0x54, 0x2b, 0x1b, 0xd5, 0xb6, 0x13, 0x38, 0x76, 0x40, 0x1b, 0x42, 0xb8, 0x08,
+ 0x33, 0xb9, 0xf0, 0x2b, 0xaa, 0xd3, 0xe8, 0x58, 0x8e, 0x44, 0x51, 0x99, 0x26, 0xe8, 0xfb, 0xdd,
+ 0x13, 0xa7, 0xff, 0x9c, 0xee, 0x89, 0x55, 0x98, 0x8e, 0x87, 0x72, 0x28, 0x44, 0xe7, 0xb0, 0x8f,
+ 0x45, 0xec, 0x38, 0x77, 0xbb, 0x28, 0x4c, 0x6a, 0xc9, 0x53, 0x63, 0x41, 0x1c, 0x62, 0x57, 0xce,
+ 0x19, 0xed, 0xca, 0xa9, 0xed, 0x4a, 0x67, 0xb8, 0x72, 0x92, 0x0d, 0x80, 0x3b, 0xae, 0x57, 0xa7,
+ 0x25, 0xf4, 0x8f, 0x26, 0x5a, 0xbe, 0x2b, 0xc6, 0x34, 0x2a, 0xe4, 0xeb, 0x67, 0x97, 0xfd, 0xb6,
+ 0xe2, 0x6e, 0xee, 0x0a, 0x0f, 0xe3, 0x47, 0xb3, 0x30, 0xdf, 0xeb, 0x73, 0xfa, 0x5c, 0xf7, 0x3e,
+ 0x05, 0xc9, 0x15, 0x2e, 0xae, 0x7d, 0x05, 0x1a, 0x5f, 0xe7, 0x8b, 0x90, 0xbe, 0x90, 0xc5, 0x35,
+ 0x70, 0x36, 0x4e, 0xb0, 0xe5, 0x35, 0xc9, 0x6d, 0x18, 0x57, 0x3e, 0x1e, 0xf7, 0xd2, 0x5e, 0x4d,
+ 0x35, 0x61, 0x37, 0xfc, 0x9b, 0x5d, 0x13, 0xf9, 0xbe, 0x25, 0xaf, 0x89, 0xfc, 0x17, 0x29, 0x70,
+ 0x17, 0xf1, 0x11, 0x6e, 0x05, 0xe0, 0xfb, 0x2e, 0x21, 0x80, 0xfb, 0x36, 0xdf, 0x02, 0x4d, 0xfc,
+ 0xdb, 0xf8, 0x8d, 0x09, 0x7e, 0x22, 0xab, 0xb7, 0xc4, 0x5e, 0xf6, 0xc1, 0xb1, 0xdb, 0x63, 0xf6,
+ 0x2c, 0xb7, 0xc7, 0xdc, 0xe9, 0xb7, 0xc7, 0xa1, 0xd3, 0x6e, 0x8f, 0xb1, 0xeb, 0xdd, 0xf0, 0x99,
+ 0xaf, 0x77, 0x23, 0x67, 0xba, 0xde, 0x8d, 0x9e, 0xe9, 0x7a, 0xa7, 0xdd, 0x54, 0xf3, 0xa7, 0xdd,
+ 0x54, 0xff, 0xf2, 0x32, 0xf8, 0xac, 0x5e, 0x06, 0xd3, 0x44, 0xbc, 0x33, 0x5d, 0x06, 0x7f, 0xb8,
+ 0xe7, 0x5d, 0xae, 0xf0, 0x71, 0x84, 0xf2, 0x97, 0x07, 0xb8, 0xcb, 0x0d, 0x7a, 0x93, 0x9b, 0x79,
+ 0x3a, 0x37, 0x39, 0xf2, 0xd4, 0x6e, 0x72, 0xb3, 0x4f, 0x7a, 0x93, 0x9b, 0x7b, 0x9a, 0x37, 0xb9,
+ 0x73, 0x7f, 0x11, 0x6f, 0x72, 0xe7, 0xff, 0xed, 0xdc, 0xe4, 0xfe, 0x0a, 0x14, 0xe2, 0xc2, 0xe5,
+ 0xe9, 0x51, 0x8f, 0x9f, 0x5a, 0xc8, 0x49, 0x26, 0xfa, 0xc6, 0x85, 0x3b, 0x72, 0x03, 0x60, 0xc3,
+ 0x73, 0x1e, 0xd9, 0x01, 0xbd, 0x2f, 0xad, 0xdf, 0x44, 0xc4, 0x6e, 0x0e, 0x65, 0x23, 0x6f, 0x2a,
+ 0x28, 0xe1, 0xbd, 0x26, 0x9b, 0x76, 0xaf, 0x31, 0x7e, 0x24, 0x0b, 0x33, 0x3c, 0x6e, 0xdb, 0xb3,
+ 0xff, 0x08, 0xfb, 0xbe, 0x76, 0x5b, 0x7d, 0x21, 0xca, 0x11, 0xa0, 0xb6, 0xae, 0xcf, 0x33, 0xec,
+ 0x57, 0xe1, 0x5c, 0xa2, 0x2b, 0xf0, 0xc6, 0x5a, 0x91, 0x11, 0xf3, 0x12, 0x77, 0xd6, 0xf9, 0xf4,
+ 0x4a, 0x1e, 0xde, 0x32, 0x13, 0x14, 0xc6, 0x9f, 0x0e, 0x25, 0xf8, 0x8b, 0x07, 0x59, 0xf5, 0x89,
+ 0x35, 0x73, 0xb6, 0x27, 0xd6, 0xec, 0x60, 0x4f, 0xac, 0x31, 0xa1, 0x22, 0x37, 0x88, 0x50, 0xf1,
+ 0x45, 0x98, 0xdc, 0xa4, 0x76, 0xcb, 0xdf, 0x74, 0x45, 0xc2, 0x29, 0xee, 0x6b, 0x21, 0x03, 0xe2,
+ 0xb1, 0x32, 0x79, 0xe1, 0x0a, 0x6d, 0x46, 0x03, 0x46, 0xc0, 0x8e, 0x41, 0x9e, 0x81, 0xca, 0xd4,
+ 0x39, 0xa8, 0xb7, 0xe8, 0xe1, 0x3e, 0xb7, 0xe8, 0x1a, 0x4c, 0x08, 0xba, 0x28, 0xd4, 0x73, 0x74,
+ 0xdd, 0x63, 0x45, 0x08, 0x97, 0xb5, 0x87, 0xd9, 0xf0, 0xc3, 0xda, 0xf9, 0x4d, 0x4f, 0x63, 0xc2,
+ 0xba, 0x60, 0xb9, 0xdd, 0xe8, 0xb8, 0x4e, 0x1b, 0xbb, 0x60, 0x34, 0xea, 0x02, 0x2a, 0xc0, 0xbc,
+ 0x0b, 0x14, 0x24, 0xf2, 0x2e, 0x4c, 0x95, 0x36, 0xaa, 0x2a, 0x59, 0x3e, 0x7a, 0xe5, 0xb5, 0x3b,
+ 0x8e, 0xa5, 0x91, 0xc6, 0x70, 0xfb, 0xdd, 0x7c, 0xc6, 0xfe, 0x7c, 0x6e, 0x3e, 0xc6, 0x3f, 0x9b,
+ 0x94, 0xcb, 0xfb, 0x93, 0x7d, 0x20, 0xd1, 0x9f, 0x3c, 0x72, 0x67, 0x7c, 0xf2, 0x18, 0x3a, 0x4d,
+ 0x90, 0xd4, 0xe4, 0xdb, 0xe1, 0x33, 0xc9, 0xb7, 0x23, 0x4f, 0xfc, 0x7c, 0x31, 0x7a, 0x46, 0x89,
+ 0x35, 0xb6, 0xd6, 0xf2, 0x83, 0xac, 0xb5, 0x54, 0x29, 0x77, 0xec, 0xc9, 0xa5, 0x5c, 0x38, 0xb3,
+ 0x94, 0x5b, 0x8b, 0x7c, 0x97, 0xc7, 0x4f, 0x75, 0x09, 0x79, 0x51, 0x68, 0x05, 0x66, 0xd2, 0xa3,
+ 0xf0, 0x85, 0x5e, 0xcc, 0xdf, 0x55, 0xa2, 0xf3, 0xd7, 0xd3, 0x45, 0xe7, 0xfe, 0xe7, 0xcd, 0x99,
+ 0x84, 0xe7, 0x1f, 0x79, 0xba, 0xc2, 0xf3, 0xd3, 0x7d, 0x08, 0xf9, 0x4b, 0xf1, 0xf9, 0x2f, 0xc5,
+ 0xe7, 0xc1, 0xc4, 0x67, 0xf2, 0x00, 0x88, 0xdd, 0x0d, 0xf6, 0x69, 0x3b, 0x70, 0xea, 0x18, 0x95,
+ 0x96, 0x0d, 0x31, 0xbe, 0xca, 0x88, 0xf5, 0x9a, 0x2c, 0x55, 0xd7, 0xab, 0x56, 0x8a, 0x7e, 0xde,
+ 0x1e, 0xae, 0xd7, 0x6d, 0xdb, 0x6b, 0xa3, 0x1e, 0xeb, 0x06, 0x8c, 0xca, 0xb8, 0xa6, 0x99, 0x48,
+ 0x45, 0x9d, 0x0c, 0x68, 0x2a, 0xb1, 0xc8, 0x22, 0xe4, 0x25, 0xb1, 0x9a, 0x68, 0xe7, 0x50, 0xc0,
+ 0xb4, 0x90, 0x91, 0x02, 0x66, 0xfc, 0x47, 0x43, 0xf2, 0x4c, 0x60, 0x9f, 0xb0, 0x61, 0x7b, 0x76,
+ 0x0b, 0x73, 0xf0, 0x85, 0x4b, 0x56, 0xb9, 0x0d, 0xc4, 0x56, 0x79, 0xcc, 0x57, 0x40, 0x27, 0xf9,
+ 0x58, 0x81, 0x69, 0xa3, 0x34, 0xc7, 0xb9, 0x01, 0xd2, 0x1c, 0xbf, 0xad, 0xe5, 0x08, 0x1e, 0x8a,
+ 0x92, 0x52, 0xb2, 0x7d, 0xb2, 0x7f, 0x76, 0xe0, 0xdb, 0x6a, 0x32, 0xdf, 0xe1, 0x28, 0x4c, 0x18,
+ 0x52, 0xf6, 0x49, 0xe3, 0x1b, 0x5e, 0x6f, 0x46, 0xce, 0x12, 0xf2, 0x79, 0xf4, 0xdf, 0x6a, 0xc8,
+ 0xe7, 0x65, 0x00, 0x71, 0x76, 0x47, 0xf6, 0x0e, 0xaf, 0xe2, 0x76, 0x22, 0xec, 0x9e, 0x83, 0xa0,
+ 0xd9, 0x23, 0x27, 0x88, 0x42, 0x68, 0xfc, 0x1e, 0x81, 0x99, 0x5a, 0xed, 0x41, 0xc5, 0xb1, 0xf7,
+ 0xda, 0xae, 0x1f, 0x38, 0xf5, 0x6a, 0x7b, 0xd7, 0x65, 0xb2, 0x7d, 0x78, 0xbe, 0x28, 0xc1, 0x7a,
+ 0xa3, 0xb3, 0x25, 0x2c, 0x66, 0x77, 0xc7, 0x65, 0xcf, 0x93, 0x0a, 0x57, 0x7e, 0x77, 0xa4, 0x0c,
+ 0x60, 0x72, 0x38, 0x13, 0x9f, 0x6b, 0x5d, 0x0c, 0x95, 0x21, 0x8c, 0x50, 0x50, 0x7c, 0xf6, 0x39,
+ 0xc8, 0x94, 0x65, 0x84, 0x26, 0x27, 0xac, 0xb8, 0x4e, 0x5d, 0xd0, 0x02, 0x47, 0x47, 0xc5, 0x7c,
+ 0x35, 0x0a, 0xe9, 0x06, 0xf7, 0xe1, 0x0e, 0xc2, 0x55, 0x13, 0xbb, 0xc4, 0x1a, 0x38, 0x82, 0x73,
+ 0x9a, 0x13, 0xf5, 0xa0, 0xaf, 0x33, 0xaf, 0x0b, 0x71, 0xdd, 0xc0, 0x98, 0x1d, 0x29, 0x4f, 0x34,
+ 0x6a, 0x52, 0xbd, 0xd4, 0x1a, 0xd8, 0x01, 0xf9, 0x62, 0x6a, 0x49, 0xb8, 0xba, 0xc7, 0xb5, 0xe0,
+ 0xdd, 0xca, 0xa6, 0xc1, 0xd3, 0x07, 0xf6, 0xaa, 0xda, 0x4a, 0xd9, 0x0a, 0xfa, 0xd7, 0x44, 0xfe,
+ 0x71, 0x06, 0x2e, 0x68, 0x18, 0xe1, 0xfe, 0xe7, 0x87, 0xf1, 0x45, 0x52, 0xe7, 0xf5, 0x47, 0x4f,
+ 0x67, 0x5e, 0xbf, 0xac, 0xb7, 0x25, 0xda, 0xa1, 0xd5, 0x36, 0xf4, 0xfa, 0x42, 0xf2, 0x08, 0x66,
+ 0xb0, 0x48, 0xbe, 0x14, 0xb1, 0x39, 0x2b, 0x1e, 0x98, 0xe6, 0xa2, 0xcf, 0xe6, 0x81, 0x01, 0x30,
+ 0x05, 0xfc, 0xe2, 0xb7, 0x8f, 0x8b, 0x93, 0x1a, 0xba, 0x0c, 0x87, 0x6d, 0x45, 0xcf, 0x4d, 0x4e,
+ 0x7b, 0xd7, 0xd5, 0xf2, 0xfb, 0xc7, 0xab, 0x20, 0xff, 0x75, 0x86, 0xbf, 0x4f, 0xf0, 0x66, 0xdc,
+ 0xf1, 0xdc, 0x56, 0x58, 0x2e, 0x6d, 0x35, 0x7b, 0x74, 0x5b, 0xf3, 0xe9, 0x74, 0xdb, 0xab, 0xf8,
+ 0xc9, 0x7c, 0x4f, 0xb0, 0x76, 0x3d, 0xb7, 0x15, 0x7d, 0xbe, 0xda, 0x71, 0x3d, 0x3f, 0x92, 0xfc,
+ 0xf5, 0x0c, 0x5c, 0xd4, 0xd4, 0xa4, 0x6a, 0x6e, 0x12, 0x11, 0x7e, 0x61, 0x36, 0x0c, 0xcc, 0x12,
+ 0x15, 0x2d, 0x5d, 0x17, 0xf3, 0xff, 0x0a, 0x7e, 0x81, 0x12, 0x07, 0x94, 0x21, 0x59, 0x2d, 0x8e,
+ 0xa5, 0x7c, 0x42, 0xef, 0x5a, 0x88, 0x03, 0x33, 0x68, 0xb6, 0xa3, 0xd9, 0x14, 0xcf, 0xf5, 0xb6,
+ 0x29, 0x0e, 0xb3, 0x0e, 0x61, 0x46, 0x82, 0xde, 0x86, 0xc5, 0x49, 0xae, 0xe4, 0xfb, 0xe0, 0x62,
+ 0x02, 0x18, 0xae, 0xb6, 0x73, 0x3d, 0x57, 0xdb, 0xa7, 0x4e, 0x8e, 0x8b, 0xaf, 0xa5, 0xd5, 0x96,
+ 0xb6, 0xd2, 0x7a, 0xd7, 0x40, 0x6c, 0x80, 0xa8, 0x50, 0xc8, 0x33, 0xe9, 0x13, 0xf4, 0x53, 0x62,
+ 0x7e, 0x28, 0xf8, 0x6c, 0x2f, 0x57, 0xbe, 0x41, 0x3d, 0xf2, 0x22, 0x24, 0x42, 0x61, 0x42, 0xc9,
+ 0xc6, 0x70, 0x24, 0xac, 0x47, 0x7a, 0x54, 0xf2, 0xed, 0xe3, 0xa2, 0x86, 0xcd, 0x6e, 0x58, 0x6a,
+ 0x9a, 0x07, 0x4d, 0x7c, 0x54, 0x11, 0xc9, 0xaf, 0x67, 0x60, 0x8e, 0x01, 0xa2, 0x49, 0x25, 0x1a,
+ 0x35, 0xdf, 0x6f, 0xd6, 0xef, 0x3f, 0x9d, 0x59, 0xff, 0x12, 0x7e, 0xa3, 0x3a, 0xeb, 0x13, 0x5d,
+ 0x92, 0xfa, 0x71, 0x38, 0xdb, 0x35, 0x0b, 0x31, 0x6d, 0xb6, 0x5f, 0x1c, 0x60, 0xb6, 0xf3, 0x01,
+ 0x38, 0x7d, 0xb6, 0xf7, 0xac, 0x85, 0x6c, 0xc2, 0x84, 0xb8, 0x5c, 0xf1, 0x0e, 0xbb, 0xa4, 0xc5,
+ 0x85, 0x56, 0x8b, 0xf8, 0x8d, 0x57, 0x24, 0xab, 0x48, 0xb4, 0x50, 0xe3, 0x42, 0xda, 0x30, 0xcb,
+ 0x7f, 0xeb, 0xca, 0xae, 0x62, 0x4f, 0x65, 0xd7, 0x55, 0xd1, 0xa2, 0xcb, 0x82, 0x7f, 0x4c, 0xe7,
+ 0xa5, 0xc6, 0x73, 0x4a, 0x61, 0x4c, 0x3a, 0x40, 0x34, 0x30, 0x5f, 0xb4, 0x97, 0xfb, 0xab, 0xb8,
+ 0x5e, 0x13, 0x75, 0x16, 0xe3, 0x75, 0xc6, 0x57, 0x6e, 0x0a, 0x6f, 0x62, 0xc3, 0xb4, 0x80, 0xba,
+ 0x07, 0x94, 0xef, 0xf0, 0x2f, 0x69, 0x11, 0xb5, 0x62, 0xa5, 0xfc, 0x56, 0x26, 0x6b, 0xc2, 0x88,
+ 0x67, 0xb1, 0x0d, 0x3d, 0xce, 0x8f, 0x3c, 0x80, 0x99, 0x52, 0xa7, 0xd3, 0x74, 0x68, 0x03, 0x5b,
+ 0x69, 0x76, 0x59, 0x9b, 0x8c, 0x28, 0xdf, 0x9b, 0xcd, 0x0b, 0xc5, 0x55, 0xd1, 0xeb, 0xc6, 0xb6,
+ 0x9b, 0x04, 0xad, 0xf1, 0xc3, 0x99, 0xc4, 0x47, 0x93, 0x37, 0x60, 0x0c, 0x7f, 0x28, 0x41, 0x5a,
+ 0x50, 0x67, 0xc4, 0x3f, 0x11, 0xb5, 0x51, 0x11, 0x02, 0x13, 0x96, 0xd4, 0x40, 0x8d, 0x39, 0x2e,
+ 0x2c, 0x09, 0x45, 0x45, 0xa4, 0x9a, 0x28, 0x4a, 0x5f, 0x8f, 0x5c, 0x24, 0x74, 0xa1, 0xaf, 0x87,
+ 0xf0, 0xf0, 0x30, 0xfe, 0x61, 0x56, 0x9f, 0x76, 0xe4, 0xaa, 0x22, 0xb7, 0x2b, 0xa1, 0x22, 0xa5,
+ 0xdc, 0xae, 0x48, 0xeb, 0x7f, 0x2f, 0x03, 0xb3, 0x0f, 0x94, 0x44, 0xa1, 0x9b, 0x2e, 0x8e, 0x4b,
+ 0xff, 0xd4, 0x99, 0x4f, 0x2b, 0x05, 0xa0, 0x9a, 0xa1, 0x94, 0xcd, 0x14, 0x9c, 0x32, 0x66, 0xda,
+ 0xf7, 0xa0, 0xf7, 0x1c, 0x7e, 0x98, 0x92, 0x89, 0x91, 0xa3, 0x73, 0xf8, 0x19, 0x53, 0x57, 0x18,
+ 0x3f, 0x9e, 0x85, 0x71, 0x65, 0xc5, 0x90, 0xcf, 0xc0, 0x84, 0x5a, 0xad, 0xaa, 0x70, 0x54, 0xbf,
+ 0xd2, 0xd4, 0xb0, 0x50, 0xe3, 0x48, 0xed, 0x96, 0xa6, 0x71, 0x64, 0xeb, 0x02, 0xa1, 0x67, 0xbc,
+ 0x09, 0x7d, 0x90, 0x72, 0x13, 0xc2, 0x59, 0xae, 0x68, 0x8c, 0xfa, 0xde, 0x87, 0xde, 0x4d, 0xde,
+ 0x87, 0x50, 0x79, 0xa5, 0xd0, 0xf7, 0xbe, 0x15, 0x19, 0x3f, 0x95, 0x81, 0x42, 0x7c, 0x4d, 0x7f,
+ 0x22, 0xbd, 0x72, 0x86, 0xd7, 0xa5, 0x1f, 0xcb, 0x86, 0x99, 0x5b, 0xa4, 0x0b, 0xf1, 0xb3, 0x6a,
+ 0xa6, 0xf8, 0x9e, 0xf6, 0xf0, 0xf3, 0xbc, 0x1e, 0x0d, 0x4f, 0x0d, 0xbe, 0x91, 0x1e, 0x02, 0x73,
+ 0xe8, 0x5b, 0xbf, 0x58, 0x7c, 0xce, 0xf8, 0x10, 0xe6, 0xe2, 0xdd, 0x81, 0x8f, 0x3f, 0x25, 0x98,
+ 0xd6, 0xe1, 0xf1, 0xbc, 0x4f, 0x71, 0x2a, 0x33, 0x8e, 0x6f, 0xfc, 0x41, 0x36, 0xce, 0x5b, 0x98,
+ 0x2c, 0xb2, 0x3d, 0x4a, 0x35, 0xc4, 0x11, 0x7b, 0x14, 0x07, 0x99, 0xb2, 0xec, 0x2c, 0xf9, 0xd6,
+ 0x42, 0x47, 0xd8, 0x5c, 0xba, 0x23, 0x2c, 0xb9, 0x1d, 0xb3, 0xd2, 0x56, 0xa2, 0x36, 0x1d, 0xd2,
+ 0x1d, 0x2b, 0xb2, 0xd4, 0x8e, 0x19, 0x67, 0x97, 0x61, 0x4e, 0x0b, 0x41, 0x2e, 0xe9, 0x87, 0x23,
+ 0x5d, 0x7f, 0x80, 0x05, 0x9c, 0x38, 0x15, 0x99, 0xac, 0xc0, 0x28, 0xfb, 0xcc, 0x35, 0xbb, 0x23,
+ 0xde, 0x74, 0x48, 0xe8, 0x16, 0xdf, 0x0c, 0xef, 0x87, 0x8a, 0x67, 0x7c, 0x93, 0x32, 0x09, 0x41,
+ 0x9d, 0x58, 0x02, 0xd1, 0xf8, 0x57, 0x19, 0xb6, 0xfe, 0xeb, 0x07, 0xdf, 0x65, 0x49, 0xdb, 0x58,
+ 0x93, 0xfa, 0x58, 0xd4, 0xfe, 0x51, 0x96, 0xe7, 0xe2, 0x11, 0xd3, 0xe7, 0x6d, 0x18, 0xd9, 0xb4,
+ 0xbd, 0x3d, 0x91, 0x32, 0x5b, 0xe7, 0xc2, 0x0b, 0xa2, 0x98, 0x52, 0x01, 0xfe, 0x36, 0x05, 0x81,
+ 0xaa, 0x3a, 0xcb, 0x0e, 0xa4, 0x3a, 0x53, 0xde, 0x05, 0x72, 0x4f, 0xed, 0x5d, 0xe0, 0x7b, 0xc2,
+ 0xb4, 0x3b, 0xa5, 0x60, 0x80, 0x08, 0xd7, 0x97, 0xe3, 0x59, 0xae, 0x12, 0xb1, 0xc8, 0x23, 0x76,
+ 0xe4, 0xb6, 0x9a, 0x37, 0x4b, 0xf1, 0x2d, 0x3d, 0x25, 0x43, 0x96, 0xf1, 0x47, 0x39, 0xde, 0xc7,
+ 0xa2, 0xa3, 0xae, 0x68, 0x7e, 0xe7, 0xb8, 0x4e, 0x62, 0x7a, 0x4a, 0xee, 0x81, 0x7e, 0x05, 0x86,
+ 0xd8, 0xdc, 0x14, 0xbd, 0x89, 0x78, 0x6c, 0xfe, 0xaa, 0x78, 0xac, 0x9c, 0xad, 0x65, 0x3c, 0x93,
+ 0xd4, 0x84, 0x88, 0x78, 0x6c, 0xa9, 0x6b, 0x19, 0x31, 0xc8, 0x55, 0x18, 0x5a, 0x77, 0x1b, 0x32,
+ 0x92, 0xfa, 0x1c, 0x46, 0x1f, 0xd1, 0x32, 0xae, 0xce, 0x67, 0x4c, 0xc4, 0x60, 0x6d, 0x0d, 0xf3,
+ 0x4f, 0xa8, 0x6d, 0x6d, 0xed, 0xda, 0xc9, 0x44, 0x77, 0x4a, 0xd2, 0x9b, 0x65, 0x98, 0xda, 0x76,
+ 0xda, 0x0d, 0xf7, 0xd0, 0xaf, 0x50, 0xff, 0x20, 0x70, 0x3b, 0xc2, 0xde, 0x18, 0xb5, 0xfb, 0x87,
+ 0xbc, 0xc4, 0x6a, 0xf0, 0x22, 0xf5, 0x59, 0x46, 0x27, 0x22, 0x4b, 0x30, 0xa9, 0x45, 0x70, 0x15,
+ 0x8f, 0xab, 0xa8, 0x0d, 0xd5, 0xe3, 0xbf, 0xaa, 0xda, 0x50, 0x8d, 0x84, 0x9d, 0xe7, 0xe2, 0xfb,
+ 0x95, 0x27, 0xd6, 0xc4, 0xb7, 0x0b, 0x1c, 0x72, 0x0b, 0xf2, 0x3c, 0xcc, 0x47, 0xb5, 0xa2, 0x3e,
+ 0x93, 0xf9, 0x08, 0x8b, 0x85, 0xc9, 0x91, 0x88, 0x4a, 0x58, 0x87, 0x4f, 0x43, 0x41, 0x6c, 0x49,
+ 0x51, 0xae, 0xf6, 0x17, 0x60, 0xa8, 0x5c, 0xad, 0x98, 0xea, 0x36, 0x52, 0x77, 0x1a, 0x9e, 0x89,
+ 0x50, 0xf4, 0xea, 0x5b, 0xa7, 0xc1, 0xa1, 0xeb, 0x1d, 0x98, 0xd4, 0x0f, 0x3c, 0x87, 0xe7, 0xd3,
+ 0xc4, 0x85, 0xf8, 0x19, 0xf2, 0x2e, 0x0c, 0xa3, 0xe1, 0x6b, 0xec, 0x64, 0x88, 0xd7, 0xb1, 0x34,
+ 0x29, 0x26, 0xf0, 0x30, 0x5a, 0xd1, 0x9a, 0x9c, 0x88, 0xbc, 0x0d, 0x43, 0x15, 0xda, 0x3e, 0x8a,
+ 0xa5, 0xfa, 0x4b, 0x10, 0x87, 0x1b, 0x42, 0x83, 0xb6, 0x8f, 0x4c, 0x24, 0x31, 0x7e, 0x2a, 0x0b,
+ 0xe7, 0x52, 0x3e, 0xeb, 0xe1, 0x67, 0x9e, 0xd1, 0x5d, 0x71, 0x49, 0xdb, 0x15, 0xe5, 0xfb, 0x78,
+ 0xcf, 0x8e, 0x4f, 0xdd, 0x24, 0x7f, 0x3e, 0x03, 0x17, 0xf4, 0x09, 0x2a, 0x2c, 0xdd, 0x1f, 0xde,
+ 0x22, 0xef, 0xc0, 0xc8, 0x0a, 0xb5, 0x1b, 0x54, 0xe6, 0xf5, 0x3a, 0x17, 0x06, 0xe4, 0xe3, 0x31,
+ 0x0c, 0x78, 0x21, 0x67, 0x1b, 0x79, 0xbc, 0x72, 0x28, 0xa9, 0x88, 0x8f, 0xe3, 0xe2, 0xbb, 0x21,
+ 0xe3, 0x89, 0xa4, 0x55, 0xd5, 0xc7, 0xca, 0xe4, 0xdb, 0x19, 0x78, 0xbe, 0x0f, 0x0d, 0x1b, 0x38,
+ 0x36, 0xf4, 0xea, 0xc0, 0xe1, 0x89, 0x8a, 0x50, 0xf2, 0x3e, 0x4c, 0x6f, 0x0a, 0xf1, 0x5f, 0x0e,
+ 0x47, 0x36, 0x5a, 0x2f, 0xf2, 0x66, 0x60, 0xc9, 0x71, 0x89, 0x23, 0x6b, 0x81, 0x6e, 0x72, 0x7d,
+ 0x03, 0xdd, 0xa8, 0x71, 0x63, 0x86, 0x06, 0x8d, 0x1b, 0xf3, 0x21, 0xcc, 0xe9, 0x6d, 0x13, 0xe1,
+ 0x7b, 0xa3, 0xa8, 0x39, 0x99, 0xde, 0x51, 0x73, 0xfa, 0x06, 0x09, 0x35, 0x7e, 0x3c, 0x03, 0x05,
+ 0x9d, 0xf7, 0x93, 0x8e, 0xe7, 0x7b, 0xda, 0x78, 0x3e, 0x9f, 0x3e, 0x9e, 0xbd, 0x07, 0xf2, 0xff,
+ 0xca, 0xc4, 0x1b, 0x3b, 0xd0, 0x08, 0x1a, 0x30, 0x52, 0x71, 0x5b, 0xb6, 0xd3, 0x56, 0x53, 0xff,
+ 0x37, 0x10, 0x62, 0x8a, 0x92, 0xc1, 0x82, 0x0c, 0x5d, 0x86, 0xe1, 0x75, 0xb7, 0x5d, 0xaa, 0x08,
+ 0x93, 0x62, 0xe4, 0xd3, 0x76, 0xdb, 0x96, 0xdd, 0x30, 0x79, 0x01, 0x59, 0x05, 0xa8, 0xd5, 0x3d,
+ 0x4a, 0xdb, 0x35, 0xe7, 0x7b, 0x69, 0x4c, 0xd2, 0x60, 0x3d, 0xd4, 0xec, 0xe2, 0xc6, 0xc2, 0x9f,
+ 0x4e, 0x11, 0xd1, 0xf2, 0x9d, 0xef, 0x55, 0xf7, 0x5b, 0x85, 0x1e, 0xd7, 0x95, 0x88, 0xc3, 0x16,
+ 0x1b, 0x87, 0x9b, 0x9f, 0xc4, 0xba, 0x4a, 0xad, 0x0a, 0x7b, 0xf8, 0x66, 0xea, 0x70, 0xfc, 0x7e,
+ 0x06, 0x9e, 0xef, 0x43, 0xf3, 0x14, 0x46, 0xe5, 0xcf, 0xbb, 0xc3, 0x29, 0x40, 0x44, 0x84, 0x99,
+ 0x94, 0x9d, 0x46, 0xc0, 0x73, 0xf5, 0x4d, 0x8a, 0x4c, 0xca, 0x0c, 0xa0, 0x65, 0x52, 0x66, 0x00,
+ 0x76, 0x96, 0xae, 0x50, 0x67, 0x6f, 0x9f, 0x9b, 0x87, 0x4d, 0xf2, 0xbd, 0x61, 0x1f, 0x21, 0xea,
+ 0x59, 0xca, 0x71, 0x8c, 0x7f, 0x3d, 0x0c, 0x17, 0x4d, 0xba, 0xe7, 0xb0, 0x7b, 0xc9, 0x96, 0xef,
+ 0xb4, 0xf7, 0xb4, 0xb8, 0x3b, 0x46, 0x6c, 0xe5, 0x8a, 0x24, 0x15, 0x0c, 0x12, 0xce, 0xc4, 0x6b,
+ 0x90, 0x67, 0x62, 0x88, 0xb2, 0x78, 0xf1, 0x8d, 0x8b, 0x09, 0x2b, 0x22, 0xb0, 0xb3, 0x2c, 0x26,
+ 0xaf, 0x0b, 0x31, 0x49, 0x49, 0x23, 0xc4, 0xc4, 0xa4, 0xef, 0x1c, 0x17, 0xa1, 0x76, 0xe4, 0x07,
+ 0x14, 0xaf, 0xc8, 0x42, 0x54, 0x0a, 0xef, 0x32, 0x43, 0x3d, 0xee, 0x32, 0x6b, 0x30, 0x57, 0x6a,
+ 0xf0, 0xd3, 0xd1, 0x6e, 0x6e, 0x78, 0x4e, 0xbb, 0xee, 0x74, 0xec, 0xa6, 0xbc, 0x9f, 0x63, 0x2f,
+ 0xdb, 0x61, 0xb9, 0xd5, 0x09, 0x11, 0xcc, 0x54, 0x32, 0xd6, 0x8c, 0xca, 0x7a, 0x0d, 0xc3, 0xd3,
+ 0x88, 0xe7, 0x4b, 0x6c, 0x46, 0xa3, 0xed, 0x63, 0x2b, 0x7c, 0x33, 0x2c, 0xc6, 0x5b, 0x14, 0x1a,
+ 0x04, 0x6c, 0xae, 0xd6, 0x22, 0x97, 0x6a, 0x9e, 0xe5, 0x80, 0x1b, 0x16, 0x04, 0x4d, 0x1f, 0x4d,
+ 0x31, 0x35, 0xbc, 0x88, 0xae, 0x56, 0x5b, 0x61, 0x74, 0xf9, 0x04, 0x9d, 0xef, 0xef, 0xab, 0x74,
+ 0x1c, 0x8f, 0xdc, 0x60, 0x53, 0xa1, 0xe5, 0x06, 0x14, 0xa7, 0xf0, 0x58, 0x74, 0xe7, 0xf2, 0x10,
+ 0xca, 0xef, 0x5c, 0x0a, 0x0a, 0x79, 0x17, 0x66, 0x97, 0xcb, 0x8b, 0x52, 0xe9, 0x5c, 0x71, 0xeb,
+ 0x5d, 0x34, 0x04, 0x00, 0xac, 0x0f, 0xc7, 0x90, 0xd6, 0x17, 0xd9, 0x6e, 0x92, 0x86, 0x46, 0xae,
+ 0xc0, 0x68, 0xb5, 0xc2, 0xfb, 0x7e, 0x5c, 0x4d, 0xe5, 0x25, 0x2c, 0xb3, 0x64, 0x21, 0x79, 0x10,
+ 0x5d, 0x0a, 0x26, 0x4e, 0x95, 0xde, 0x2f, 0x0e, 0x70, 0x21, 0x78, 0x1b, 0x26, 0x97, 0xdc, 0xa0,
+ 0xda, 0xf6, 0x03, 0xbb, 0x5d, 0xa7, 0xd5, 0x8a, 0x1a, 0x57, 0x7b, 0xc7, 0x0d, 0x2c, 0x47, 0x94,
+ 0xb0, 0x2f, 0xd7, 0x31, 0xc9, 0xe7, 0x90, 0xf4, 0x2e, 0x6d, 0x53, 0x2f, 0x8a, 0xa7, 0x3d, 0xcc,
+ 0xfb, 0x96, 0x91, 0xee, 0x85, 0x25, 0xa6, 0x8e, 0x28, 0xd2, 0x8c, 0xf1, 0xe4, 0xa0, 0x65, 0xb7,
+ 0x41, 0x7d, 0xbe, 0x5b, 0x7c, 0x17, 0xa5, 0x19, 0x53, 0xda, 0xd6, 0x67, 0x07, 0xfd, 0xf7, 0x31,
+ 0xcd, 0x58, 0x02, 0x97, 0x7c, 0x0e, 0x86, 0xf1, 0xa7, 0x90, 0x6e, 0x67, 0x53, 0xd8, 0x46, 0x92,
+ 0x6d, 0x9d, 0x61, 0x9a, 0x9c, 0x80, 0x54, 0x61, 0x54, 0x5c, 0xac, 0xce, 0x92, 0x2c, 0x47, 0xdc,
+ 0xd0, 0xf8, 0xcc, 0x10, 0xf4, 0x46, 0x03, 0x26, 0xd4, 0x0a, 0xd9, 0x8a, 0x58, 0xb1, 0xfd, 0x7d,
+ 0xda, 0x60, 0xbf, 0x44, 0x9e, 0x3b, 0x5c, 0x11, 0xfb, 0x08, 0xb5, 0xd8, 0x77, 0x98, 0x0a, 0x0a,
+ 0x3b, 0x53, 0xab, 0xfe, 0x96, 0x2f, 0x3e, 0x45, 0xa8, 0x5a, 0x1c, 0x54, 0xdb, 0x35, 0x4c, 0x51,
+ 0x64, 0x7c, 0x0f, 0xcc, 0xad, 0x77, 0x9b, 0x4d, 0x7b, 0xa7, 0x49, 0x65, 0x1e, 0x14, 0x4c, 0x38,
+ 0xbe, 0x04, 0xc3, 0x35, 0x25, 0x85, 0x79, 0x98, 0x8b, 0x52, 0xc1, 0x41, 0x23, 0xd8, 0x0c, 0x86,
+ 0x0a, 0x8a, 0x25, 0x2f, 0xe7, 0xa4, 0xc6, 0xef, 0x66, 0x60, 0x4e, 0x9a, 0x0b, 0x78, 0x76, 0xfd,
+ 0x20, 0xcc, 0x63, 0x7f, 0x45, 0x9b, 0x6b, 0x38, 0x61, 0x63, 0xd3, 0x88, 0xcf, 0xba, 0x7b, 0xf2,
+ 0x23, 0x74, 0x81, 0x25, 0xed, 0x83, 0x4f, 0xfb, 0x18, 0xf2, 0x2e, 0x8c, 0x8b, 0xe3, 0x51, 0x09,
+ 0x70, 0x89, 0x51, 0xc4, 0xc4, 0x75, 0x2f, 0x6e, 0xbc, 0xa2, 0xa2, 0xa3, 0x2c, 0xa6, 0x37, 0xe5,
+ 0x49, 0x65, 0x80, 0x74, 0x59, 0x4c, 0xaf, 0xa3, 0xcf, 0xd4, 0xfd, 0xad, 0xf1, 0x78, 0xdf, 0x8a,
+ 0xb9, 0x7b, 0x5b, 0x0d, 0x69, 0x97, 0x89, 0x6e, 0xc6, 0x51, 0x48, 0x3b, 0xf5, 0x66, 0x1c, 0xa2,
+ 0x86, 0x63, 0x92, 0x3d, 0x65, 0x4c, 0xde, 0x97, 0x63, 0x92, 0xeb, 0x3d, 0x31, 0x66, 0xfb, 0x8c,
+ 0x43, 0x2d, 0x5a, 0x21, 0x43, 0x03, 0xa9, 0x55, 0x9e, 0xc3, 0xd8, 0xfd, 0x9c, 0x24, 0xbe, 0x8b,
+ 0x0a, 0x4e, 0xaa, 0xae, 0x66, 0x78, 0x70, 0xa6, 0xa7, 0x6c, 0xcd, 0x9f, 0x87, 0x89, 0x52, 0x10,
+ 0xd8, 0xf5, 0x7d, 0xda, 0xa8, 0xb0, 0xed, 0x49, 0x89, 0xbe, 0x65, 0x0b, 0xb8, 0xfa, 0xc6, 0xa6,
+ 0xe2, 0xf2, 0x68, 0xb2, 0xb6, 0x2f, 0x8c, 0x69, 0xc3, 0x68, 0xb2, 0x0c, 0xa2, 0x47, 0x93, 0x65,
+ 0x10, 0x72, 0x03, 0x46, 0xab, 0xed, 0x47, 0x0e, 0xeb, 0x13, 0x1e, 0x80, 0x0b, 0x75, 0x53, 0x0e,
+ 0x07, 0xa9, 0x9b, 0xab, 0xc0, 0x22, 0x6f, 0x2b, 0x97, 0x9a, 0xb1, 0x48, 0x81, 0xc1, 0x55, 0x5e,
+ 0x61, 0x84, 0x1d, 0xf5, 0xc2, 0x12, 0xde, 0x72, 0x6e, 0xc3, 0xa8, 0xd4, 0x64, 0x42, 0xa4, 0xb4,
+ 0x10, 0x94, 0xc9, 0x80, 0x15, 0x12, 0x19, 0x73, 0x92, 0x2b, 0xf9, 0xfa, 0xc6, 0x95, 0x9c, 0xe4,
+ 0x4a, 0xbe, 0x3e, 0x2d, 0x27, 0xb9, 0x92, 0xb9, 0x2f, 0x54, 0x02, 0x4d, 0x9c, 0xaa, 0x04, 0x7a,
+ 0x08, 0x13, 0x1b, 0xb6, 0x17, 0x38, 0x4c, 0x46, 0x69, 0x07, 0xfe, 0xfc, 0xa4, 0xa6, 0x37, 0x55,
+ 0x8a, 0x96, 0x2e, 0xc9, 0xbc, 0xd8, 0x1d, 0x05, 0x5f, 0x4f, 0xe0, 0x1c, 0xc1, 0xd3, 0x4d, 0x69,
+ 0xa7, 0x9e, 0xc4, 0x94, 0x16, 0x3b, 0x15, 0x75, 0x65, 0xd3, 0x91, 0x46, 0x06, 0x2f, 0x2d, 0x31,
+ 0x85, 0x59, 0x88, 0x48, 0xbe, 0x02, 0x13, 0xec, 0xef, 0x0d, 0xb7, 0xe9, 0xd4, 0x1d, 0xea, 0xcf,
+ 0x17, 0xb0, 0x71, 0x97, 0x52, 0x57, 0x3f, 0x22, 0x1d, 0xd5, 0x68, 0xc0, 0x17, 0x30, 0x32, 0x8e,
+ 0x2b, 0xc1, 0x35, 0x6e, 0xe4, 0x03, 0x98, 0x60, 0xb3, 0x6f, 0xc7, 0xf6, 0xb9, 0x68, 0x3a, 0x13,
+ 0x19, 0x43, 0x37, 0x04, 0x3c, 0x11, 0xd0, 0x59, 0x25, 0x60, 0xc7, 0x7c, 0xa9, 0xc3, 0x37, 0x48,
+ 0xa2, 0xcc, 0xf6, 0x4e, 0x62, 0x73, 0x94, 0x68, 0xe4, 0x0b, 0x30, 0x51, 0xea, 0x74, 0xa2, 0x1d,
+ 0x67, 0x56, 0x51, 0x84, 0x75, 0x3a, 0x56, 0xea, 0xae, 0xa3, 0x51, 0xc4, 0x37, 0xe6, 0xb9, 0x33,
+ 0x6d, 0xcc, 0xe4, 0xcd, 0x50, 0x5a, 0x3f, 0x17, 0x69, 0x75, 0xc5, 0xc5, 0x51, 0x13, 0xfd, 0xb9,
+ 0xe0, 0x5e, 0x86, 0x49, 0xae, 0xe6, 0x94, 0xd2, 0xcc, 0xf9, 0xc4, 0xea, 0x49, 0x11, 0x6a, 0x74,
+ 0x1a, 0xb2, 0x0c, 0x53, 0xdc, 0xdb, 0xbb, 0x29, 0x22, 0x6d, 0xcf, 0x5f, 0xc0, 0x55, 0x8b, 0x5c,
+ 0xb8, 0x93, 0x78, 0x13, 0x13, 0xb0, 0xd8, 0x1a, 0x97, 0x18, 0x91, 0xf1, 0xc7, 0x19, 0xb8, 0xd0,
+ 0x63, 0xc4, 0xc3, 0x38, 0xcc, 0x99, 0xfe, 0x71, 0x98, 0xd9, 0xce, 0xa1, 0x6b, 0x45, 0xb0, 0xfd,
+ 0x42, 0xca, 0x52, 0xc7, 0x4b, 0xca, 0x5b, 0x2e, 0x10, 0x91, 0xe3, 0x48, 0x54, 0x7d, 0xcf, 0x45,
+ 0xd5, 0x6c, 0x2e, 0x79, 0x08, 0x09, 0x3c, 0xfe, 0x51, 0x4b, 0xc6, 0xc9, 0x71, 0xf1, 0x92, 0x48,
+ 0xa1, 0x14, 0x0e, 0xeb, 0x47, 0xae, 0xb6, 0x82, 0x53, 0x58, 0x1b, 0xc7, 0x19, 0x18, 0x57, 0xd6,
+ 0x21, 0xb9, 0xac, 0x78, 0x21, 0x17, 0x78, 0x12, 0x2e, 0x85, 0x43, 0x96, 0x9f, 0x44, 0xb8, 0xa8,
+ 0xb2, 0xa7, 0x2b, 0xa0, 0xd7, 0x98, 0x28, 0xa4, 0xc4, 0xaa, 0x6e, 0x69, 0xda, 0x62, 0x13, 0xcb,
+ 0x31, 0x9d, 0xbf, 0xed, 0x07, 0xa5, 0x7a, 0xe0, 0x3c, 0xa2, 0x03, 0x1c, 0x3a, 0x51, 0x3a, 0x7f,
+ 0xdb, 0x0f, 0x2c, 0x1b, 0xc9, 0x12, 0xe9, 0xfc, 0x43, 0x86, 0xc6, 0xf7, 0x67, 0x00, 0xb6, 0xaa,
+ 0x65, 0x0c, 0x36, 0xff, 0xa4, 0x42, 0x41, 0x7a, 0x00, 0x5f, 0xc9, 0xbd, 0x8f, 0x38, 0xf0, 0x3f,
+ 0x65, 0x60, 0x4a, 0x47, 0x23, 0xef, 0xc3, 0x74, 0xad, 0xee, 0xb9, 0xcd, 0xe6, 0x8e, 0x5d, 0x3f,
+ 0x58, 0x75, 0xda, 0x94, 0x87, 0x4e, 0x1d, 0xe6, 0x67, 0x91, 0x1f, 0x16, 0x59, 0x4d, 0x56, 0x66,
+ 0xc6, 0x91, 0xc9, 0x0f, 0x64, 0x60, 0xb2, 0xb6, 0xef, 0x1e, 0x86, 0xd1, 0x4e, 0xc5, 0x80, 0x7c,
+ 0x95, 0xad, 0x6d, 0x7f, 0xdf, 0x3d, 0x8c, 0x32, 0x78, 0x6a, 0xb6, 0xa2, 0xef, 0x0d, 0xf6, 0x8c,
+ 0x5f, 0x77, 0xf1, 0x26, 0x13, 0xf8, 0xd7, 0xb5, 0x4a, 0x4c, 0xbd, 0x4e, 0xe3, 0xcf, 0x32, 0x30,
+ 0x8e, 0x77, 0x9e, 0x66, 0x13, 0x65, 0xae, 0xef, 0xa6, 0x74, 0x90, 0x61, 0xbb, 0xfa, 0x0c, 0xec,
+ 0x5b, 0x30, 0x1d, 0x43, 0x23, 0x06, 0x8c, 0xd4, 0x30, 0xc0, 0x80, 0xaa, 0xa0, 0xe0, 0x21, 0x07,
+ 0x4c, 0x51, 0x62, 0x2c, 0x2b, 0x64, 0x0f, 0x6f, 0xe2, 0xb3, 0xee, 0x22, 0x80, 0x23, 0x41, 0xf2,
+ 0x66, 0x43, 0xe2, 0x5f, 0xf2, 0xf0, 0xa6, 0xa9, 0x60, 0x19, 0xeb, 0x30, 0x52, 0x73, 0xbd, 0x60,
+ 0xe9, 0x88, 0x5f, 0x26, 0x2a, 0xd4, 0xaf, 0xab, 0xef, 0xb6, 0x0e, 0xbe, 0x95, 0xd4, 0x4d, 0x51,
+ 0x44, 0x8a, 0x30, 0x7c, 0xc7, 0xa1, 0xcd, 0x86, 0x6a, 0xcf, 0xbb, 0xcb, 0x00, 0x26, 0x87, 0xb3,
+ 0x0b, 0xd7, 0xf9, 0x28, 0x27, 0x4b, 0x64, 0x38, 0xfc, 0xa4, 0xeb, 0xa6, 0xac, 0xf5, 0xef, 0x4b,
+ 0x61, 0x1e, 0x84, 0x64, 0x4d, 0x7d, 0xba, 0xfa, 0x1f, 0x66, 0x60, 0xa1, 0x37, 0x89, 0x6a, 0x8b,
+ 0x9c, 0xe9, 0x63, 0x8b, 0xfc, 0x6a, 0xfc, 0x9d, 0x11, 0xd1, 0xc4, 0x3b, 0x63, 0xf4, 0xba, 0x58,
+ 0x41, 0x53, 0xf0, 0x3a, 0x95, 0x89, 0x58, 0x2e, 0xf7, 0xf9, 0x66, 0x44, 0xe4, 0xc3, 0x1c, 0x20,
+ 0x8d, 0x29, 0x68, 0x8d, 0xdf, 0x1c, 0x82, 0x8b, 0x3d, 0x29, 0xc8, 0x8a, 0x92, 0xde, 0x69, 0x2a,
+ 0x4c, 0x2c, 0xd3, 0x13, 0xff, 0x3a, 0xfe, 0x8b, 0xd6, 0x7e, 0x71, 0x6f, 0xb7, 0x07, 0x61, 0x5a,
+ 0x9f, 0x2c, 0xf2, 0xfa, 0xd4, 0xa9, 0xbc, 0x38, 0x3a, 0x32, 0x83, 0x64, 0x86, 0x1f, 0xf4, 0x8b,
+ 0xa4, 0x81, 0xed, 0x34, 0x7d, 0x75, 0xd9, 0x35, 0x38, 0xc8, 0x94, 0x65, 0x91, 0x81, 0xf8, 0x50,
+ 0xba, 0x81, 0xb8, 0xf1, 0xaf, 0x33, 0x30, 0x16, 0x7e, 0x36, 0x59, 0x80, 0xf3, 0x9b, 0x66, 0xa9,
+ 0xbc, 0x6c, 0x6d, 0x7e, 0xb8, 0xb1, 0x6c, 0x6d, 0xad, 0xd7, 0x36, 0x96, 0xcb, 0xd5, 0x3b, 0xd5,
+ 0xe5, 0x4a, 0xe1, 0x39, 0x32, 0x03, 0x93, 0x5b, 0xeb, 0xf7, 0xd7, 0x1f, 0x6c, 0xaf, 0x5b, 0xcb,
+ 0xa6, 0xf9, 0xc0, 0x2c, 0x64, 0xc8, 0x24, 0x8c, 0x99, 0x4b, 0xa5, 0xb2, 0xb5, 0xfe, 0xa0, 0xb2,
+ 0x5c, 0xc8, 0x92, 0x02, 0x4c, 0x94, 0x1f, 0xac, 0xaf, 0x2f, 0x97, 0x37, 0xab, 0x0f, 0xab, 0x9b,
+ 0x1f, 0x16, 0x72, 0x84, 0xc0, 0x14, 0x22, 0x6c, 0x98, 0xd5, 0xf5, 0x72, 0x75, 0xa3, 0xb4, 0x5a,
+ 0x18, 0x62, 0x30, 0x86, 0xaf, 0xc0, 0x86, 0x43, 0x46, 0xf7, 0xb7, 0x96, 0x96, 0x0b, 0x23, 0x0c,
+ 0x85, 0xfd, 0xa5, 0xa0, 0x8c, 0xb2, 0xea, 0x11, 0xa5, 0x52, 0xda, 0x2c, 0x2d, 0x95, 0x6a, 0xcb,
+ 0x85, 0x3c, 0xb9, 0x00, 0xb3, 0x1a, 0xc8, 0x5a, 0x7d, 0x70, 0xb7, 0xba, 0x5e, 0x18, 0x23, 0x73,
+ 0x50, 0x08, 0x61, 0x95, 0x25, 0x6b, 0xab, 0xb6, 0x6c, 0x16, 0x20, 0x0e, 0x5d, 0x2f, 0xad, 0x2d,
+ 0x17, 0xc6, 0x8d, 0xf7, 0xb8, 0x1f, 0x22, 0xef, 0x6a, 0x72, 0x1e, 0x48, 0x6d, 0xb3, 0xb4, 0xb9,
+ 0x55, 0x8b, 0x35, 0x7e, 0x1c, 0x46, 0x6b, 0x5b, 0xe5, 0xf2, 0x72, 0xad, 0x56, 0xc8, 0x10, 0x80,
+ 0x91, 0x3b, 0xa5, 0xea, 0xea, 0x72, 0xa5, 0x90, 0x35, 0x7e, 0x32, 0x03, 0x33, 0x52, 0x02, 0x94,
+ 0x8f, 0x46, 0x4f, 0xb8, 0x16, 0xdf, 0xd7, 0x2e, 0xb6, 0xd2, 0x49, 0x2c, 0x56, 0x49, 0x9f, 0x65,
+ 0xf8, 0xf3, 0x19, 0x38, 0x97, 0x8a, 0x4d, 0x3e, 0x84, 0x82, 0xfc, 0x82, 0x35, 0x3b, 0xa8, 0xef,
+ 0x47, 0xfb, 0xd8, 0xa5, 0x58, 0x2d, 0x31, 0x34, 0xae, 0xd6, 0x8c, 0x12, 0x4e, 0x27, 0xd8, 0x0c,
+ 0x9e, 0x0e, 0xc1, 0xf8, 0x56, 0x06, 0x2e, 0xf4, 0xa8, 0x86, 0x94, 0x61, 0x24, 0x4c, 0x8c, 0xd3,
+ 0xc7, 0xe0, 0x6d, 0xee, 0xdb, 0xc7, 0x45, 0x81, 0x88, 0x19, 0x7a, 0xf1, 0x2f, 0x73, 0x24, 0xcc,
+ 0x74, 0x83, 0xe9, 0x66, 0x78, 0xf7, 0x5d, 0x8c, 0xf5, 0xbc, 0xa8, 0xa9, 0xb4, 0x5d, 0x5b, 0x1a,
+ 0x17, 0x7d, 0x97, 0xb3, 0x0f, 0x7d, 0xcc, 0x37, 0x63, 0xfc, 0x4c, 0x86, 0x09, 0x77, 0x71, 0x44,
+ 0x26, 0xf3, 0x96, 0x7c, 0xbf, 0xdb, 0xa2, 0xa6, 0xdb, 0xa4, 0x25, 0x73, 0x5d, 0x1c, 0x1b, 0x28,
+ 0xad, 0xda, 0x58, 0x80, 0xd7, 0x0a, 0xcb, 0xf6, 0xda, 0xda, 0x6b, 0xb5, 0x4a, 0x43, 0xde, 0x06,
+ 0x58, 0x7e, 0x1c, 0x50, 0xaf, 0x6d, 0x37, 0xc3, 0x18, 0x31, 0x3c, 0xb2, 0x95, 0x80, 0xea, 0xf2,
+ 0xb6, 0x82, 0x6c, 0xfc, 0x8d, 0x0c, 0x4c, 0x88, 0x4b, 0x53, 0xa9, 0x49, 0xbd, 0xe0, 0xc9, 0xa6,
+ 0xd7, 0xdb, 0xda, 0xf4, 0x0a, 0xfd, 0x3b, 0x14, 0xfe, 0xac, 0x38, 0x75, 0x66, 0xfd, 0xf3, 0x0c,
+ 0x14, 0xe2, 0x88, 0xe4, 0x7d, 0xc8, 0xd7, 0xe8, 0x23, 0xea, 0x39, 0xc1, 0x91, 0xd8, 0x28, 0x65,
+ 0x0a, 0x41, 0x8e, 0x23, 0xca, 0xf8, 0x7c, 0xf0, 0xc5, 0x2f, 0x33, 0xa4, 0x19, 0x74, 0xbf, 0x57,
+ 0xd4, 0x1e, 0xb9, 0xa7, 0xa5, 0xf6, 0x30, 0xfe, 0xb7, 0x2c, 0x5c, 0xb8, 0x4b, 0x03, 0xb5, 0x4d,
+ 0xa1, 0x79, 0xc1, 0xa7, 0x07, 0x6b, 0x97, 0xd2, 0x92, 0x79, 0x18, 0xc5, 0x22, 0x39, 0xbe, 0xa6,
+ 0xfc, 0x49, 0x96, 0xc2, 0x79, 0x9d, 0xd3, 0x72, 0x94, 0xf5, 0xa8, 0xfb, 0xba, 0x92, 0xb5, 0x28,
+ 0x9c, 0xd6, 0x57, 0x60, 0x0a, 0xc3, 0xf2, 0x77, 0xd9, 0x72, 0xa0, 0x0d, 0xa1, 0xfe, 0xc9, 0x9b,
+ 0x31, 0x28, 0x79, 0x1d, 0x0a, 0x0c, 0x52, 0xaa, 0x1f, 0xb4, 0xdd, 0xc3, 0x26, 0x6d, 0xec, 0xd1,
+ 0x06, 0x1e, 0xeb, 0x79, 0x33, 0x01, 0x97, 0x3c, 0xb7, 0xda, 0xfc, 0xea, 0x46, 0x1b, 0xa8, 0xa3,
+ 0x11, 0x3c, 0x23, 0xe8, 0xc2, 0xdb, 0x30, 0xfe, 0x31, 0x33, 0x90, 0x19, 0xff, 0x6b, 0x06, 0xe6,
+ 0xb0, 0x71, 0x4a, 0xc5, 0x32, 0x3b, 0xac, 0xec, 0x2d, 0x25, 0x29, 0x8f, 0xcd, 0x40, 0xfa, 0x52,
+ 0x08, 0x7b, 0x31, 0xd2, 0x09, 0x65, 0x07, 0xd0, 0x09, 0xd5, 0xce, 0x92, 0x09, 0x7f, 0x40, 0x95,
+ 0xd6, 0xbd, 0xa1, 0x7c, 0xae, 0x30, 0x14, 0x0d, 0xb9, 0xf1, 0x03, 0x59, 0x18, 0x35, 0x29, 0xa6,
+ 0x08, 0x27, 0x57, 0x60, 0x74, 0xdd, 0x0d, 0xa8, 0xbf, 0xa6, 0xe5, 0x83, 0x6f, 0x33, 0x90, 0xd5,
+ 0x6a, 0x98, 0xb2, 0x90, 0x4d, 0xf8, 0x0d, 0xcf, 0x6d, 0x74, 0xeb, 0x81, 0x3a, 0xe1, 0x3b, 0x1c,
+ 0x64, 0xca, 0x32, 0xf2, 0x06, 0x8c, 0x09, 0xce, 0xe1, 0xa3, 0x2e, 0xda, 0x2e, 0x7b, 0x34, 0x4c,
+ 0x31, 0x1f, 0x21, 0xa0, 0x4c, 0xcb, 0x05, 0x8c, 0x21, 0x45, 0xa6, 0x4d, 0xc8, 0x0c, 0x52, 0x54,
+ 0x1f, 0xee, 0x23, 0xaa, 0x7f, 0x1a, 0x46, 0x4a, 0xbe, 0x4f, 0x03, 0x19, 0x45, 0x61, 0x22, 0x0c,
+ 0x1b, 0xe7, 0xd3, 0x80, 0x33, 0xb6, 0xb1, 0xdc, 0x14, 0x78, 0xc6, 0xbf, 0xca, 0xc2, 0x30, 0xfe,
+ 0x89, 0x4f, 0xa6, 0x5e, 0x7d, 0x5f, 0x7b, 0x32, 0xf5, 0xea, 0xfb, 0x26, 0x42, 0xc9, 0x4d, 0xd4,
+ 0x54, 0xc8, 0xfc, 0x51, 0xa2, 0xf5, 0xa8, 0x82, 0x6f, 0x44, 0x60, 0x53, 0xc5, 0x09, 0x5f, 0xf8,
+ 0x73, 0xa9, 0xb1, 0x53, 0xce, 0x43, 0xf6, 0x41, 0x4d, 0xb4, 0x18, 0x23, 0x72, 0xb9, 0xbe, 0x99,
+ 0x7d, 0x50, 0xc3, 0xde, 0x58, 0x29, 0x2d, 0xbe, 0x75, 0x5b, 0x34, 0x94, 0xf7, 0xc6, 0xbe, 0xbd,
+ 0xf8, 0xd6, 0x6d, 0x53, 0x94, 0xb0, 0xfe, 0xc5, 0x6f, 0xc6, 0x87, 0x57, 0xee, 0xf3, 0x8f, 0xfd,
+ 0x8b, 0x6d, 0xc3, 0x47, 0x56, 0x33, 0x42, 0x20, 0x8b, 0x30, 0x2e, 0x62, 0x4d, 0x20, 0xbe, 0x12,
+ 0x0b, 0x42, 0xc4, 0xa2, 0xe0, 0x14, 0x2a, 0x12, 0x7f, 0x82, 0x13, 0x03, 0x24, 0xb3, 0xdc, 0x8a,
+ 0x27, 0x38, 0x39, 0x84, 0xbe, 0xa9, 0xa0, 0xb0, 0x4f, 0xe2, 0x6f, 0x78, 0x91, 0x2f, 0xff, 0x94,
+ 0x12, 0xb4, 0x00, 0xd3, 0x2c, 0x84, 0x08, 0xc6, 0x2f, 0x67, 0x21, 0xbf, 0xd1, 0xec, 0xee, 0x39,
+ 0xed, 0x87, 0x37, 0x09, 0x01, 0xbc, 0xc6, 0xc9, 0x3c, 0x1c, 0xec, 0x6f, 0x72, 0x11, 0xf2, 0xf2,
+ 0xe6, 0x26, 0x37, 0x24, 0x5f, 0xdc, 0xda, 0xe6, 0x41, 0x8e, 0xbb, 0x08, 0xbd, 0x26, 0x7f, 0x92,
+ 0x9b, 0x10, 0xde, 0xbf, 0x7a, 0x5d, 0xd4, 0x86, 0xd8, 0x62, 0x31, 0x43, 0x34, 0xf2, 0x26, 0xe0,
+ 0x21, 0x21, 0x2e, 0x0f, 0x52, 0xa1, 0xcd, 0x3f, 0x4d, 0xc8, 0x29, 0x9c, 0x04, 0xd1, 0xc8, 0x2d,
+ 0x10, 0x13, 0x53, 0x64, 0x53, 0x3f, 0xa7, 0x13, 0xf0, 0xfc, 0x94, 0x92, 0x44, 0xa0, 0x92, 0x77,
+ 0x61, 0xbc, 0xee, 0x51, 0x7c, 0x75, 0xb4, 0x9b, 0x51, 0x92, 0x74, 0x95, 0xb2, 0x1c, 0x95, 0x3f,
+ 0xbc, 0x69, 0xaa, 0xe8, 0xc6, 0x2f, 0xe7, 0x61, 0x42, 0xfd, 0x1e, 0x62, 0xc2, 0xac, 0xdf, 0x64,
+ 0x77, 0x77, 0x61, 0x6c, 0xd6, 0xc1, 0x42, 0x71, 0x9c, 0x5e, 0xd6, 0x3f, 0x88, 0xe1, 0x71, 0xcb,
+ 0x33, 0x19, 0x24, 0x63, 0xe5, 0x39, 0x73, 0xc6, 0x8f, 0xc0, 0x1c, 0x8f, 0x94, 0x20, 0xef, 0x76,
+ 0xfc, 0x3d, 0xda, 0x76, 0xe4, 0x7b, 0xcb, 0xcb, 0x1a, 0xa3, 0x07, 0xa2, 0x30, 0xc1, 0x2b, 0x24,
+ 0x23, 0x6f, 0xc1, 0x88, 0xdb, 0xa1, 0x6d, 0xdb, 0x11, 0x67, 0xdc, 0xf3, 0x31, 0x06, 0xb4, 0x5d,
+ 0xaa, 0x2a, 0x84, 0x02, 0x99, 0xdc, 0x80, 0x21, 0xf7, 0x20, 0x1c, 0xaf, 0x8b, 0x3a, 0xd1, 0x41,
+ 0x60, 0x2b, 0x24, 0x88, 0xc8, 0x08, 0x3e, 0xb2, 0x5b, 0xbb, 0x62, 0xc4, 0x74, 0x82, 0x7b, 0x76,
+ 0x6b, 0x57, 0x25, 0x60, 0x88, 0xe4, 0x03, 0x80, 0x8e, 0xbd, 0x47, 0x3d, 0xab, 0xd1, 0x0d, 0x8e,
+ 0xc4, 0xb8, 0x5d, 0xd2, 0xc8, 0x36, 0x58, 0x71, 0xa5, 0x1b, 0x1c, 0x29, 0xb4, 0x63, 0x1d, 0x09,
+ 0x24, 0x25, 0x80, 0x96, 0x1d, 0x04, 0xd4, 0x6b, 0xb9, 0xc2, 0xda, 0x2f, 0x0a, 0x82, 0xc8, 0x19,
+ 0xac, 0x85, 0xc5, 0x0a, 0x07, 0x85, 0x08, 0x3f, 0xda, 0xf1, 0x6c, 0x91, 0xd3, 0x3e, 0xf6, 0xd1,
+ 0x8e, 0xa7, 0xb5, 0x92, 0x21, 0x92, 0xcf, 0xc1, 0x68, 0xc3, 0xf1, 0xeb, 0xae, 0xd7, 0x10, 0xd1,
+ 0x53, 0x5e, 0xd0, 0x68, 0x2a, 0xbc, 0x4c, 0x21, 0x93, 0xe8, 0xec, 0x6b, 0x45, 0x10, 0xd4, 0x75,
+ 0xf7, 0x10, 0xd5, 0xfc, 0xf1, 0xaf, 0xad, 0x85, 0xc5, 0xea, 0xd7, 0x46, 0x44, 0x6c, 0x28, 0xf7,
+ 0x9c, 0xa0, 0x69, 0xef, 0x88, 0x77, 0x6e, 0x7d, 0x28, 0xef, 0x62, 0x91, 0x3a, 0x94, 0x1c, 0x99,
+ 0xbc, 0x0d, 0x79, 0xda, 0x0e, 0x3c, 0xdb, 0x72, 0x1a, 0xc2, 0xa9, 0x52, 0xff, 0x68, 0x76, 0x00,
+ 0xdb, 0xd5, 0x8a, 0xfa, 0xd1, 0x88, 0x5f, 0x6d, 0xb0, 0xfe, 0xf1, 0xeb, 0x4e, 0x4b, 0xf8, 0x42,
+ 0xea, 0xfd, 0x53, 0x2b, 0x57, 0xd7, 0xd4, 0xfe, 0x61, 0x88, 0xe4, 0x7d, 0x18, 0x65, 0xeb, 0xb7,
+ 0xe1, 0xee, 0x89, 0x80, 0x14, 0x86, 0xde, 0x3f, 0xbc, 0x2c, 0x31, 0x5d, 0x25, 0x11, 0x5b, 0xc8,
+ 0xf6, 0xa1, 0x6f, 0x39, 0x75, 0x11, 0x64, 0x42, 0x5f, 0x8e, 0xa5, 0xed, 0x5a, 0xb5, 0xac, 0x90,
+ 0x0d, 0xdb, 0x87, 0x7e, 0xb5, 0x4e, 0x16, 0x61, 0x18, 0x53, 0x54, 0x88, 0x40, 0x98, 0x3a, 0x0d,
+ 0x26, 0xa7, 0x50, 0x69, 0x10, 0x95, 0x0d, 0x64, 0xcb, 0x47, 0xf7, 0x12, 0x91, 0x28, 0x42, 0xef,
+ 0x93, 0xb5, 0x1a, 0xfa, 0x9c, 0xa8, 0x9f, 0x28, 0xd0, 0xc9, 0x25, 0x80, 0xe8, 0x15, 0x9f, 0xbf,
+ 0xb9, 0x98, 0x0a, 0xe4, 0xf3, 0x43, 0xff, 0xe7, 0x2f, 0x16, 0x33, 0x4b, 0x00, 0x79, 0x19, 0x21,
+ 0xc7, 0x58, 0x85, 0x8b, 0x3d, 0xd7, 0x3d, 0xb9, 0x06, 0x85, 0x5d, 0x5b, 0x68, 0xfd, 0xea, 0xfb,
+ 0x76, 0xbb, 0xfd, 0xff, 0xb3, 0xf7, 0x2d, 0x31, 0x6e, 0x64, 0xd7, 0xa1, 0x2a, 0x92, 0xdd, 0xcd,
+ 0x3e, 0xec, 0x4f, 0xf5, 0xd5, 0xa7, 0x7b, 0x5a, 0x1a, 0x69, 0x54, 0xa3, 0x91, 0x25, 0x8e, 0x67,
+ 0x6c, 0x69, 0xde, 0x78, 0x66, 0x6c, 0x8f, 0xc7, 0xd5, 0xec, 0xea, 0x26, 0x25, 0xfe, 0x5c, 0x45,
+ 0xb6, 0x2c, 0xcb, 0x76, 0xb9, 0x44, 0x56, 0x77, 0x97, 0xcd, 0x66, 0xd1, 0x2c, 0x72, 0x64, 0x19,
+ 0x0f, 0x78, 0x36, 0x1e, 0x60, 0x03, 0xef, 0x25, 0x71, 0xe2, 0x24, 0xc8, 0x20, 0x1b, 0x2f, 0x62,
+ 0x04, 0x59, 0x64, 0x1b, 0x24, 0x88, 0xb3, 0xf1, 0xce, 0x80, 0x61, 0xc0, 0x40, 0x76, 0x4e, 0x30,
+ 0x48, 0x06, 0x48, 0x80, 0x7c, 0x76, 0x41, 0xb2, 0xf0, 0x2a, 0xb8, 0xe7, 0xde, 0x5b, 0x75, 0xeb,
+ 0x43, 0xaa, 0xe5, 0x19, 0x27, 0x31, 0xe0, 0x55, 0x37, 0xcf, 0x3d, 0xe7, 0xd4, 0xfd, 0xdf, 0x73,
+ 0xcf, 0x3d, 0x1f, 0x77, 0xc0, 0x77, 0xdc, 0x75, 0x01, 0xaf, 0x30, 0x30, 0xe3, 0xac, 0xbd, 0x05,
+ 0xe7, 0xb2, 0x06, 0x9c, 0x5c, 0x85, 0x15, 0x39, 0x18, 0x10, 0x67, 0x52, 0x72, 0x46, 0x9e, 0x08,
+ 0x07, 0xc4, 0x19, 0xfc, 0x40, 0x81, 0x4b, 0xf3, 0xb6, 0x0f, 0xb2, 0x0d, 0xc5, 0xd1, 0xd8, 0xf3,
+ 0x51, 0x4c, 0xe5, 0xd9, 0x16, 0xc4, 0x6f, 0x4c, 0xa4, 0x80, 0xf2, 0xd4, 0xc4, 0x39, 0xe2, 0x0e,
+ 0x1e, 0xe6, 0x32, 0x42, 0x3a, 0xce, 0x51, 0x40, 0x5e, 0x84, 0x8d, 0xbe, 0x7b, 0xe8, 0x4c, 0x07,
+ 0x13, 0x3b, 0xe8, 0x1d, 0xbb, 0x7d, 0x74, 0xc1, 0x42, 0xc3, 0x3d, 0x53, 0xe5, 0x05, 0x96, 0x80,
+ 0xa7, 0x6a, 0xbc, 0x30, 0xa3, 0xc6, 0x77, 0x0a, 0x45, 0x45, 0xcd, 0x99, 0x68, 0x29, 0xa5, 0x7d,
+ 0x23, 0x07, 0x5b, 0xb3, 0xd6, 0x0b, 0x79, 0x33, 0xab, 0x0f, 0xd8, 0xc3, 0x85, 0x0c, 0x97, 0x1f,
+ 0x2e, 0xa4, 0xaf, 0x91, 0xdb, 0x10, 0x3a, 0x50, 0x3d, 0x29, 0x18, 0x82, 0x80, 0x51, 0x9a, 0x91,
+ 0x13, 0x04, 0x8f, 0xe8, 0x96, 0x90, 0x97, 0x02, 0xea, 0x72, 0x98, 0x4c, 0x23, 0x60, 0xe4, 0x35,
+ 0x80, 0xde, 0xc0, 0x0f, 0x5c, 0xb4, 0x0f, 0xe0, 0xb2, 0x06, 0x33, 0x0b, 0x0f, 0xa1, 0xf2, 0x83,
+ 0x30, 0x42, 0x2b, 0x7e, 0xdf, 0xe5, 0x03, 0xe8, 0xc0, 0xe6, 0x8c, 0x0d, 0x92, 0x0e, 0x4f, 0x94,
+ 0x9d, 0x5e, 0xe4, 0xba, 0x9a, 0x86, 0x39, 0xea, 0x93, 0x3d, 0x9e, 0x9b, 0x35, 0x47, 0x1e, 0x03,
+ 0x49, 0xef, 0x82, 0x94, 0x3b, 0x37, 0x6e, 0x9e, 0x8e, 0x43, 0xee, 0x0c, 0xd2, 0x1d, 0x0f, 0xc8,
+ 0x15, 0x28, 0x89, 0x5c, 0x96, 0x54, 0x96, 0x67, 0xcc, 0x81, 0x83, 0xee, 0xba, 0x38, 0x79, 0x30,
+ 0x62, 0x2a, 0xba, 0xc9, 0x71, 0x29, 0x61, 0x19, 0x21, 0x9d, 0xc7, 0x23, 0xd1, 0xba, 0x4b, 0x62,
+ 0x7e, 0xc7, 0xcf, 0x26, 0x5e, 0xfa, 0xfb, 0x8a, 0x18, 0xfe, 0xf4, 0xe6, 0xfe, 0xa4, 0xfa, 0x11,
+ 0x40, 0x2f, 0x25, 0x5e, 0x31, 0xfc, 0x9f, 0x4a, 0x2d, 0x62, 0xd5, 0x71, 0xa9, 0x85, 0xff, 0x24,
+ 0xd7, 0x61, 0x7d, 0xcc, 0xec, 0x58, 0x27, 0x3e, 0xef, 0x4f, 0x96, 0x37, 0x64, 0x95, 0x81, 0x3b,
+ 0x3e, 0xf6, 0x29, 0xaf, 0xd7, 0x9d, 0xb0, 0xc3, 0xa4, 0xb3, 0x8e, 0xbc, 0x0c, 0xcb, 0xf4, 0xac,
+ 0xc3, 0x48, 0x3b, 0x09, 0xf7, 0x08, 0xc4, 0x43, 0xc9, 0xc1, 0x2c, 0x7e, 0x99, 0xff, 0xcf, 0x79,
+ 0xbd, 0x93, 0x13, 0xcc, 0xe4, 0x93, 0x96, 0x6c, 0xc2, 0x92, 0x3f, 0x3e, 0x92, 0x9a, 0xb6, 0xe8,
+ 0x8f, 0x8f, 0x68, 0xbb, 0x6e, 0x80, 0xca, 0xbc, 0x75, 0x58, 0xd4, 0x84, 0xe0, 0xf1, 0x90, 0x5d,
+ 0xc5, 0x8b, 0xe6, 0x1a, 0x83, 0x63, 0xc2, 0xfe, 0xc7, 0xc3, 0x1e, 0xc5, 0x0c, 0x02, 0xdf, 0x96,
+ 0x03, 0x6c, 0xf1, 0x66, 0xaf, 0x05, 0x81, 0x1f, 0x45, 0xda, 0xea, 0x93, 0x1d, 0x58, 0xa5, 0x7c,
+ 0xc2, 0x30, 0x5f, 0x5c, 0x10, 0x78, 0x36, 0x2d, 0x08, 0x3c, 0x1e, 0xf6, 0x44, 0x15, 0xcd, 0x95,
+ 0x40, 0xfa, 0x45, 0xee, 0x82, 0x2a, 0x49, 0x4c, 0xe8, 0xbe, 0x99, 0xb0, 0xa9, 0x8e, 0xd8, 0x48,
+ 0x92, 0x56, 0x6d, 0x78, 0xe8, 0x9b, 0xeb, 0xbd, 0x38, 0x80, 0x77, 0xcd, 0xf7, 0x14, 0xb1, 0x97,
+ 0x66, 0x10, 0x11, 0x0d, 0x56, 0x8f, 0x9d, 0xc0, 0x0e, 0x82, 0x13, 0x66, 0x23, 0xc6, 0x03, 0x0b,
+ 0x97, 0x8e, 0x9d, 0xc0, 0x0a, 0x4e, 0x44, 0xe2, 0x92, 0xf3, 0x14, 0xc7, 0x77, 0xa6, 0x93, 0x63,
+ 0x5b, 0x96, 0xff, 0x58, 0x8f, 0x9d, 0x3d, 0x76, 0x82, 0x16, 0x2d, 0x93, 0x78, 0x93, 0x6b, 0xb0,
+ 0x86, 0x7c, 0x7b, 0x9e, 0x60, 0x8c, 0x91, 0x2f, 0xcc, 0x15, 0xca, 0xb8, 0xe7, 0x31, 0xce, 0xbc,
+ 0x86, 0xff, 0x94, 0x83, 0x0b, 0xd9, 0xbd, 0x83, 0xd3, 0x93, 0xf6, 0x29, 0xfa, 0xe8, 0xf1, 0xba,
+ 0x2d, 0x53, 0x08, 0x8b, 0x5a, 0x92, 0x35, 0x38, 0xb9, 0xcc, 0xc1, 0x29, 0xc3, 0x06, 0x32, 0xe2,
+ 0x92, 0xe6, 0xc0, 0x0b, 0x26, 0x3c, 0x18, 0x87, 0xb9, 0x4e, 0x0b, 0xd8, 0x7e, 0x5e, 0xa7, 0x60,
+ 0xf2, 0x02, 0xac, 0x89, 0x1d, 0xd9, 0x7f, 0x34, 0xa4, 0x1f, 0x66, 0xdb, 0xf1, 0x2a, 0x87, 0xb6,
+ 0x10, 0x48, 0xce, 0xc3, 0xa2, 0x33, 0x1a, 0xd1, 0x4f, 0xb2, 0x5d, 0x78, 0xc1, 0x19, 0x8d, 0x58,
+ 0x72, 0x1d, 0xf4, 0x48, 0xb4, 0x0f, 0xd1, 0x4a, 0x88, 0x9b, 0x24, 0x9a, 0x2b, 0x08, 0x64, 0x96,
+ 0x43, 0x01, 0x5d, 0xf7, 0x94, 0x56, 0xa0, 0x2c, 0x21, 0x0a, 0x38, 0xa3, 0x10, 0xe1, 0x19, 0x28,
+ 0x8a, 0xf7, 0x6a, 0xe6, 0x58, 0x61, 0x2e, 0x39, 0xfc, 0xad, 0xfa, 0x55, 0xd8, 0xec, 0x7b, 0x01,
+ 0x4e, 0x5e, 0xd6, 0xa4, 0xd1, 0x88, 0xfb, 0x40, 0xb2, 0x20, 0xbd, 0xe6, 0x39, 0x5e, 0x4c, 0x7b,
+ 0x52, 0x1f, 0x8d, 0x98, 0x27, 0x24, 0xef, 0xeb, 0xd7, 0x61, 0x9d, 0x4b, 0x5c, 0xfc, 0x88, 0xc4,
+ 0xba, 0xf0, 0x05, 0x4c, 0xaf, 0x42, 0x3c, 0x9d, 0x11, 0x70, 0x50, 0xad, 0x2f, 0x28, 0xff, 0x56,
+ 0x81, 0xf3, 0x99, 0x22, 0x1b, 0xf9, 0x12, 0x30, 0x97, 0xaf, 0x89, 0x6f, 0x8f, 0xdd, 0x9e, 0x37,
+ 0xf2, 0x30, 0x86, 0x06, 0x53, 0x69, 0xde, 0x9e, 0x27, 0xec, 0xa1, 0xfb, 0x58, 0xc7, 0x37, 0x43,
+ 0x22, 0xa6, 0x6b, 0x51, 0xc7, 0x09, 0xf0, 0xf6, 0x03, 0x38, 0x9f, 0x89, 0x9a, 0xa1, 0x03, 0xf9,
+ 0x70, 0x3c, 0x99, 0xb4, 0x78, 0xa4, 0x4a, 0x34, 0x5a, 0xd2, 0x8d, 0xf0, 0xe6, 0xfd, 0x30, 0x6c,
+ 0x5e, 0x42, 0xb8, 0x23, 0x46, 0x72, 0x5d, 0x67, 0xdd, 0x4f, 0x04, 0xd1, 0xec, 0xa5, 0xfd, 0x00,
+ 0xce, 0xf3, 0xc9, 0x77, 0x34, 0x76, 0x46, 0xc7, 0x11, 0x3b, 0x56, 0xd1, 0x0f, 0x65, 0xb1, 0x63,
+ 0xb3, 0x72, 0x9f, 0xe2, 0x87, 0x5c, 0xcf, 0x3a, 0x69, 0x20, 0x6f, 0xc3, 0x37, 0x73, 0x62, 0xa9,
+ 0x67, 0x54, 0x27, 0x63, 0x5a, 0x2b, 0x59, 0xd3, 0xfa, 0xf4, 0x6b, 0xaa, 0x09, 0x44, 0xde, 0xac,
+ 0x98, 0xd6, 0x93, 0x1b, 0x54, 0x09, 0x39, 0x9d, 0x57, 0x44, 0xda, 0x1a, 0x2c, 0x96, 0xcc, 0x73,
+ 0xa3, 0x97, 0x04, 0x91, 0x8b, 0xb0, 0x1c, 0xe6, 0xcb, 0xe6, 0x07, 0x47, 0x91, 0x01, 0x6a, 0x7d,
+ 0xf2, 0x1c, 0xac, 0x30, 0x91, 0x3c, 0xb6, 0xe6, 0x00, 0x61, 0x3a, 0x5d, 0x78, 0xa2, 0x0f, 0x14,
+ 0x78, 0xee, 0x49, 0x7d, 0x48, 0xee, 0xc1, 0x05, 0x34, 0xeb, 0x08, 0xfc, 0x70, 0x18, 0xec, 0x9e,
+ 0xd3, 0x3b, 0x76, 0xf9, 0xac, 0xd5, 0x32, 0x07, 0x63, 0x34, 0xb2, 0xac, 0x96, 0x34, 0x0e, 0xa3,
+ 0x91, 0x15, 0xf8, 0xe2, 0x77, 0x85, 0x92, 0xf3, 0x3a, 0xf4, 0xe1, 0xe2, 0x1c, 0x4a, 0x69, 0xe3,
+ 0x50, 0xe4, 0x8d, 0xe3, 0x06, 0xa8, 0x87, 0x6e, 0x9f, 0xca, 0xc4, 0x6e, 0x1f, 0xab, 0xf6, 0xf6,
+ 0x6d, 0x96, 0x21, 0xde, 0x5c, 0x0b, 0xe1, 0x56, 0xe0, 0x1f, 0xdc, 0xe6, 0x5f, 0x39, 0x11, 0x47,
+ 0x9e, 0x7c, 0xad, 0x20, 0x2f, 0xc3, 0xd9, 0x44, 0x7c, 0x92, 0xc8, 0xe1, 0xdd, 0xdc, 0xa0, 0x45,
+ 0xf1, 0x68, 0x56, 0x57, 0x61, 0x45, 0xcc, 0x8a, 0x71, 0xe8, 0x07, 0x67, 0x96, 0x38, 0x8c, 0xae,
+ 0x3a, 0xfe, 0xb9, 0xa9, 0x68, 0x54, 0xe6, 0x8d, 0xe4, 0x14, 0xb2, 0x34, 0x79, 0x09, 0x48, 0x28,
+ 0xb7, 0x87, 0x1b, 0x05, 0xff, 0xe0, 0x86, 0x28, 0x09, 0x57, 0x38, 0xff, 0xec, 0x5f, 0xe5, 0xe0,
+ 0x6c, 0xc6, 0x55, 0x86, 0x5e, 0x02, 0xbc, 0xe1, 0xc4, 0x3d, 0x62, 0x57, 0x08, 0xb9, 0x91, 0xeb,
+ 0x12, 0x9c, 0xeb, 0xa7, 0x16, 0x59, 0x06, 0x74, 0xfe, 0x2d, 0xfe, 0x8b, 0x6e, 0x1e, 0xce, 0x58,
+ 0xa8, 0x5e, 0xe8, 0xbf, 0xa4, 0x06, 0x1b, 0x98, 0xd6, 0x21, 0xf0, 0x7c, 0xcc, 0x0e, 0x81, 0x42,
+ 0x48, 0x21, 0x76, 0xd9, 0xc1, 0x5a, 0xb4, 0x25, 0x24, 0x2a, 0x85, 0x98, 0xea, 0x28, 0x01, 0x21,
+ 0x9f, 0x80, 0x6d, 0xe9, 0xac, 0xb1, 0x13, 0x2b, 0x0f, 0x2d, 0xdd, 0xcd, 0x4d, 0x27, 0x3c, 0x75,
+ 0x76, 0x63, 0x6b, 0x70, 0x07, 0x2e, 0xe3, 0x20, 0x7a, 0xfd, 0x91, 0x9d, 0xca, 0x03, 0x82, 0x4d,
+ 0x65, 0x81, 0xf3, 0xb7, 0x29, 0x56, 0xad, 0x3f, 0x4a, 0xa4, 0x04, 0xa1, 0xad, 0xe6, 0xdd, 0xf7,
+ 0x00, 0xce, 0x67, 0xd6, 0x98, 0x1e, 0x30, 0x68, 0x48, 0x15, 0xc9, 0x46, 0x4b, 0xf4, 0x37, 0x15,
+ 0x8e, 0xae, 0xc2, 0xca, 0x43, 0xd7, 0x19, 0xbb, 0x63, 0x7e, 0x72, 0xf3, 0x29, 0xc1, 0x60, 0xf2,
+ 0xc1, 0xdd, 0x8f, 0x0f, 0x0d, 0xd7, 0x19, 0x91, 0x06, 0x9c, 0x65, 0x27, 0xa0, 0x77, 0x82, 0xc2,
+ 0x20, 0xd7, 0x33, 0x29, 0x31, 0x71, 0x08, 0x49, 0xf0, 0x68, 0xaa, 0x21, 0x16, 0xa3, 0x36, 0x37,
+ 0x8e, 0x92, 0x20, 0xba, 0xa2, 0x2f, 0x64, 0x63, 0x93, 0x1d, 0x28, 0x31, 0xe6, 0xec, 0x5a, 0xc0,
+ 0x1e, 0x08, 0xae, 0xce, 0xfd, 0x42, 0x05, 0xed, 0x8b, 0x83, 0xf0, 0x7f, 0x7a, 0x5e, 0xe3, 0x5b,
+ 0xac, 0x7d, 0x22, 0xbf, 0x7f, 0x98, 0x2b, 0x08, 0xe4, 0xef, 0x1e, 0xda, 0x5f, 0x2b, 0xa2, 0xa9,
+ 0xb1, 0xcb, 0x31, 0x9d, 0x5a, 0x81, 0x3b, 0x14, 0x6f, 0x40, 0xcb, 0x26, 0xff, 0xf5, 0x94, 0x53,
+ 0x9d, 0xbc, 0x06, 0x2b, 0x94, 0xed, 0xd1, 0x74, 0xc8, 0xa6, 0x5c, 0x3e, 0x16, 0x97, 0xa7, 0xc1,
+ 0x8a, 0xe8, 0xb0, 0x55, 0xcf, 0x98, 0xa5, 0x93, 0xe8, 0x27, 0x95, 0x96, 0x83, 0x93, 0xc9, 0x48,
+ 0x9e, 0xa8, 0x42, 0x51, 0x68, 0x35, 0x3a, 0x6d, 0x4e, 0x52, 0xa4, 0x38, 0x91, 0xb4, 0xbc, 0xb3,
+ 0xc8, 0x54, 0x85, 0xda, 0x8b, 0x50, 0x92, 0x78, 0xd3, 0xc6, 0x30, 0xcf, 0x19, 0xd1, 0x18, 0xf6,
+ 0x8b, 0x0f, 0xf6, 0x43, 0x28, 0x0a, 0x96, 0xf4, 0x5a, 0x70, 0xec, 0x07, 0x62, 0x91, 0xe3, 0xff,
+ 0x14, 0x46, 0x7b, 0x19, 0x1b, 0xb9, 0x60, 0xe2, 0xff, 0x78, 0x96, 0x4c, 0x1c, 0x7a, 0x1f, 0x18,
+ 0x04, 0xf6, 0x08, 0x2d, 0xb0, 0x42, 0xe1, 0x99, 0xc2, 0x3b, 0x83, 0x80, 0xd9, 0x65, 0xf1, 0x6f,
+ 0xfc, 0x45, 0x78, 0x08, 0x27, 0xb4, 0x09, 0xb3, 0xf6, 0xcc, 0xd8, 0x91, 0x91, 0x4b, 0x1f, 0x19,
+ 0x2c, 0xde, 0x0a, 0xa7, 0x64, 0x5f, 0x06, 0x84, 0xe1, 0x91, 0x21, 0xed, 0x0c, 0x85, 0xd8, 0xce,
+ 0x20, 0xdd, 0xc9, 0xa3, 0xd1, 0x63, 0x27, 0x8e, 0xb8, 0x93, 0x27, 0xf7, 0xa9, 0x3f, 0xce, 0x09,
+ 0x15, 0xc1, 0x8e, 0xef, 0x4f, 0x82, 0xc9, 0xd8, 0x19, 0xc5, 0x54, 0xa1, 0xe4, 0x04, 0x9e, 0x41,
+ 0x09, 0xfa, 0x36, 0xa6, 0xd0, 0xf0, 0xc7, 0x22, 0xc4, 0x47, 0x38, 0x73, 0x4b, 0xb7, 0x3f, 0x12,
+ 0x97, 0xf1, 0x75, 0x8a, 0xad, 0xcb, 0xc8, 0x74, 0xc2, 0x4a, 0x5c, 0xab, 0x67, 0xcc, 0x4d, 0xc6,
+ 0x33, 0x85, 0x45, 0xaa, 0x19, 0x8b, 0x38, 0xa9, 0x0b, 0xdd, 0x89, 0x56, 0x74, 0x9c, 0xab, 0xbc,
+ 0xd6, 0xc9, 0xa7, 0x60, 0xd9, 0xeb, 0xcb, 0x99, 0x22, 0x93, 0x5a, 0xb8, 0x5a, 0x9f, 0x45, 0xab,
+ 0x8e, 0x78, 0xd0, 0x39, 0xe7, 0x71, 0xe8, 0xce, 0x6a, 0x4c, 0x69, 0xac, 0xed, 0x88, 0xdb, 0x68,
+ 0x9a, 0x8c, 0xac, 0x41, 0x2e, 0x1c, 0xe1, 0x9c, 0xd7, 0x67, 0xcb, 0x2b, 0x8a, 0x97, 0x6d, 0xf2,
+ 0x5f, 0xda, 0xff, 0x86, 0x1b, 0xa7, 0xed, 0x23, 0xba, 0x14, 0x67, 0x74, 0xf8, 0x32, 0x0b, 0x55,
+ 0x19, 0xef, 0xb7, 0xab, 0x20, 0x87, 0xfb, 0xf5, 0xc4, 0xe6, 0x27, 0x60, 0xdd, 0xb1, 0xa7, 0xfd,
+ 0x79, 0x1e, 0xd6, 0xe2, 0x6a, 0x72, 0xf2, 0x22, 0x14, 0xa4, 0x1d, 0x68, 0x33, 0x43, 0x97, 0x8e,
+ 0xfb, 0x0e, 0x22, 0x9d, 0x6a, 0xc7, 0x21, 0x77, 0x60, 0x0d, 0x0d, 0xf7, 0x50, 0xf4, 0x9c, 0x78,
+ 0xfc, 0xf1, 0x65, 0xfe, 0xfb, 0x59, 0xf1, 0x47, 0xef, 0x5e, 0x39, 0x83, 0x4f, 0x65, 0x2b, 0x94,
+ 0x96, 0x4a, 0x7f, 0xb4, 0x50, 0xd2, 0x82, 0x16, 0x66, 0x6b, 0x41, 0x79, 0x53, 0x66, 0x68, 0x41,
+ 0x17, 0xe6, 0x68, 0x41, 0x23, 0x4a, 0x59, 0x0b, 0x8a, 0xba, 0xf0, 0xa5, 0x59, 0xba, 0xf0, 0x88,
+ 0x86, 0xe9, 0xc2, 0x23, 0x2d, 0x66, 0x71, 0xa6, 0x16, 0x33, 0xa2, 0xe1, 0x5a, 0xcc, 0x6b, 0xbc,
+ 0x8f, 0xc6, 0xce, 0x23, 0x1b, 0x3b, 0x8f, 0x1f, 0x8b, 0xd8, 0x7a, 0xd3, 0x79, 0x84, 0xc6, 0x35,
+ 0x3b, 0xcb, 0x20, 0x2c, 0x72, 0xb4, 0xdf, 0x55, 0x12, 0x9a, 0x40, 0x31, 0x7e, 0x2f, 0xc0, 0x1a,
+ 0x3b, 0xac, 0x78, 0x38, 0x53, 0x76, 0x5a, 0xad, 0x9a, 0xab, 0x02, 0xca, 0xee, 0x9b, 0x1f, 0x82,
+ 0xf5, 0x10, 0x8d, 0x5f, 0xb9, 0xd0, 0x53, 0xcf, 0x0c, 0xa9, 0x79, 0xd8, 0x99, 0x17, 0x61, 0x23,
+ 0x44, 0xe4, 0xda, 0x1c, 0x76, 0xdd, 0x5c, 0x35, 0x55, 0x51, 0xd0, 0xe6, 0x70, 0xed, 0x28, 0x79,
+ 0xf3, 0xf8, 0x25, 0xd5, 0x4a, 0xfb, 0x61, 0x3e, 0xa6, 0x25, 0x11, 0x9f, 0xa1, 0xa7, 0x68, 0xe0,
+ 0xdb, 0xbc, 0x93, 0xf8, 0x5e, 0x74, 0x75, 0xc6, 0x98, 0x71, 0x9b, 0x26, 0xcb, 0x6a, 0x99, 0x10,
+ 0x04, 0xbe, 0x30, 0x71, 0xb2, 0x99, 0x44, 0xcd, 0xce, 0x7d, 0x9c, 0xb3, 0x82, 0x1d, 0xdb, 0x78,
+ 0xca, 0xf3, 0xd9, 0x89, 0x6b, 0x2a, 0x9d, 0xb2, 0x28, 0x59, 0x87, 0xbf, 0xc4, 0x07, 0xba, 0x80,
+ 0x4a, 0xc5, 0x20, 0xce, 0x3c, 0x9f, 0x71, 0x77, 0x4a, 0x31, 0xc7, 0x5e, 0x42, 0xce, 0xea, 0x54,
+ 0xfc, 0x2b, 0xd8, 0x1a, 0xb0, 0x82, 0x3a, 0x0a, 0xc1, 0xb0, 0x90, 0xa1, 0x82, 0x4f, 0x37, 0xbe,
+ 0x52, 0x6b, 0x98, 0x25, 0x4a, 0x27, 0xd8, 0x1c, 0xc3, 0x33, 0xb2, 0x66, 0x21, 0x5e, 0xc9, 0x05,
+ 0x11, 0xc5, 0x77, 0x6e, 0x0f, 0x44, 0x0a, 0x08, 0xac, 0xea, 0x05, 0x27, 0x0e, 0xe0, 0x68, 0xda,
+ 0x31, 0x6c, 0xcf, 0x1e, 0x92, 0x39, 0x19, 0xa2, 0xa2, 0x03, 0x34, 0x27, 0x1f, 0xa0, 0xb2, 0x9e,
+ 0x21, 0x1f, 0xd3, 0x33, 0x68, 0x7f, 0x94, 0x87, 0xe7, 0x4f, 0x31, 0x5c, 0x73, 0xbe, 0xf9, 0xe9,
+ 0xb8, 0x78, 0x96, 0x8b, 0xdd, 0x0c, 0x29, 0x53, 0xbe, 0x41, 0xd2, 0x5b, 0x6a, 0xb6, 0x70, 0xf6,
+ 0x25, 0x58, 0x67, 0xbb, 0x20, 0x33, 0x4b, 0x3c, 0x9c, 0x0e, 0x4e, 0xb1, 0x0d, 0x5e, 0x14, 0x3e,
+ 0x54, 0x09, 0x52, 0xdc, 0x19, 0x71, 0xc7, 0xb0, 0x42, 0x18, 0xe9, 0x40, 0x09, 0xd1, 0x0e, 0x1d,
+ 0x6f, 0x70, 0x2a, 0x67, 0x1e, 0xe1, 0xa1, 0x25, 0x93, 0x31, 0x6b, 0x6a, 0x0a, 0xd8, 0xc3, 0xdf,
+ 0xe4, 0x3a, 0xac, 0x0f, 0xa7, 0x27, 0x54, 0xf0, 0x60, 0x73, 0x81, 0x5b, 0x7f, 0x2c, 0x98, 0xab,
+ 0xc3, 0xe9, 0x89, 0x3e, 0x1a, 0xe1, 0x90, 0xa2, 0x99, 0xc8, 0x06, 0xc5, 0x63, 0xab, 0x56, 0x60,
+ 0x2e, 0x22, 0x26, 0x65, 0xc0, 0xd6, 0x2d, 0xc7, 0x3d, 0x07, 0xcc, 0x68, 0x90, 0x67, 0xc8, 0x62,
+ 0x3f, 0xb4, 0xff, 0xc8, 0x89, 0xfb, 0xee, 0xec, 0x79, 0xff, 0xeb, 0x21, 0xca, 0x18, 0xa2, 0x1b,
+ 0xa0, 0xd2, 0xae, 0x8f, 0x36, 0x95, 0x70, 0x8c, 0xd6, 0x86, 0xd3, 0x93, 0xb0, 0xef, 0xe4, 0x8e,
+ 0x5f, 0x94, 0x3b, 0xfe, 0x35, 0x71, 0x1f, 0xce, 0xdc, 0x1e, 0x66, 0x77, 0xb9, 0xf6, 0xaf, 0x79,
+ 0xb8, 0x7e, 0xba, 0x4d, 0xe0, 0xd7, 0xe3, 0x96, 0x31, 0x6e, 0x09, 0xd5, 0xe9, 0x42, 0x4a, 0x75,
+ 0x9a, 0xb1, 0xf6, 0x16, 0xb3, 0xd6, 0x5e, 0x4a, 0x51, 0xbb, 0x94, 0xa1, 0xa8, 0xcd, 0x5c, 0xa0,
+ 0xc5, 0x27, 0x2c, 0xd0, 0x65, 0x79, 0x9e, 0xfc, 0x63, 0xa8, 0xc0, 0x88, 0xdf, 0x07, 0x1e, 0xc0,
+ 0x59, 0x71, 0x1f, 0x60, 0x27, 0x47, 0xa4, 0x7f, 0x2f, 0xdd, 0xbe, 0x99, 0x75, 0x13, 0x40, 0xb4,
+ 0x0c, 0x69, 0x7d, 0x83, 0xdf, 0x01, 0xa2, 0xf2, 0xff, 0x39, 0xd2, 0x3f, 0xb9, 0x0f, 0x17, 0x30,
+ 0xbe, 0x7c, 0x4f, 0x7e, 0x39, 0xb0, 0xc7, 0xee, 0x21, 0x9f, 0x0f, 0x57, 0x53, 0xb2, 0xb2, 0xd7,
+ 0x93, 0xaa, 0x63, 0xba, 0x87, 0xd5, 0x33, 0xe6, 0xb9, 0x20, 0x03, 0x9e, 0xbc, 0x58, 0xfc, 0xa9,
+ 0x02, 0xda, 0x93, 0xfb, 0x0b, 0x15, 0x55, 0xc9, 0x0e, 0x5f, 0x36, 0x4b, 0x8e, 0xd4, 0x7b, 0xcf,
+ 0xc3, 0xea, 0xd8, 0x3d, 0x1c, 0xbb, 0xc1, 0x71, 0x4c, 0x03, 0xb2, 0xc2, 0x81, 0xa2, 0x63, 0x44,
+ 0x50, 0xca, 0xa7, 0x92, 0xcc, 0x05, 0x91, 0xb6, 0x17, 0xde, 0x17, 0x33, 0xc7, 0x81, 0xce, 0x26,
+ 0xb9, 0x82, 0xec, 0xc7, 0x9d, 0x42, 0x31, 0xa7, 0xe6, 0x4d, 0x1e, 0x3a, 0xf3, 0xd0, 0x1b, 0xb8,
+ 0xda, 0x5f, 0x2a, 0x42, 0x22, 0xc8, 0xea, 0x3c, 0xf2, 0x40, 0x32, 0xe6, 0xcd, 0xa7, 0xc4, 0x90,
+ 0x2c, 0x12, 0xd9, 0xee, 0x91, 0x87, 0x67, 0x44, 0x40, 0x2c, 0x3c, 0x23, 0x42, 0xde, 0x87, 0x45,
+ 0x22, 0xbf, 0x35, 0xbf, 0x21, 0x2c, 0x82, 0xe8, 0x9e, 0x77, 0x70, 0x8b, 0xdc, 0x84, 0x25, 0x66,
+ 0x04, 0x24, 0xaa, 0xbb, 0x1e, 0xab, 0xee, 0xc1, 0x2d, 0x53, 0x94, 0x6b, 0xef, 0x84, 0xef, 0x5a,
+ 0xa9, 0x46, 0x1c, 0xdc, 0x22, 0xaf, 0x9d, 0xce, 0x38, 0xb7, 0x28, 0x8c, 0x73, 0x43, 0xc3, 0xdc,
+ 0xd7, 0x63, 0x86, 0xb9, 0xd7, 0xe6, 0xf7, 0x16, 0x7f, 0x8d, 0x64, 0xe1, 0x08, 0xa3, 0x30, 0x55,
+ 0x3f, 0xcb, 0xc1, 0xb3, 0x73, 0x29, 0xc8, 0x25, 0x28, 0xea, 0xed, 0x5a, 0x27, 0x1a, 0x5f, 0xba,
+ 0x66, 0x04, 0x84, 0xec, 0xc3, 0xf2, 0x8e, 0x13, 0x78, 0x3d, 0x3a, 0x8d, 0x33, 0x9f, 0x07, 0x52,
+ 0x6c, 0x43, 0xf4, 0xea, 0x19, 0x33, 0xa2, 0x25, 0x36, 0x6c, 0xe0, 0x5a, 0x88, 0xa5, 0x9e, 0xca,
+ 0x67, 0xe8, 0x1a, 0x52, 0x0c, 0x53, 0x64, 0x74, 0x9f, 0x49, 0x01, 0xc9, 0x43, 0x20, 0x96, 0x55,
+ 0xad, 0xb8, 0xe3, 0x09, 0xbf, 0x83, 0x4f, 0xbc, 0xd0, 0xd2, 0xf3, 0xa3, 0x4f, 0xe8, 0xbb, 0x14,
+ 0x5d, 0xf5, 0x8c, 0x99, 0xc1, 0x2d, 0xb9, 0xcc, 0xdf, 0x16, 0xf2, 0xce, 0xec, 0x4e, 0x78, 0x8a,
+ 0x50, 0xaf, 0x37, 0xa0, 0xd8, 0x16, 0xb6, 0x08, 0x92, 0xc5, 0xbc, 0xb0, 0x3b, 0x30, 0xc3, 0x52,
+ 0xed, 0x37, 0x14, 0xa1, 0x74, 0x78, 0x72, 0x67, 0x49, 0x99, 0xc1, 0xfa, 0xf3, 0x33, 0x83, 0xf5,
+ 0x7f, 0xc1, 0xcc, 0x60, 0x9a, 0x07, 0x37, 0x4f, 0xdd, 0xb1, 0xe4, 0x93, 0xa0, 0x62, 0x12, 0x25,
+ 0x47, 0x1a, 0x24, 0xb6, 0xbe, 0x36, 0xc2, 0xd8, 0xdf, 0x55, 0x9e, 0xa9, 0xce, 0x5c, 0xef, 0xc5,
+ 0xa9, 0xb5, 0x3f, 0xe1, 0x31, 0xdf, 0x6b, 0xfd, 0x76, 0x42, 0xd1, 0xfc, 0x7e, 0x9d, 0x2c, 0x8c,
+ 0xd8, 0x62, 0x7b, 0x5e, 0x4a, 0x62, 0x99, 0xfe, 0xd6, 0x6c, 0x5f, 0x0b, 0x69, 0xe5, 0xfd, 0x41,
+ 0x1e, 0x2e, 0xcd, 0x23, 0xcf, 0x4c, 0x93, 0xad, 0x3c, 0x5d, 0x9a, 0xec, 0x9b, 0x50, 0x64, 0xb0,
+ 0xd0, 0x83, 0x00, 0xc7, 0x96, 0x93, 0xd2, 0xb1, 0x15, 0xc5, 0xe4, 0x79, 0x58, 0xd4, 0x2b, 0x56,
+ 0x94, 0xb9, 0x0d, 0x4d, 0x7d, 0x9d, 0x5e, 0x80, 0x46, 0xa4, 0xbc, 0x88, 0x7c, 0x31, 0x9d, 0xac,
+ 0x90, 0xa7, 0x6c, 0xbb, 0x28, 0x75, 0x48, 0x2a, 0x1d, 0x03, 0xd6, 0x37, 0x4a, 0x1f, 0xc0, 0x23,
+ 0x72, 0x9b, 0xe9, 0xc4, 0x87, 0x1a, 0x2c, 0xb6, 0xc7, 0x6e, 0xe0, 0x4e, 0x64, 0x33, 0xdc, 0x11,
+ 0x42, 0x4c, 0x5e, 0xc2, 0x8d, 0x64, 0x9d, 0xc7, 0x2c, 0x26, 0xc2, 0xa2, 0x1c, 0xa7, 0x06, 0xad,
+ 0x6a, 0x29, 0xd8, 0x94, 0x50, 0x28, 0x41, 0xdd, 0x99, 0x0e, 0x7b, 0xc7, 0x5d, 0xb3, 0xce, 0x25,
+ 0x27, 0x46, 0x30, 0x40, 0x28, 0x6d, 0x60, 0x60, 0x4a, 0x28, 0xda, 0xb7, 0x15, 0x38, 0x97, 0xd5,
+ 0x0e, 0x72, 0x09, 0x0a, 0xc3, 0xcc, 0xbc, 0x8c, 0x43, 0xe6, 0xca, 0x5d, 0xa2, 0x7f, 0xed, 0x43,
+ 0x7f, 0x7c, 0xe2, 0x4c, 0x64, 0x63, 0x65, 0x09, 0x6c, 0x02, 0xfd, 0xb1, 0x87, 0xff, 0x93, 0x2b,
+ 0xe2, 0xc8, 0xc9, 0xa7, 0x32, 0x39, 0xe2, 0x1f, 0x4d, 0x07, 0xa8, 0xf5, 0xdb, 0xad, 0x11, 0x4b,
+ 0x07, 0xf0, 0x0a, 0x14, 0x68, 0xb5, 0x12, 0xb3, 0x97, 0xce, 0x1f, 0xbd, 0x51, 0xe7, 0x48, 0xac,
+ 0x56, 0x81, 0x73, 0x32, 0x30, 0x11, 0x59, 0xbb, 0x07, 0x6b, 0x71, 0x0c, 0x62, 0xc4, 0x23, 0xc2,
+ 0x96, 0x6e, 0xab, 0x9c, 0xd3, 0x8e, 0xef, 0x33, 0x87, 0x99, 0x9d, 0x67, 0x7e, 0xf6, 0xee, 0x15,
+ 0xa0, 0x3f, 0x19, 0x4d, 0x56, 0xc4, 0x58, 0xed, 0x3b, 0x39, 0x38, 0x17, 0xf9, 0xe8, 0x8b, 0x35,
+ 0xf4, 0x2b, 0xeb, 0x30, 0xaa, 0xc7, 0x1c, 0x1a, 0x85, 0xdc, 0x98, 0x6e, 0xe0, 0x1c, 0x3f, 0xaa,
+ 0x7d, 0xd8, 0x9a, 0x85, 0x4f, 0x5e, 0x84, 0x65, 0x0c, 0xeb, 0x34, 0x72, 0x7a, 0xae, 0xbc, 0xcd,
+ 0x0e, 0x05, 0xd0, 0x8c, 0xca, 0xb5, 0x9f, 0x28, 0xb0, 0xcd, 0xdd, 0x3c, 0x1a, 0x8e, 0x37, 0xc4,
+ 0x57, 0x82, 0x9e, 0xfb, 0xc1, 0x38, 0x3c, 0xef, 0xc7, 0xf6, 0xb1, 0x17, 0xe2, 0xde, 0x3c, 0xa9,
+ 0xaf, 0xcd, 0x6e, 0x2d, 0xb9, 0x89, 0xa1, 0xca, 0xf8, 0x2b, 0x7a, 0x81, 0x05, 0x98, 0x18, 0x52,
+ 0x80, 0x1c, 0x60, 0x02, 0x31, 0xb4, 0xff, 0x03, 0x97, 0xe7, 0x7f, 0x80, 0x7c, 0x01, 0x56, 0x31,
+ 0xf7, 0x56, 0x77, 0x74, 0x34, 0x76, 0xfa, 0xae, 0xd0, 0xec, 0x09, 0x6d, 0xac, 0x5c, 0xc6, 0x22,
+ 0xaf, 0xf1, 0x80, 0x07, 0x47, 0x98, 0xd5, 0x8b, 0x13, 0xc5, 0x7c, 0xa9, 0x64, 0x6e, 0xda, 0x37,
+ 0x14, 0x20, 0x69, 0x1e, 0xe4, 0x63, 0xb0, 0xd2, 0xed, 0x54, 0xac, 0x89, 0x33, 0x9e, 0x54, 0xfd,
+ 0xe9, 0x98, 0x87, 0x3d, 0x63, 0xfe, 0xef, 0x93, 0x9e, 0xcd, 0xde, 0x83, 0x8e, 0xfd, 0xe9, 0xd8,
+ 0x8c, 0xe1, 0x61, 0x8e, 0x27, 0xd7, 0xfd, 0x4a, 0xdf, 0x79, 0x1c, 0xcf, 0xf1, 0xc4, 0x61, 0xb1,
+ 0x1c, 0x4f, 0x1c, 0xa6, 0x7d, 0x5f, 0x81, 0x8b, 0xc2, 0x38, 0xb2, 0x9f, 0x51, 0x97, 0x0a, 0x46,
+ 0x79, 0x19, 0x8b, 0x38, 0xbb, 0xf3, 0x24, 0xf4, 0x0d, 0x11, 0x08, 0x09, 0x2b, 0x88, 0xa2, 0x3a,
+ 0xa3, 0x25, 0x9f, 0x86, 0x82, 0x35, 0xf1, 0x47, 0xa7, 0x88, 0x84, 0xa4, 0x86, 0x23, 0x3a, 0xf1,
+ 0x47, 0xc8, 0x02, 0x29, 0x35, 0x17, 0xce, 0xc9, 0x95, 0x13, 0x35, 0x26, 0x0d, 0x58, 0xe2, 0x21,
+ 0xef, 0x12, 0x76, 0x07, 0x73, 0xda, 0xb4, 0xb3, 0x2e, 0xc2, 0x2d, 0xf1, 0x38, 0xaf, 0xa6, 0xe0,
+ 0xa1, 0xfd, 0x96, 0x02, 0x25, 0x2a, 0xd8, 0xe0, 0xa5, 0xf4, 0xfd, 0x4e, 0xe9, 0xb8, 0x1c, 0x2c,
+ 0xcc, 0x68, 0x42, 0xf6, 0xa7, 0x3a, 0x8d, 0x5f, 0x85, 0xf5, 0x04, 0x01, 0xd1, 0x30, 0xd0, 0xc6,
+ 0xc0, 0xeb, 0x39, 0x2c, 0x65, 0x0c, 0x33, 0x41, 0x89, 0xc1, 0xb4, 0xff, 0xa7, 0xc0, 0xb9, 0xd6,
+ 0x57, 0x26, 0x0e, 0x7b, 0xb6, 0x35, 0xa7, 0x03, 0xb1, 0xde, 0xa9, 0xb0, 0x26, 0xac, 0x6c, 0x59,
+ 0x10, 0x00, 0x26, 0xac, 0x71, 0x98, 0x19, 0x96, 0x92, 0x2a, 0x14, 0xf9, 0xf9, 0x12, 0xf0, 0xf0,
+ 0xac, 0x97, 0x25, 0xdd, 0x48, 0xc4, 0x98, 0x23, 0xd1, 0x96, 0xe0, 0x16, 0xc6, 0x69, 0xcc, 0x90,
+ 0x5a, 0xfb, 0x37, 0x05, 0x36, 0x67, 0xd0, 0x90, 0x37, 0x61, 0x01, 0x1d, 0x14, 0xf9, 0xe8, 0x5d,
+ 0x9a, 0xf1, 0x89, 0x49, 0xef, 0xf8, 0xe0, 0x16, 0x3b, 0x88, 0x4e, 0xe8, 0x0f, 0x93, 0x51, 0x91,
+ 0x07, 0xb0, 0xac, 0xf7, 0xfb, 0xfc, 0x76, 0x96, 0x8b, 0xdd, 0xce, 0x66, 0x7c, 0xf1, 0xe5, 0x10,
+ 0x9f, 0xdd, 0xce, 0x98, 0xab, 0x4c, 0xbf, 0x6f, 0x73, 0xe7, 0xcb, 0x88, 0xdf, 0xf6, 0x27, 0x61,
+ 0x2d, 0x8e, 0xfc, 0x54, 0xfe, 0x62, 0xef, 0x28, 0xa0, 0xc6, 0xeb, 0xf0, 0xcb, 0x09, 0x14, 0x95,
+ 0x35, 0xcc, 0x4f, 0x98, 0x54, 0xbf, 0x93, 0x83, 0xf3, 0x99, 0x3d, 0x4c, 0x5e, 0x82, 0x45, 0x7d,
+ 0x34, 0xaa, 0xed, 0xf2, 0x59, 0xc5, 0x25, 0x24, 0x54, 0x7a, 0xc7, 0x2e, 0xaf, 0x0c, 0x89, 0xbc,
+ 0x02, 0x45, 0x66, 0x1d, 0xb0, 0x2b, 0x36, 0x1c, 0x8c, 0x7c, 0xc3, 0x4d, 0x17, 0xe2, 0x81, 0x52,
+ 0x05, 0x22, 0xd9, 0x83, 0x35, 0x1e, 0x33, 0xc6, 0x74, 0x8f, 0xdc, 0xaf, 0x85, 0x11, 0xfb, 0x31,
+ 0xa9, 0x80, 0xd0, 0xa4, 0xdb, 0x63, 0x56, 0x26, 0x47, 0x4d, 0x89, 0x53, 0x91, 0x3a, 0xa8, 0xc8,
+ 0x53, 0xe6, 0xc4, 0xa2, 0xb5, 0x62, 0x14, 0x1f, 0x56, 0x89, 0x19, 0xbc, 0x52, 0x94, 0xe1, 0x70,
+ 0xe9, 0x41, 0xe0, 0x1d, 0x0d, 0x4f, 0xdc, 0xe1, 0xe4, 0x97, 0x37, 0x5c, 0xd1, 0x37, 0x4e, 0x35,
+ 0x5c, 0xbf, 0x57, 0x60, 0x8b, 0x39, 0x49, 0x46, 0x25, 0x1a, 0x29, 0x40, 0x37, 0x4a, 0x34, 0xf4,
+ 0x7e, 0xc6, 0xa3, 0xa2, 0xec, 0xc2, 0x12, 0x8b, 0x56, 0x23, 0x56, 0xc6, 0xb3, 0x99, 0x55, 0x60,
+ 0x38, 0x07, 0xb7, 0x98, 0xf8, 0xc2, 0x3c, 0x25, 0x03, 0x53, 0x90, 0x92, 0x03, 0x28, 0x55, 0x06,
+ 0xae, 0x33, 0x9c, 0x8e, 0x3a, 0xa7, 0x7b, 0x41, 0xdd, 0xe2, 0x6d, 0x59, 0xe9, 0x31, 0x32, 0x7c,
+ 0x79, 0xc5, 0x9d, 0x5c, 0x66, 0x44, 0x3a, 0xa1, 0xf3, 0x54, 0x01, 0x15, 0xaf, 0x1f, 0x9d, 0xd3,
+ 0x3f, 0x49, 0x20, 0xd2, 0xc5, 0x3d, 0x03, 0xb9, 0x77, 0x95, 0x0d, 0x6b, 0x75, 0x27, 0x98, 0x74,
+ 0xc6, 0xce, 0x30, 0xc0, 0x28, 0x97, 0xa7, 0x88, 0x02, 0x76, 0x51, 0x64, 0x70, 0x46, 0x95, 0xe9,
+ 0x24, 0x24, 0x65, 0x0a, 0xd9, 0x38, 0x3b, 0x2a, 0x2f, 0xed, 0x79, 0x43, 0x67, 0xe0, 0x7d, 0x5d,
+ 0xf8, 0x98, 0x32, 0x79, 0xe9, 0x50, 0x00, 0xcd, 0xa8, 0x5c, 0xfb, 0x7c, 0x6a, 0xdc, 0x58, 0x2d,
+ 0x4b, 0xb0, 0xc4, 0x23, 0x10, 0x30, 0x8f, 0xfc, 0xb6, 0xd1, 0xdc, 0xad, 0x35, 0xf7, 0x55, 0x85,
+ 0xac, 0x01, 0xb4, 0xcd, 0x56, 0xc5, 0xb0, 0x2c, 0xfa, 0x3b, 0x47, 0x7f, 0x73, 0x77, 0xfd, 0xbd,
+ 0x6e, 0x5d, 0xcd, 0x4b, 0x1e, 0xfb, 0x05, 0xed, 0xc7, 0x0a, 0x5c, 0xc8, 0x1e, 0x4a, 0xd2, 0x01,
+ 0x8c, 0xd9, 0xc0, 0xdf, 0xd2, 0x3f, 0x36, 0x77, 0xdc, 0x33, 0xc1, 0xc9, 0xd8, 0x0f, 0x13, 0x16,
+ 0x53, 0x20, 0x27, 0xde, 0xbe, 0x98, 0x93, 0xa2, 0xd7, 0x37, 0x73, 0x5e, 0x5f, 0xab, 0xc0, 0xd6,
+ 0x2c, 0x1e, 0xf1, 0xa6, 0xae, 0x43, 0x49, 0x6f, 0xb7, 0xeb, 0xb5, 0x8a, 0xde, 0xa9, 0xb5, 0x9a,
+ 0xaa, 0x42, 0x96, 0x61, 0x61, 0xdf, 0x6c, 0x75, 0xdb, 0x6a, 0x4e, 0xfb, 0xae, 0x02, 0xab, 0xb5,
+ 0xc8, 0xea, 0xec, 0xfd, 0x2e, 0xbe, 0x8f, 0xc7, 0x16, 0xdf, 0x56, 0x18, 0xdd, 0x24, 0xfc, 0xc0,
+ 0xa9, 0x56, 0xde, 0x7b, 0x39, 0xd8, 0x48, 0xd1, 0x10, 0x0b, 0x96, 0xf4, 0x7b, 0x56, 0xab, 0xb6,
+ 0x5b, 0xe1, 0x35, 0xbb, 0x12, 0x99, 0x4b, 0x61, 0xbe, 0xab, 0xd4, 0x57, 0x98, 0x47, 0xf0, 0xa3,
+ 0xc0, 0xf6, 0xbd, 0xbe, 0x94, 0xfc, 0xb6, 0x7a, 0xc6, 0x14, 0x9c, 0xf0, 0x24, 0xfb, 0xfa, 0x74,
+ 0xec, 0x22, 0xdb, 0x5c, 0x4c, 0xaf, 0x1b, 0xc2, 0xd3, 0x8c, 0xd1, 0x7f, 0xc3, 0xa1, 0xe5, 0x69,
+ 0xd6, 0x11, 0x3f, 0xd2, 0x84, 0xc5, 0x7d, 0x6f, 0x52, 0x9d, 0x3e, 0xe4, 0xeb, 0xf7, 0x72, 0x94,
+ 0xfd, 0xa8, 0x3a, 0x7d, 0x98, 0x66, 0x8b, 0x2a, 0x4b, 0x16, 0xbd, 0x27, 0xc6, 0x92, 0x73, 0x49,
+ 0x3a, 0x31, 0x16, 0x9e, 0xca, 0x89, 0x71, 0x67, 0x15, 0x4a, 0xfc, 0x0e, 0x85, 0xd7, 0x93, 0x1f,
+ 0x2a, 0xb0, 0x35, 0xab, 0xe7, 0xe8, 0xb5, 0x2c, 0x1e, 0xac, 0xe0, 0x42, 0x98, 0x1e, 0x23, 0x1e,
+ 0xa5, 0x40, 0xa0, 0x91, 0xb7, 0xa0, 0x54, 0x0b, 0x82, 0xa9, 0x3b, 0xb6, 0x5e, 0xe9, 0x9a, 0x35,
+ 0x3e, 0x5d, 0x9f, 0xfd, 0xe7, 0x77, 0xaf, 0x6c, 0xa2, 0xcf, 0xc7, 0xd8, 0x0e, 0x5e, 0xb1, 0xa7,
+ 0x63, 0x2f, 0x96, 0x4a, 0x40, 0xa6, 0xa0, 0x52, 0xb4, 0x33, 0xed, 0x7b, 0xae, 0xb8, 0x43, 0x08,
+ 0x87, 0x6e, 0x0e, 0x93, 0xcf, 0x34, 0x01, 0xd3, 0xbe, 0xa5, 0xc0, 0xf6, 0xec, 0x61, 0xa2, 0xe7,
+ 0x64, 0x87, 0x99, 0x54, 0x09, 0x97, 0x6a, 0x3c, 0x27, 0x43, 0xbb, 0x2b, 0x99, 0xa7, 0x40, 0xa4,
+ 0x44, 0x61, 0x6a, 0xfc, 0x5c, 0x2a, 0x1f, 0x76, 0x9c, 0x48, 0x20, 0x6a, 0xf7, 0x61, 0x73, 0xc6,
+ 0xa0, 0x92, 0x4f, 0x65, 0x26, 0xdd, 0x41, 0x37, 0x25, 0x39, 0xe9, 0x4e, 0x2c, 0x7b, 0x9b, 0x04,
+ 0xd7, 0xfe, 0x25, 0x07, 0x17, 0xe8, 0xea, 0x1a, 0xb8, 0x41, 0xa0, 0x47, 0xf9, 0x69, 0xe9, 0xae,
+ 0xf8, 0x1a, 0x2c, 0x1e, 0x3f, 0x9d, 0xaa, 0x98, 0xa1, 0x13, 0x02, 0x78, 0x62, 0x09, 0xe7, 0x18,
+ 0xfa, 0x3f, 0xb9, 0x0a, 0x72, 0x72, 0xf3, 0x3c, 0x86, 0x37, 0xcd, 0x6d, 0x29, 0xe6, 0xf2, 0x28,
+ 0xcc, 0x43, 0xfc, 0x3a, 0x2c, 0xa0, 0x3e, 0x85, 0x9f, 0x1d, 0x42, 0xe6, 0xcf, 0xae, 0x1d, 0x6a,
+ 0x5b, 0x4c, 0x46, 0x40, 0x3e, 0x02, 0x10, 0x65, 0x86, 0xe0, 0x87, 0x83, 0xd0, 0x33, 0x84, 0xc9,
+ 0x21, 0xcc, 0xe5, 0x93, 0x43, 0x87, 0xa7, 0x5b, 0x28, 0xc3, 0x86, 0xe8, 0xf1, 0x91, 0x88, 0x8a,
+ 0xc8, 0x5f, 0x31, 0xd7, 0x59, 0x41, 0x6d, 0x24, 0x22, 0x23, 0x5e, 0x4b, 0x25, 0x68, 0xc6, 0xe0,
+ 0xc8, 0x89, 0x2c, 0xcc, 0xd7, 0x52, 0x59, 0x98, 0x8b, 0x0c, 0x4b, 0x4e, 0xb5, 0xac, 0xfd, 0x43,
+ 0x0e, 0x96, 0xef, 0x51, 0xa9, 0x0c, 0x75, 0x0d, 0xf3, 0x75, 0x17, 0xb7, 0xa1, 0x54, 0xf7, 0x1d,
+ 0xfe, 0x5c, 0xc4, 0x7d, 0x4a, 0x98, 0x4f, 0xf7, 0xc0, 0x77, 0xc4, 0xcb, 0x53, 0x60, 0xca, 0x48,
+ 0x4f, 0xf0, 0x47, 0xbf, 0x03, 0x8b, 0xec, 0xf9, 0x8e, 0xab, 0xd1, 0x84, 0x5c, 0x1e, 0xd6, 0xe8,
+ 0x65, 0x56, 0x2c, 0xbd, 0x70, 0xb0, 0x27, 0x40, 0x59, 0x48, 0xe4, 0x31, 0x5e, 0x25, 0xcd, 0xca,
+ 0xc2, 0xe9, 0x34, 0x2b, 0x52, 0x2c, 0xbb, 0xc5, 0xd3, 0xc4, 0xb2, 0xdb, 0x7e, 0x03, 0x4a, 0x52,
+ 0x7d, 0x9e, 0x4a, 0x4c, 0xff, 0x66, 0x0e, 0x56, 0xb1, 0x55, 0xa1, 0x2d, 0xcf, 0xaf, 0xa6, 0x9e,
+ 0xe8, 0xe3, 0x31, 0x3d, 0xd1, 0x96, 0x3c, 0x5e, 0xac, 0x65, 0x73, 0x14, 0x44, 0x77, 0x60, 0x23,
+ 0x85, 0x48, 0x5e, 0x85, 0x05, 0x5a, 0x7d, 0x71, 0xaf, 0x56, 0x93, 0x33, 0x20, 0x8a, 0x7b, 0x4c,
+ 0x1b, 0x1e, 0x98, 0x0c, 0x5b, 0xfb, 0x77, 0x05, 0x56, 0x78, 0xda, 0x91, 0xe1, 0xa1, 0xff, 0xc4,
+ 0xee, 0xbc, 0x9e, 0xec, 0x4e, 0x16, 0x5d, 0x85, 0x77, 0xe7, 0x7f, 0x75, 0x27, 0xbe, 0x11, 0xeb,
+ 0xc4, 0xcd, 0x30, 0x0a, 0xa2, 0x68, 0xce, 0x9c, 0x3e, 0xfc, 0x01, 0xc6, 0x05, 0x8e, 0x23, 0x92,
+ 0x2f, 0xc2, 0x72, 0xd3, 0x7d, 0x14, 0xbb, 0x9e, 0x5e, 0x9f, 0xc1, 0xf4, 0xe5, 0x10, 0x91, 0xad,
+ 0x29, 0x3c, 0xd9, 0x87, 0xee, 0x23, 0x3b, 0xf5, 0x72, 0x18, 0xb1, 0xa4, 0x37, 0xd4, 0x38, 0xd9,
+ 0xd3, 0x4c, 0x7d, 0xee, 0xe0, 0x8a, 0x01, 0x83, 0xbe, 0x9d, 0x07, 0x88, 0x7c, 0x03, 0xe9, 0x02,
+ 0x8c, 0x19, 0x4d, 0x08, 0xcd, 0x3e, 0x82, 0xe4, 0x39, 0x2e, 0x6c, 0x29, 0xae, 0x73, 0x0d, 0x74,
+ 0x6e, 0x76, 0x94, 0x4a, 0xd4, 0x45, 0x57, 0xb8, 0x33, 0x5a, 0xdf, 0x1d, 0x38, 0x6c, 0x6f, 0xcf,
+ 0xef, 0x5c, 0xc3, 0xa0, 0xc4, 0x21, 0x74, 0x46, 0xba, 0x69, 0x74, 0x59, 0xdb, 0xa5, 0x08, 0x29,
+ 0x7f, 0xdb, 0xc2, 0xd3, 0xf9, 0xdb, 0xb6, 0x61, 0xd9, 0x1b, 0xbe, 0xed, 0x0e, 0x27, 0xfe, 0xf8,
+ 0x31, 0xaa, 0xdd, 0x23, 0x7d, 0x1e, 0xed, 0x82, 0x9a, 0x28, 0x63, 0xe3, 0x80, 0x67, 0x6e, 0x88,
+ 0x2f, 0x0f, 0x43, 0x08, 0x0c, 0xfd, 0x85, 0x17, 0xd4, 0xc5, 0x3b, 0x85, 0xe2, 0xa2, 0xba, 0x74,
+ 0xa7, 0x50, 0x2c, 0xaa, 0xcb, 0x77, 0x0a, 0xc5, 0x65, 0x15, 0x4c, 0xe9, 0xcd, 0x2c, 0x7c, 0x13,
+ 0x93, 0x9e, 0xb1, 0xe2, 0x4f, 0x54, 0xda, 0xcf, 0x73, 0x40, 0xd2, 0xd5, 0x20, 0x1f, 0x87, 0x12,
+ 0xdb, 0x60, 0xed, 0x71, 0xf0, 0x55, 0xee, 0x6e, 0xc0, 0xc2, 0x2e, 0x49, 0x60, 0x39, 0xec, 0x12,
+ 0x03, 0x9b, 0xc1, 0x57, 0x07, 0xe4, 0x0b, 0x70, 0x16, 0xbb, 0x77, 0xe4, 0x8e, 0x3d, 0xbf, 0x6f,
+ 0x63, 0x8c, 0x5c, 0x67, 0xc0, 0x53, 0x43, 0xbe, 0x84, 0x39, 0x8c, 0xd3, 0xc5, 0x33, 0x86, 0x01,
+ 0x5d, 0x00, 0xdb, 0x88, 0xd9, 0x66, 0x88, 0xa4, 0x03, 0xaa, 0x4c, 0x7f, 0x38, 0x1d, 0x0c, 0xf8,
+ 0xc8, 0x96, 0xe9, 0x8d, 0x3e, 0x59, 0x36, 0x83, 0xf1, 0x5a, 0xc4, 0x78, 0x6f, 0x3a, 0x18, 0x90,
+ 0xd7, 0x00, 0xfc, 0xa1, 0x7d, 0xe2, 0x05, 0x01, 0x7b, 0xcc, 0x09, 0xbd, 0x95, 0x23, 0xa8, 0x3c,
+ 0x18, 0xfe, 0xb0, 0xc1, 0x80, 0xe4, 0x7f, 0x01, 0x46, 0x6b, 0xc0, 0x30, 0x26, 0xcc, 0x1a, 0x89,
+ 0x67, 0x6f, 0x11, 0xc0, 0xb8, 0x73, 0xf4, 0x91, 0x6b, 0x79, 0x5f, 0x17, 0xae, 0x1e, 0x9f, 0x83,
+ 0x0d, 0x6e, 0x3c, 0x7c, 0xcf, 0x9b, 0x1c, 0xf3, 0xab, 0xc4, 0xfb, 0xb9, 0x87, 0x48, 0x77, 0x89,
+ 0xbf, 0x29, 0x00, 0xe8, 0xf7, 0x2c, 0x11, 0x21, 0xec, 0x26, 0x2c, 0xd0, 0x0b, 0x92, 0x50, 0xb4,
+ 0xa0, 0x9a, 0x1a, 0xf9, 0xca, 0x6a, 0x6a, 0xc4, 0xa0, 0xab, 0xd1, 0x44, 0xa3, 0x7a, 0xa1, 0x64,
+ 0xc1, 0xd5, 0xc8, 0xec, 0xec, 0x63, 0x11, 0x9a, 0x39, 0x16, 0xa9, 0x03, 0x44, 0x31, 0xbb, 0xb8,
+ 0xc8, 0xbf, 0x11, 0x05, 0xbf, 0xe1, 0x05, 0x3c, 0x4b, 0x44, 0x14, 0xf7, 0x4b, 0x9e, 0x3e, 0x11,
+ 0x1a, 0xb9, 0x0b, 0x85, 0x8e, 0x13, 0xfa, 0xe2, 0xce, 0x88, 0x64, 0xf6, 0x1c, 0x4f, 0xdd, 0x19,
+ 0x45, 0x33, 0x5b, 0x9b, 0x38, 0xb1, 0x0c, 0xc7, 0xc8, 0x84, 0x18, 0xb0, 0xc8, 0xd3, 0xb2, 0xcf,
+ 0x88, 0x80, 0xc9, 0xb3, 0xb2, 0xf3, 0xb8, 0xd7, 0x08, 0x94, 0x65, 0x0a, 0x9e, 0x80, 0xfd, 0x36,
+ 0xe4, 0x2d, 0xab, 0xc1, 0xe3, 0x77, 0xac, 0x46, 0xd7, 0x2f, 0xcb, 0x6a, 0xb0, 0x77, 0xdf, 0x20,
+ 0x38, 0x91, 0xc8, 0x28, 0x32, 0xf9, 0x04, 0x94, 0x24, 0xa1, 0x98, 0x47, 0xbe, 0xc1, 0x3e, 0x90,
+ 0xbc, 0x9d, 0xe4, 0x4d, 0x43, 0xc2, 0x26, 0x75, 0x50, 0xef, 0x4e, 0x1f, 0xba, 0xfa, 0x68, 0x84,
+ 0x6e, 0x90, 0x6f, 0xbb, 0x63, 0x26, 0xb6, 0x15, 0xa3, 0x90, 0xd1, 0xe8, 0x23, 0xd1, 0x17, 0xa5,
+ 0xb2, 0xb2, 0x29, 0x49, 0x49, 0xda, 0xb0, 0x61, 0xb9, 0x93, 0xe9, 0x88, 0xd9, 0xd7, 0xec, 0xf9,
+ 0x63, 0x7a, 0xbf, 0x61, 0x71, 0x72, 0x30, 0xba, 0x6e, 0x40, 0x0b, 0x85, 0x51, 0xd3, 0xa1, 0x3f,
+ 0x4e, 0xdc, 0x75, 0xd2, 0xc4, 0x9a, 0x2b, 0x0f, 0x39, 0x3d, 0x55, 0xe3, 0xb7, 0x26, 0x3c, 0x55,
+ 0xc5, 0xad, 0x29, 0xba, 0x2b, 0x7d, 0x24, 0x23, 0x96, 0x1b, 0xbe, 0x0c, 0x4a, 0xb1, 0xdc, 0x62,
+ 0x11, 0xdc, 0xbe, 0x5f, 0x90, 0xc2, 0x89, 0xf2, 0xb1, 0x78, 0x13, 0xe0, 0x8e, 0xef, 0x0d, 0x1b,
+ 0xee, 0xe4, 0xd8, 0xef, 0x4b, 0x21, 0xe5, 0x4a, 0x5f, 0xf6, 0xbd, 0xa1, 0x7d, 0x82, 0xe0, 0x9f,
+ 0xbf, 0x7b, 0x45, 0x42, 0x32, 0xa5, 0xff, 0xc9, 0x87, 0x61, 0x99, 0xfe, 0xea, 0x44, 0x56, 0x42,
+ 0x4c, 0x27, 0x8b, 0xd4, 0x2c, 0xe9, 0x46, 0x84, 0x40, 0xde, 0xc0, 0x34, 0x33, 0xde, 0x68, 0x22,
+ 0x09, 0xaf, 0x22, 0xa7, 0x8c, 0x37, 0x9a, 0x24, 0x23, 0x44, 0x4b, 0xc8, 0xa4, 0x1a, 0x56, 0x5d,
+ 0x64, 0x86, 0xe2, 0xd9, 0x6c, 0x50, 0xf1, 0xc8, 0xe7, 0x9a, 0x2d, 0x42, 0xd3, 0xca, 0x29, 0x7f,
+ 0x13, 0x64, 0x58, 0x09, 0xab, 0xba, 0xcb, 0x5e, 0x8a, 0xb8, 0x50, 0xcb, 0x2a, 0x11, 0x1c, 0xf7,
+ 0xed, 0x1e, 0x82, 0x63, 0x95, 0x08, 0x91, 0xc9, 0x0e, 0xac, 0x33, 0x19, 0x3f, 0xcc, 0x30, 0xc9,
+ 0x45, 0x5c, 0xdc, 0xdb, 0xa2, 0x14, 0x94, 0xf2, 0xe7, 0x13, 0x04, 0x64, 0x0f, 0x16, 0xf0, 0xae,
+ 0xc9, 0x5d, 0x03, 0x2e, 0xca, 0x6a, 0x82, 0xe4, 0x3a, 0xc2, 0x7d, 0x05, 0x15, 0x04, 0xf2, 0xbe,
+ 0x82, 0xa8, 0xe4, 0xb3, 0x00, 0xc6, 0x70, 0xec, 0x0f, 0x06, 0x18, 0x3c, 0xb9, 0x88, 0x57, 0xa9,
+ 0x67, 0xe3, 0xeb, 0x11, 0xb9, 0x44, 0x48, 0x3c, 0xd0, 0x1f, 0xfe, 0xb6, 0x13, 0x21, 0x96, 0x25,
+ 0x5e, 0x5a, 0x0d, 0x16, 0xd9, 0x62, 0xc4, 0x40, 0xe4, 0x3c, 0xb5, 0x8a, 0x14, 0xc6, 0x9a, 0x05,
+ 0x22, 0xe7, 0xf0, 0x74, 0x20, 0x72, 0x89, 0x40, 0xbb, 0x0b, 0xe7, 0xb2, 0x1a, 0x16, 0xbb, 0x1d,
+ 0x2b, 0xa7, 0xbd, 0x1d, 0x7f, 0x2f, 0x0f, 0x2b, 0xc8, 0x4d, 0xec, 0xc2, 0x3a, 0xac, 0x5a, 0xd3,
+ 0x87, 0x61, 0x94, 0x2e, 0xb1, 0x1b, 0x63, 0xfd, 0x02, 0xb9, 0x40, 0x7e, 0xc3, 0x8b, 0x51, 0x10,
+ 0x03, 0xd6, 0xc4, 0x49, 0xb0, 0x2f, 0x3c, 0x07, 0xc2, 0x18, 0xe0, 0x22, 0xd2, 0x64, 0x3a, 0xc3,
+ 0x6e, 0x82, 0x28, 0x3a, 0x0f, 0xf2, 0x4f, 0x73, 0x1e, 0x14, 0x4e, 0x75, 0x1e, 0x3c, 0x80, 0x15,
+ 0xf1, 0x35, 0xdc, 0xc9, 0x17, 0xde, 0xdf, 0x4e, 0x1e, 0x63, 0x46, 0xea, 0xe1, 0x8e, 0xbe, 0x38,
+ 0x77, 0x47, 0xc7, 0x87, 0x51, 0xb1, 0xca, 0x46, 0x08, 0x4b, 0x6f, 0xec, 0x98, 0x82, 0x72, 0xbf,
+ 0xd2, 0xfe, 0x05, 0x4e, 0xc9, 0x57, 0x61, 0xb9, 0xee, 0x8b, 0x37, 0x31, 0xe9, 0x31, 0x62, 0x20,
+ 0x80, 0xb2, 0xb8, 0x10, 0x62, 0x86, 0xa7, 0x5b, 0xfe, 0x83, 0x38, 0xdd, 0xde, 0x00, 0xe0, 0x2e,
+ 0x29, 0x51, 0xea, 0x38, 0x5c, 0x32, 0x22, 0x42, 0x49, 0xfc, 0x4d, 0x44, 0x42, 0xa6, 0xbb, 0x13,
+ 0x37, 0xb7, 0xd1, 0x7b, 0x3d, 0x7f, 0x3a, 0x9c, 0xc4, 0x72, 0x2d, 0x0b, 0x0f, 0x56, 0x87, 0x97,
+ 0xc9, 0xdb, 0x43, 0x82, 0xec, 0x83, 0x1d, 0x10, 0xf2, 0x99, 0xd0, 0xf8, 0x71, 0x69, 0x5e, 0x0f,
+ 0x69, 0xa9, 0x1e, 0x9a, 0x69, 0xf2, 0xa8, 0xfd, 0x58, 0x91, 0x13, 0x30, 0xfc, 0x02, 0x43, 0xfd,
+ 0x3a, 0x40, 0x68, 0x94, 0x20, 0xc6, 0x9a, 0xdd, 0x97, 0x42, 0xa8, 0xdc, 0xcb, 0x11, 0xae, 0xd4,
+ 0x9a, 0xfc, 0x07, 0xd5, 0x9a, 0x0e, 0x94, 0x5a, 0x5f, 0x99, 0x38, 0x91, 0x15, 0x0b, 0x58, 0xa1,
+ 0x24, 0x8b, 0x3b, 0x53, 0x7e, 0xe7, 0x05, 0x3c, 0x1b, 0x22, 0x39, 0x78, 0x86, 0x08, 0x2c, 0x11,
+ 0x6a, 0x7f, 0xa6, 0xc0, 0xba, 0xec, 0x76, 0xff, 0x78, 0xd8, 0x23, 0x9f, 0x62, 0xf1, 0x60, 0x95,
+ 0xd8, 0x95, 0x45, 0x42, 0xa2, 0x5b, 0xee, 0xe3, 0x61, 0x8f, 0x09, 0x40, 0xce, 0x23, 0xb9, 0xb2,
+ 0x94, 0x90, 0x3c, 0x84, 0x95, 0xb6, 0x3f, 0x18, 0x50, 0xb1, 0x66, 0xfc, 0x36, 0xbf, 0x00, 0x50,
+ 0x46, 0xc9, 0xa7, 0x11, 0x51, 0xa1, 0x9d, 0xe7, 0xf9, 0x3d, 0x77, 0x73, 0x44, 0xf7, 0x7b, 0x8f,
+ 0xd3, 0x45, 0x6c, 0xdf, 0x41, 0x3f, 0x39, 0x99, 0xa7, 0xf6, 0x53, 0x05, 0x48, 0xba, 0x4a, 0xf2,
+ 0x96, 0xa5, 0xfc, 0x37, 0x88, 0xb0, 0x09, 0xd1, 0xaf, 0xf0, 0x34, 0xa2, 0x5f, 0xf9, 0xb7, 0x15,
+ 0x58, 0xaf, 0xe9, 0x0d, 0x9e, 0x92, 0x81, 0xbd, 0xe0, 0x5c, 0x85, 0x67, 0x6b, 0x7a, 0xc3, 0x6e,
+ 0xb7, 0xea, 0xb5, 0xca, 0x7d, 0x3b, 0x33, 0xd2, 0xf2, 0xb3, 0xf0, 0x4c, 0x1a, 0x25, 0x7a, 0xe9,
+ 0xb9, 0x04, 0x5b, 0xe9, 0x62, 0x11, 0x8d, 0x39, 0x9b, 0x58, 0x04, 0x6e, 0xce, 0x97, 0xdf, 0x82,
+ 0x75, 0x11, 0x79, 0xb8, 0x53, 0xb7, 0x30, 0xb7, 0xc1, 0x3a, 0x94, 0x0e, 0x0c, 0xb3, 0xb6, 0x77,
+ 0xdf, 0xde, 0xeb, 0xd6, 0xeb, 0xea, 0x19, 0xb2, 0x0a, 0xcb, 0x1c, 0x50, 0xd1, 0x55, 0x85, 0xac,
+ 0x40, 0xb1, 0xd6, 0xb4, 0x8c, 0x4a, 0xd7, 0x34, 0xd4, 0x5c, 0xf9, 0x2d, 0x58, 0x6b, 0x8f, 0xbd,
+ 0xb7, 0x9d, 0x89, 0x7b, 0xd7, 0x7d, 0x8c, 0x0f, 0x35, 0x4b, 0x90, 0x37, 0xf5, 0x7b, 0xea, 0x19,
+ 0x02, 0xb0, 0xd8, 0xbe, 0x5b, 0xb1, 0x6e, 0xdd, 0x52, 0x15, 0x52, 0x82, 0xa5, 0xfd, 0x4a, 0xdb,
+ 0xbe, 0xdb, 0xb0, 0xd4, 0x1c, 0xfd, 0xa1, 0xdf, 0xb3, 0xf0, 0x47, 0xbe, 0xfc, 0x51, 0xd8, 0x40,
+ 0x81, 0xa4, 0xee, 0x05, 0x13, 0x77, 0xe8, 0x8e, 0xb1, 0x0e, 0x2b, 0x50, 0xb4, 0x5c, 0xba, 0x93,
+ 0x4c, 0x5c, 0x56, 0x81, 0xc6, 0x74, 0x30, 0xf1, 0x46, 0x03, 0xf7, 0x6b, 0xaa, 0x52, 0x7e, 0x03,
+ 0xd6, 0x4d, 0x7f, 0x3a, 0xf1, 0x86, 0x47, 0xd6, 0x84, 0x62, 0x1c, 0x3d, 0x26, 0xe7, 0x61, 0xa3,
+ 0xdb, 0xd4, 0x1b, 0x3b, 0xb5, 0xfd, 0x6e, 0xab, 0x6b, 0xd9, 0x0d, 0xbd, 0x53, 0xa9, 0xb2, 0x67,
+ 0xa2, 0x46, 0xcb, 0xea, 0xd8, 0xa6, 0x51, 0x31, 0x9a, 0x1d, 0x55, 0x29, 0x7f, 0x07, 0x75, 0x2b,
+ 0x3d, 0x7f, 0xd8, 0xdf, 0x73, 0x7a, 0x13, 0x7f, 0x8c, 0x15, 0xd6, 0xe0, 0xb2, 0x65, 0x54, 0x5a,
+ 0xcd, 0x5d, 0x7b, 0x4f, 0xaf, 0x74, 0x5a, 0x66, 0x56, 0xa8, 0xef, 0x6d, 0xb8, 0x90, 0x81, 0xd3,
+ 0xea, 0xb4, 0x55, 0x85, 0x5c, 0x81, 0x8b, 0x19, 0x65, 0xf7, 0x8c, 0x1d, 0xbd, 0xdb, 0xa9, 0x36,
+ 0xd5, 0xdc, 0x0c, 0x62, 0xcb, 0x6a, 0xa9, 0xf9, 0xf2, 0xff, 0x57, 0x60, 0xad, 0x1b, 0x70, 0x93,
+ 0xf3, 0x2e, 0x7a, 0x9b, 0x3e, 0x07, 0x97, 0xba, 0x96, 0x61, 0xda, 0x9d, 0xd6, 0x5d, 0xa3, 0x69,
+ 0x77, 0x2d, 0x7d, 0x3f, 0x59, 0x9b, 0x2b, 0x70, 0x51, 0xc2, 0x30, 0x8d, 0x4a, 0xeb, 0xc0, 0x30,
+ 0xed, 0xb6, 0x6e, 0x59, 0xf7, 0x5a, 0xe6, 0xae, 0xaa, 0xd0, 0x2f, 0x66, 0x20, 0x34, 0xf6, 0x74,
+ 0x56, 0x9b, 0x58, 0x59, 0xd3, 0xb8, 0xa7, 0xd7, 0xed, 0x9d, 0x56, 0x47, 0xcd, 0x97, 0x1b, 0xf4,
+ 0x7c, 0xc7, 0x80, 0xbb, 0xcc, 0xb2, 0xb0, 0x08, 0x85, 0x66, 0xab, 0x69, 0x24, 0x1f, 0x17, 0x57,
+ 0xa0, 0xa8, 0xb7, 0xdb, 0x66, 0xeb, 0x00, 0xa7, 0x18, 0xc0, 0xe2, 0xae, 0xd1, 0xa4, 0x35, 0xcb,
+ 0xd3, 0x92, 0xb6, 0xd9, 0x6a, 0xb4, 0x3a, 0xc6, 0xae, 0x5a, 0x28, 0x9b, 0x62, 0x09, 0x0b, 0xa6,
+ 0x3d, 0x9f, 0xbd, 0xe4, 0xed, 0x1a, 0x7b, 0x7a, 0xb7, 0xde, 0xe1, 0x43, 0x74, 0xdf, 0x36, 0x8d,
+ 0xcf, 0x74, 0x0d, 0xab, 0x63, 0xa9, 0x0a, 0x51, 0x61, 0xa5, 0x69, 0x18, 0xbb, 0x96, 0x6d, 0x1a,
+ 0x07, 0x35, 0xe3, 0x9e, 0x9a, 0xa3, 0x3c, 0xd9, 0xff, 0xf4, 0x0b, 0xe5, 0xef, 0x2b, 0x40, 0x58,
+ 0xb0, 0x62, 0x91, 0x01, 0x07, 0x67, 0xcc, 0x65, 0xd8, 0xae, 0xd2, 0xa1, 0xc6, 0xa6, 0x35, 0x5a,
+ 0xbb, 0xc9, 0x2e, 0xbb, 0x00, 0x24, 0x51, 0xde, 0xda, 0xdb, 0x53, 0x15, 0x72, 0x11, 0xce, 0x26,
+ 0xe0, 0xbb, 0x66, 0xab, 0xad, 0xe6, 0xb6, 0x73, 0x45, 0x85, 0x6c, 0xa6, 0x0a, 0xef, 0x1a, 0x46,
+ 0x5b, 0xcd, 0xd3, 0x21, 0x4a, 0x14, 0x88, 0x25, 0xc1, 0xc8, 0x0b, 0xe5, 0x6f, 0x29, 0x70, 0x81,
+ 0x55, 0x53, 0xac, 0xaf, 0xb0, 0xaa, 0x97, 0x60, 0x8b, 0x87, 0x60, 0xcf, 0xaa, 0xe8, 0x39, 0x50,
+ 0x63, 0xa5, 0xac, 0x9a, 0xe7, 0x61, 0x23, 0x06, 0xc5, 0x7a, 0xe4, 0xe8, 0xee, 0x11, 0x03, 0xef,
+ 0x18, 0x56, 0xc7, 0x36, 0xf6, 0xf6, 0x5a, 0x66, 0x87, 0x55, 0x24, 0x5f, 0xd6, 0x60, 0xa3, 0xe2,
+ 0x8e, 0x27, 0xf4, 0xea, 0x35, 0x0c, 0x3c, 0x7f, 0x88, 0x55, 0x58, 0x85, 0x65, 0xe3, 0xb3, 0x1d,
+ 0xa3, 0x69, 0xd5, 0x5a, 0x4d, 0xf5, 0x4c, 0xf9, 0x52, 0x02, 0x47, 0xac, 0x63, 0xcb, 0xaa, 0xaa,
+ 0x67, 0xca, 0x0e, 0xac, 0x0a, 0xc3, 0x6b, 0x36, 0x2b, 0x2e, 0xc3, 0xb6, 0x98, 0x6b, 0xb8, 0xa3,
+ 0x24, 0x9b, 0xb0, 0x05, 0xe7, 0xd2, 0xe5, 0x46, 0x47, 0x55, 0xe8, 0x28, 0x24, 0x4a, 0x28, 0x3c,
+ 0x57, 0xfe, 0xbf, 0x0a, 0xac, 0x86, 0x8f, 0x26, 0xa8, 0xa6, 0xbd, 0x02, 0x17, 0x1b, 0x7b, 0xba,
+ 0xbd, 0x6b, 0x1c, 0xd4, 0x2a, 0x86, 0x7d, 0xb7, 0xd6, 0xdc, 0x4d, 0x7c, 0xe4, 0x19, 0x38, 0x9f,
+ 0x81, 0x80, 0x5f, 0xd9, 0x82, 0x73, 0xc9, 0xa2, 0x0e, 0x5d, 0xaa, 0x39, 0xda, 0xf5, 0xc9, 0x92,
+ 0x70, 0x9d, 0xe6, 0xcb, 0x07, 0xb0, 0x66, 0xe9, 0x8d, 0xfa, 0x9e, 0x3f, 0xee, 0xb9, 0xfa, 0x74,
+ 0x72, 0x3c, 0x24, 0x17, 0x61, 0x73, 0xaf, 0x65, 0x56, 0x0c, 0x1b, 0x51, 0x12, 0x35, 0x38, 0x0b,
+ 0xeb, 0x72, 0xe1, 0x7d, 0x83, 0x4e, 0x5f, 0x02, 0x6b, 0x32, 0xb0, 0xd9, 0x52, 0x73, 0xe5, 0xcf,
+ 0xc3, 0x4a, 0x2c, 0x11, 0xde, 0x26, 0x9c, 0x95, 0x7f, 0xb7, 0xdd, 0x61, 0xdf, 0x1b, 0x1e, 0xa9,
+ 0x67, 0x92, 0x05, 0xe6, 0x74, 0x38, 0xa4, 0x05, 0xb8, 0x9e, 0xe5, 0x82, 0x8e, 0x3b, 0x3e, 0xf1,
+ 0x86, 0xce, 0xc4, 0xed, 0xab, 0xb9, 0xf2, 0xcb, 0xb0, 0x1a, 0x0b, 0xbf, 0x4d, 0x07, 0xae, 0xde,
+ 0xe2, 0x1b, 0x70, 0xc3, 0xd8, 0xad, 0x75, 0x1b, 0xea, 0x02, 0x5d, 0xc9, 0xd5, 0xda, 0x7e, 0x55,
+ 0x85, 0xf2, 0x77, 0x15, 0x7a, 0xcf, 0xc0, 0xa4, 0x3a, 0x8d, 0x3d, 0x5d, 0x0c, 0x35, 0x9d, 0x66,
+ 0x2c, 0xa8, 0xbf, 0x61, 0x59, 0xec, 0x4d, 0xfd, 0x12, 0x6c, 0xf1, 0x1f, 0xb6, 0xde, 0xdc, 0xb5,
+ 0xab, 0xba, 0xb9, 0x7b, 0x4f, 0x37, 0xe9, 0xdc, 0xbb, 0xaf, 0xe6, 0x70, 0x41, 0x49, 0x10, 0xbb,
+ 0xd3, 0xea, 0x56, 0xaa, 0x6a, 0x9e, 0xce, 0xdf, 0x18, 0xbc, 0x5d, 0x6b, 0xaa, 0x05, 0x5c, 0x9e,
+ 0x29, 0x6c, 0x64, 0x4b, 0xcb, 0x17, 0xca, 0xef, 0x29, 0xb0, 0x69, 0x79, 0x47, 0x43, 0x67, 0x32,
+ 0x1d, 0xbb, 0xfa, 0xe0, 0xc8, 0x1f, 0x7b, 0x93, 0xe3, 0x13, 0x6b, 0xea, 0x4d, 0x5c, 0x72, 0x13,
+ 0x5e, 0xb0, 0x6a, 0xfb, 0x4d, 0xbd, 0x43, 0x97, 0x97, 0x5e, 0xdf, 0x6f, 0x99, 0xb5, 0x4e, 0xb5,
+ 0x61, 0x5b, 0xdd, 0x5a, 0x6a, 0xe6, 0x5d, 0x83, 0xe7, 0x66, 0xa3, 0xd6, 0x8d, 0x7d, 0xbd, 0x72,
+ 0x5f, 0x55, 0xe6, 0x33, 0xdc, 0xd1, 0xeb, 0x7a, 0xb3, 0x62, 0xec, 0xda, 0x07, 0xb7, 0xd4, 0x1c,
+ 0x79, 0x01, 0xae, 0xce, 0x46, 0xdd, 0xab, 0xb5, 0x2d, 0x8a, 0x96, 0x9f, 0xff, 0xdd, 0xaa, 0xd5,
+ 0xa0, 0x58, 0x85, 0xf2, 0x1f, 0x2a, 0xb0, 0x35, 0x2b, 0x06, 0x13, 0xb9, 0x0e, 0x9a, 0xd1, 0xec,
+ 0x98, 0x7a, 0x6d, 0xd7, 0xae, 0x98, 0xc6, 0xae, 0xd1, 0xec, 0xd4, 0xf4, 0xba, 0x65, 0x5b, 0xad,
+ 0x2e, 0x9d, 0x4d, 0x91, 0xe9, 0xc3, 0xf3, 0x70, 0x65, 0x0e, 0x5e, 0xab, 0xb6, 0x5b, 0x51, 0x15,
+ 0x72, 0x0b, 0x5e, 0x9a, 0x83, 0x64, 0xdd, 0xb7, 0x3a, 0x46, 0x43, 0x2e, 0x51, 0x73, 0xe5, 0x0a,
+ 0x6c, 0xcf, 0x0e, 0xd2, 0x42, 0xb7, 0xe9, 0x78, 0x4f, 0x17, 0xa1, 0xb0, 0x4b, 0x4f, 0x86, 0x58,
+ 0xee, 0x87, 0xb2, 0x07, 0x6a, 0x32, 0xce, 0x42, 0xca, 0x46, 0xc5, 0xec, 0x36, 0x9b, 0xec, 0x18,
+ 0x59, 0x87, 0x52, 0xab, 0x53, 0x35, 0x4c, 0x9e, 0x3d, 0x03, 0xd3, 0x65, 0x74, 0x9b, 0x74, 0xe1,
+ 0xb4, 0xcc, 0xda, 0xe7, 0xf0, 0x3c, 0xd9, 0x82, 0x73, 0x56, 0x5d, 0xaf, 0xdc, 0xb5, 0x9b, 0xad,
+ 0x8e, 0x5d, 0x6b, 0xda, 0x95, 0xaa, 0xde, 0x6c, 0x1a, 0x75, 0x15, 0xb0, 0x33, 0x67, 0xf9, 0x56,
+ 0x92, 0x0f, 0xc3, 0x8d, 0xd6, 0xdd, 0x8e, 0x6e, 0xb7, 0xeb, 0xdd, 0xfd, 0x5a, 0xd3, 0xb6, 0xee,
+ 0x37, 0x2b, 0x42, 0xf6, 0xa9, 0xa4, 0xb7, 0xdc, 0x1b, 0x70, 0x6d, 0x2e, 0x76, 0x94, 0xe7, 0xe2,
+ 0x3a, 0x68, 0x73, 0x31, 0x79, 0x43, 0xca, 0x3f, 0x51, 0xe0, 0xe2, 0x9c, 0x37, 0x64, 0xf2, 0x12,
+ 0xdc, 0xac, 0x1a, 0xfa, 0x6e, 0xdd, 0xb0, 0x2c, 0xdc, 0x28, 0xe8, 0x30, 0x30, 0x5b, 0x96, 0xcc,
+ 0x0d, 0xf5, 0x26, 0xbc, 0x30, 0x1f, 0x3d, 0x3a, 0x9a, 0x6f, 0xc0, 0xb5, 0xf9, 0xa8, 0xfc, 0xa8,
+ 0xce, 0x91, 0x32, 0x5c, 0x9f, 0x8f, 0x19, 0x1e, 0xf1, 0xf9, 0xf2, 0x6f, 0x2a, 0x70, 0x21, 0x5b,
+ 0x91, 0x43, 0xeb, 0x56, 0x6b, 0x5a, 0x1d, 0xbd, 0x5e, 0xb7, 0xdb, 0xba, 0xa9, 0x37, 0x6c, 0xa3,
+ 0x69, 0xb6, 0xea, 0xf5, 0xac, 0xa3, 0xed, 0x1a, 0x3c, 0x37, 0x1b, 0xd5, 0xaa, 0x98, 0xb5, 0x36,
+ 0xdd, 0xbd, 0x35, 0xb8, 0x3c, 0x1b, 0xcb, 0xa8, 0x55, 0x0c, 0x35, 0xb7, 0xf3, 0xe6, 0x8f, 0xfe,
+ 0xfe, 0xf2, 0x99, 0x1f, 0xbd, 0x77, 0x59, 0xf9, 0xe9, 0x7b, 0x97, 0x95, 0xbf, 0x7b, 0xef, 0xb2,
+ 0xf2, 0xb9, 0x17, 0x4f, 0x97, 0x22, 0x0a, 0xe5, 0xfe, 0x87, 0x8b, 0x78, 0x43, 0x79, 0xe5, 0x3f,
+ 0x03, 0x00, 0x00, 0xff, 0xff, 0x09, 0xed, 0xed, 0x8d, 0x2e, 0xbf, 0x01, 0x00,
}
func (this *PluginSpecV1) Equal(that interface{}) bool {
@@ -34564,6 +34575,27 @@ func (m *RoleConditions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
+ if len(m.WorkloadIdentityLabelsExpression) > 0 {
+ i -= len(m.WorkloadIdentityLabelsExpression)
+ copy(dAtA[i:], m.WorkloadIdentityLabelsExpression)
+ i = encodeVarintTypes(dAtA, i, uint64(len(m.WorkloadIdentityLabelsExpression)))
+ i--
+ dAtA[i] = 0x2
+ i--
+ dAtA[i] = 0xea
+ }
+ {
+ size := m.WorkloadIdentityLabels.Size()
+ i -= size
+ if _, err := m.WorkloadIdentityLabels.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ i = encodeVarintTypes(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2
+ i--
+ dAtA[i] = 0xe2
if len(m.GitHubPermissions) > 0 {
for iNdEx := len(m.GitHubPermissions) - 1; iNdEx >= 0; iNdEx-- {
{
@@ -36147,12 +36179,12 @@ func (m *UserSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) {
}
i--
dAtA[i] = 0x42
- n192, err192 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
- if err192 != nil {
- return 0, err192
+ n193, err193 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
+ if err193 != nil {
+ return 0, err193
}
- i -= n192
- i = encodeVarintTypes(dAtA, i, uint64(n192))
+ i -= n193
+ i = encodeVarintTypes(dAtA, i, uint64(n193))
i--
dAtA[i] = 0x3a
{
@@ -36308,21 +36340,21 @@ func (m *LoginStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n195, err195 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):])
- if err195 != nil {
- return 0, err195
- }
- i -= n195
- i = encodeVarintTypes(dAtA, i, uint64(n195))
- i--
- dAtA[i] = 0x22
- n196, err196 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):])
+ n196, err196 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):])
if err196 != nil {
return 0, err196
}
i -= n196
i = encodeVarintTypes(dAtA, i, uint64(n196))
i--
+ dAtA[i] = 0x22
+ n197, err197 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):])
+ if err197 != nil {
+ return 0, err197
+ }
+ i -= n197
+ i = encodeVarintTypes(dAtA, i, uint64(n197))
+ i--
dAtA[i] = 0x1a
if len(m.LockedMessage) > 0 {
i -= len(m.LockedMessage)
@@ -36378,12 +36410,12 @@ func (m *CreatedBy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
}
i--
dAtA[i] = 0x1a
- n198, err198 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):])
- if err198 != nil {
- return 0, err198
+ n199, err199 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):])
+ if err199 != nil {
+ return 0, err199
}
- i -= n198
- i = encodeVarintTypes(dAtA, i, uint64(n198))
+ i -= n199
+ i = encodeVarintTypes(dAtA, i, uint64(n199))
i--
dAtA[i] = 0x12
if m.Connector != nil {
@@ -36501,21 +36533,21 @@ func (m *MFADevice) MarshalToSizedBuffer(dAtA []byte) (int, error) {
}
}
}
- n201, err201 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):])
- if err201 != nil {
- return 0, err201
- }
- i -= n201
- i = encodeVarintTypes(dAtA, i, uint64(n201))
- i--
- dAtA[i] = 0x3a
- n202, err202 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):])
+ n202, err202 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):])
if err202 != nil {
return 0, err202
}
i -= n202
i = encodeVarintTypes(dAtA, i, uint64(n202))
i--
+ dAtA[i] = 0x3a
+ n203, err203 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):])
+ if err203 != nil {
+ return 0, err203
+ }
+ i -= n203
+ i = encodeVarintTypes(dAtA, i, uint64(n203))
+ i--
dAtA[i] = 0x32
if len(m.Id) > 0 {
i -= len(m.Id)
@@ -37211,12 +37243,12 @@ func (m *TunnelConnectionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error)
i--
dAtA[i] = 0x22
}
- n214, err214 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):])
- if err214 != nil {
- return 0, err214
+ n215, err215 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):])
+ if err215 != nil {
+ return 0, err215
}
- i -= n214
- i = encodeVarintTypes(dAtA, i, uint64(n214))
+ i -= n215
+ i = encodeVarintTypes(dAtA, i, uint64(n215))
i--
dAtA[i] = 0x1a
if len(m.ProxyName) > 0 {
@@ -37308,12 +37340,12 @@ func (m *AcquireSemaphoreRequest) MarshalToSizedBuffer(dAtA []byte) (int, error)
i--
dAtA[i] = 0x2a
}
- n215, err215 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
- if err215 != nil {
- return 0, err215
+ n216, err216 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
+ if err216 != nil {
+ return 0, err216
}
- i -= n215
- i = encodeVarintTypes(dAtA, i, uint64(n215))
+ i -= n216
+ i = encodeVarintTypes(dAtA, i, uint64(n216))
i--
dAtA[i] = 0x22
if m.MaxLeases != 0 {
@@ -37362,12 +37394,12 @@ func (m *SemaphoreLease) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n216, err216 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
- if err216 != nil {
- return 0, err216
+ n217, err217 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
+ if err217 != nil {
+ return 0, err217
}
- i -= n216
- i = encodeVarintTypes(dAtA, i, uint64(n216))
+ i -= n217
+ i = encodeVarintTypes(dAtA, i, uint64(n217))
i--
dAtA[i] = 0x2a
if len(m.LeaseID) > 0 {
@@ -37425,12 +37457,12 @@ func (m *SemaphoreLeaseRef) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x1a
}
- n217, err217 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
- if err217 != nil {
- return 0, err217
+ n218, err218 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
+ if err218 != nil {
+ return 0, err218
}
- i -= n217
- i = encodeVarintTypes(dAtA, i, uint64(n217))
+ i -= n218
+ i = encodeVarintTypes(dAtA, i, uint64(n218))
i--
dAtA[i] = 0x12
if len(m.LeaseID) > 0 {
@@ -37702,29 +37734,29 @@ func (m *WebSessionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x48
}
- n224, err224 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):])
- if err224 != nil {
- return 0, err224
- }
- i -= n224
- i = encodeVarintTypes(dAtA, i, uint64(n224))
- i--
- dAtA[i] = 0x42
- n225, err225 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
+ n225, err225 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):])
if err225 != nil {
return 0, err225
}
i -= n225
i = encodeVarintTypes(dAtA, i, uint64(n225))
i--
- dAtA[i] = 0x3a
- n226, err226 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):])
+ dAtA[i] = 0x42
+ n226, err226 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
if err226 != nil {
return 0, err226
}
i -= n226
i = encodeVarintTypes(dAtA, i, uint64(n226))
i--
+ dAtA[i] = 0x3a
+ n227, err227 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):])
+ if err227 != nil {
+ return 0, err227
+ }
+ i -= n227
+ i = encodeVarintTypes(dAtA, i, uint64(n227))
+ i--
dAtA[i] = 0x32
if len(m.BearerToken) > 0 {
i -= len(m.BearerToken)
@@ -37956,21 +37988,21 @@ func (m *SAMLSessionData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x22
}
- n227, err227 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.ExpireTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.ExpireTime):])
- if err227 != nil {
- return 0, err227
- }
- i -= n227
- i = encodeVarintTypes(dAtA, i, uint64(n227))
- i--
- dAtA[i] = 0x1a
- n228, err228 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreateTime):])
+ n228, err228 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.ExpireTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.ExpireTime):])
if err228 != nil {
return 0, err228
}
i -= n228
i = encodeVarintTypes(dAtA, i, uint64(n228))
i--
+ dAtA[i] = 0x1a
+ n229, err229 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreateTime):])
+ if err229 != nil {
+ return 0, err229
+ }
+ i -= n229
+ i = encodeVarintTypes(dAtA, i, uint64(n229))
+ i--
dAtA[i] = 0x12
if len(m.ID) > 0 {
i -= len(m.ID)
@@ -38251,12 +38283,12 @@ func (m *RemoteClusterStatusV3) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n232, err232 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):])
- if err232 != nil {
- return 0, err232
+ n233, err233 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):])
+ if err233 != nil {
+ return 0, err233
}
- i -= n232
- i = encodeVarintTypes(dAtA, i, uint64(n232))
+ i -= n233
+ i = encodeVarintTypes(dAtA, i, uint64(n233))
i--
dAtA[i] = 0x12
if len(m.Connection) > 0 {
@@ -41034,12 +41066,12 @@ func (m *GithubAuthRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
dAtA[i] = 0x62
}
if m.Expires != nil {
- n273, err273 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):])
- if err273 != nil {
- return 0, err273
+ n274, err274 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):])
+ if err274 != nil {
+ return 0, err274
}
- i -= n273
- i = encodeVarintTypes(dAtA, i, uint64(n273))
+ i -= n274
+ i = encodeVarintTypes(dAtA, i, uint64(n274))
i--
dAtA[i] = 0x5a
}
@@ -42058,21 +42090,21 @@ func (m *LockSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x2a
}
- n291, err291 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt):])
- if err291 != nil {
- return 0, err291
+ n292, err292 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt):])
+ if err292 != nil {
+ return 0, err292
}
- i -= n291
- i = encodeVarintTypes(dAtA, i, uint64(n291))
+ i -= n292
+ i = encodeVarintTypes(dAtA, i, uint64(n292))
i--
dAtA[i] = 0x22
if m.Expires != nil {
- n292, err292 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):])
- if err292 != nil {
- return 0, err292
+ n293, err293 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):])
+ if err293 != nil {
+ return 0, err293
}
- i -= n292
- i = encodeVarintTypes(dAtA, i, uint64(n292))
+ i -= n293
+ i = encodeVarintTypes(dAtA, i, uint64(n293))
i--
dAtA[i] = 0x1a
}
@@ -42789,12 +42821,12 @@ func (m *RegisterUsingTokenRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro
dAtA[i] = 0x6a
}
if m.Expires != nil {
- n304, err304 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):])
- if err304 != nil {
- return 0, err304
+ n305, err305 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):])
+ if err305 != nil {
+ return 0, err305
}
- i -= n304
- i = encodeVarintTypes(dAtA, i, uint64(n304))
+ i -= n305
+ i = encodeVarintTypes(dAtA, i, uint64(n305))
i--
dAtA[i] = 0x62
}
@@ -42974,12 +43006,12 @@ func (m *RecoveryCodesSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n307, err307 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):])
- if err307 != nil {
- return 0, err307
+ n308, err308 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):])
+ if err308 != nil {
+ return 0, err308
}
- i -= n307
- i = encodeVarintTypes(dAtA, i, uint64(n307))
+ i -= n308
+ i = encodeVarintTypes(dAtA, i, uint64(n308))
i--
dAtA[i] = 0x12
if len(m.Codes) > 0 {
@@ -43359,21 +43391,21 @@ func (m *SessionTrackerSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x32
}
- n311, err311 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
- if err311 != nil {
- return 0, err311
- }
- i -= n311
- i = encodeVarintTypes(dAtA, i, uint64(n311))
- i--
- dAtA[i] = 0x2a
- n312, err312 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):])
+ n312, err312 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
if err312 != nil {
return 0, err312
}
i -= n312
i = encodeVarintTypes(dAtA, i, uint64(n312))
i--
+ dAtA[i] = 0x2a
+ n313, err313 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):])
+ if err313 != nil {
+ return 0, err313
+ }
+ i -= n313
+ i = encodeVarintTypes(dAtA, i, uint64(n313))
+ i--
dAtA[i] = 0x22
if m.State != 0 {
i = encodeVarintTypes(dAtA, i, uint64(m.State))
@@ -43476,12 +43508,12 @@ func (m *Participant) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n313, err313 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):])
- if err313 != nil {
- return 0, err313
+ n314, err314 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):])
+ if err314 != nil {
+ return 0, err314
}
- i -= n313
- i = encodeVarintTypes(dAtA, i, uint64(n313))
+ i -= n314
+ i = encodeVarintTypes(dAtA, i, uint64(n314))
i--
dAtA[i] = 0x22
if len(m.Mode) > 0 {
@@ -44193,12 +44225,12 @@ func (m *ClusterAlertSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n326, err326 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):])
- if err326 != nil {
- return 0, err326
+ n327, err327 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):])
+ if err327 != nil {
+ return 0, err327
}
- i -= n326
- i = encodeVarintTypes(dAtA, i, uint64(n326))
+ i -= n327
+ i = encodeVarintTypes(dAtA, i, uint64(n327))
i--
dAtA[i] = 0x1a
if len(m.Message) > 0 {
@@ -44328,12 +44360,12 @@ func (m *AlertAcknowledgement) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n327, err327 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
- if err327 != nil {
- return 0, err327
+ n328, err328 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
+ if err328 != nil {
+ return 0, err328
}
- i -= n327
- i = encodeVarintTypes(dAtA, i, uint64(n327))
+ i -= n328
+ i = encodeVarintTypes(dAtA, i, uint64(n328))
i--
dAtA[i] = 0x22
if len(m.Reason) > 0 {
@@ -46660,12 +46692,12 @@ func (m *PluginStatusV1) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x32
}
- n362, err362 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastSyncTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastSyncTime):])
- if err362 != nil {
- return 0, err362
+ n363, err363 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastSyncTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastSyncTime):])
+ if err363 != nil {
+ return 0, err363
}
- i -= n362
- i = encodeVarintTypes(dAtA, i, uint64(n362))
+ i -= n363
+ i = encodeVarintTypes(dAtA, i, uint64(n363))
i--
dAtA[i] = 0x1a
if len(m.ErrorMessage) > 0 {
@@ -47026,22 +47058,22 @@ func (m *PluginOktaStatusDetailsAppGroupSync) MarshalToSizedBuffer(dAtA []byte)
dAtA[i] = 0x28
}
if m.LastFailed != nil {
- n372, err372 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):])
- if err372 != nil {
- return 0, err372
+ n373, err373 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):])
+ if err373 != nil {
+ return 0, err373
}
- i -= n372
- i = encodeVarintTypes(dAtA, i, uint64(n372))
+ i -= n373
+ i = encodeVarintTypes(dAtA, i, uint64(n373))
i--
dAtA[i] = 0x22
}
if m.LastSuccessful != nil {
- n373, err373 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):])
- if err373 != nil {
- return 0, err373
+ n374, err374 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):])
+ if err374 != nil {
+ return 0, err374
}
- i -= n373
- i = encodeVarintTypes(dAtA, i, uint64(n373))
+ i -= n374
+ i = encodeVarintTypes(dAtA, i, uint64(n374))
i--
dAtA[i] = 0x1a
}
@@ -47100,22 +47132,22 @@ func (m *PluginOktaStatusDetailsUsersSync) MarshalToSizedBuffer(dAtA []byte) (in
dAtA[i] = 0x28
}
if m.LastFailed != nil {
- n374, err374 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):])
- if err374 != nil {
- return 0, err374
+ n375, err375 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):])
+ if err375 != nil {
+ return 0, err375
}
- i -= n374
- i = encodeVarintTypes(dAtA, i, uint64(n374))
+ i -= n375
+ i = encodeVarintTypes(dAtA, i, uint64(n375))
i--
dAtA[i] = 0x22
}
if m.LastSuccessful != nil {
- n375, err375 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):])
- if err375 != nil {
- return 0, err375
+ n376, err376 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):])
+ if err376 != nil {
+ return 0, err376
}
- i -= n375
- i = encodeVarintTypes(dAtA, i, uint64(n375))
+ i -= n376
+ i = encodeVarintTypes(dAtA, i, uint64(n376))
i--
dAtA[i] = 0x1a
}
@@ -47234,22 +47266,22 @@ func (m *PluginOktaStatusDetailsAccessListsSync) MarshalToSizedBuffer(dAtA []byt
}
}
if m.LastFailed != nil {
- n376, err376 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):])
- if err376 != nil {
- return 0, err376
+ n377, err377 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):])
+ if err377 != nil {
+ return 0, err377
}
- i -= n376
- i = encodeVarintTypes(dAtA, i, uint64(n376))
+ i -= n377
+ i = encodeVarintTypes(dAtA, i, uint64(n377))
i--
dAtA[i] = 0x22
}
if m.LastSuccessful != nil {
- n377, err377 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):])
- if err377 != nil {
- return 0, err377
+ n378, err378 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):])
+ if err378 != nil {
+ return 0, err378
}
- i -= n377
- i = encodeVarintTypes(dAtA, i, uint64(n377))
+ i -= n378
+ i = encodeVarintTypes(dAtA, i, uint64(n378))
i--
dAtA[i] = 0x1a
}
@@ -47415,12 +47447,12 @@ func (m *PluginOAuth2AccessTokenCredentials) MarshalToSizedBuffer(dAtA []byte) (
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n382, err382 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
- if err382 != nil {
- return 0, err382
+ n383, err383 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):])
+ if err383 != nil {
+ return 0, err383
}
- i -= n382
- i = encodeVarintTypes(dAtA, i, uint64(n382))
+ i -= n383
+ i = encodeVarintTypes(dAtA, i, uint64(n383))
i--
dAtA[i] = 0x1a
if len(m.RefreshToken) > 0 {
@@ -48362,21 +48394,21 @@ func (m *ScheduledAgentUpgradeWindow) MarshalToSizedBuffer(dAtA []byte) (int, er
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n397, err397 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Stop, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Stop):])
- if err397 != nil {
- return 0, err397
- }
- i -= n397
- i = encodeVarintTypes(dAtA, i, uint64(n397))
- i--
- dAtA[i] = 0x12
- n398, err398 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):])
+ n398, err398 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Stop, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Stop):])
if err398 != nil {
return 0, err398
}
i -= n398
i = encodeVarintTypes(dAtA, i, uint64(n398))
i--
+ dAtA[i] = 0x12
+ n399, err399 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):])
+ if err399 != nil {
+ return 0, err399
+ }
+ i -= n399
+ i = encodeVarintTypes(dAtA, i, uint64(n399))
+ i--
dAtA[i] = 0xa
return len(dAtA) - i, nil
}
@@ -48802,12 +48834,12 @@ func (m *OktaAssignmentSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x30
}
- n405, err405 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastTransition, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastTransition):])
- if err405 != nil {
- return 0, err405
+ n406, err406 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastTransition, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastTransition):])
+ if err406 != nil {
+ return 0, err406
}
- i -= n405
- i = encodeVarintTypes(dAtA, i, uint64(n405))
+ i -= n406
+ i = encodeVarintTypes(dAtA, i, uint64(n406))
i--
dAtA[i] = 0x2a
if m.Status != 0 {
@@ -48815,12 +48847,12 @@ func (m *OktaAssignmentSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x20
}
- n406, err406 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CleanupTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CleanupTime):])
- if err406 != nil {
- return 0, err406
+ n407, err407 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CleanupTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CleanupTime):])
+ if err407 != nil {
+ return 0, err407
}
- i -= n406
- i = encodeVarintTypes(dAtA, i, uint64(n406))
+ i -= n407
+ i = encodeVarintTypes(dAtA, i, uint64(n407))
i--
dAtA[i] = 0x1a
if len(m.Targets) > 0 {
@@ -50330,12 +50362,12 @@ func (m *AccessGraphSync) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- n431, err431 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.PollInterval, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.PollInterval):])
- if err431 != nil {
- return 0, err431
+ n432, err432 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.PollInterval, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.PollInterval):])
+ if err432 != nil {
+ return 0, err432
}
- i -= n431
- i = encodeVarintTypes(dAtA, i, uint64(n431))
+ i -= n432
+ i = encodeVarintTypes(dAtA, i, uint64(n432))
i--
dAtA[i] = 0x12
if len(m.AWS) > 0 {
@@ -54740,6 +54772,12 @@ func (m *RoleConditions) Size() (n int) {
n += 2 + l + sovTypes(uint64(l))
}
}
+ l = m.WorkloadIdentityLabels.Size()
+ n += 2 + l + sovTypes(uint64(l))
+ l = len(m.WorkloadIdentityLabelsExpression)
+ if l > 0 {
+ n += 2 + l + sovTypes(uint64(l))
+ }
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
@@ -90707,6 +90745,71 @@ func (m *RoleConditions) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 44:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WorkloadIdentityLabels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTypes
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTypes
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTypes
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.WorkloadIdentityLabels.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 45:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WorkloadIdentityLabelsExpression", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTypes
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTypes
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTypes
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.WorkloadIdentityLabelsExpression = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTypes(dAtA[iNdEx:])
diff --git a/api/types/usertasks/object.go b/api/types/usertasks/object.go
index 244dda1d47bc1..278e956ea755d 100644
--- a/api/types/usertasks/object.go
+++ b/api/types/usertasks/object.go
@@ -45,10 +45,12 @@ func WithExpiration(t time.Time) func(ut *usertasksv1.UserTask) {
// NewDiscoverEC2UserTask creates a new DiscoverEC2 User Task Type.
func NewDiscoverEC2UserTask(spec *usertasksv1.UserTaskSpec, opts ...UserTaskOption) (*usertasksv1.UserTask, error) {
taskName := TaskNameForDiscoverEC2(TaskNameForDiscoverEC2Parts{
- Integration: spec.GetIntegration(),
- IssueType: spec.GetIssueType(),
- AccountID: spec.GetDiscoverEc2().GetAccountId(),
- Region: spec.GetDiscoverEc2().GetRegion(),
+ Integration: spec.GetIntegration(),
+ IssueType: spec.GetIssueType(),
+ AccountID: spec.GetDiscoverEc2().GetAccountId(),
+ Region: spec.GetDiscoverEc2().GetRegion(),
+ SSMDocument: spec.GetDiscoverEc2().GetSsmDocument(),
+ InstallerScript: spec.GetDiscoverEc2().GetInstallerScript(),
})
ut := &usertasksv1.UserTask{
@@ -172,10 +174,12 @@ func validateDiscoverEC2TaskType(ut *usertasksv1.UserTask) error {
}
expectedTaskName := TaskNameForDiscoverEC2(TaskNameForDiscoverEC2Parts{
- Integration: ut.Spec.Integration,
- IssueType: ut.Spec.IssueType,
- AccountID: ut.Spec.DiscoverEc2.AccountId,
- Region: ut.Spec.DiscoverEc2.Region,
+ Integration: ut.Spec.Integration,
+ IssueType: ut.Spec.IssueType,
+ AccountID: ut.Spec.DiscoverEc2.AccountId,
+ Region: ut.Spec.DiscoverEc2.Region,
+ SSMDocument: ut.Spec.DiscoverEc2.SsmDocument,
+ InstallerScript: ut.Spec.DiscoverEc2.InstallerScript,
})
if ut.Metadata.GetName() != expectedTaskName {
return trace.BadParameter("task name is pre-defined for discover-ec2 types, expected %q, got %q",
diff --git a/assets/backport/go.mod b/assets/backport/go.mod
index 6b68eb58c31eb..1a62feb772b02 100644
--- a/assets/backport/go.mod
+++ b/assets/backport/go.mod
@@ -14,7 +14,7 @@ require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
- golang.org/x/crypto v0.22.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/net v0.24.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
diff --git a/assets/backport/go.sum b/assets/backport/go.sum
index 13bab01e9ef06..7d0946671e57b 100644
--- a/assets/backport/go.sum
+++ b/assets/backport/go.sum
@@ -877,8 +877,8 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
diff --git a/build.assets/Makefile b/build.assets/Makefile
index ecb0f7674c3f4..21e40af91d59e 100644
--- a/build.assets/Makefile
+++ b/build.assets/Makefile
@@ -35,19 +35,7 @@ ifneq ("$(KUBECONFIG)","")
DOCKERFLAGS := $(DOCKERFLAGS) -v $(KUBECONFIG):/mnt/kube/config -e KUBECONFIG=/mnt/kube/config -e TEST_KUBE=$(TEST_KUBE)
endif
-# conditionally force the use of UID/GID 1000:1000 if we're running in Github Actions (in which case CI env var will be set)
ifeq ("$(CI)","true")
-# The UID/GID of the runner user on ARC runners is 1001, not 1000
-# This var is currently only set for ARC runners via https://github.com/gravitational/cloud-terraform/pull/2473
-ifeq ("$(CI_SYSTEM)","ARC")
-UID := 1001
-GID := 1001
-NOROOT := -u 1001:1001
-else
-UID := 1000
-GID := 1000
-NOROOT := -u 1000:1000
-endif
# if running in CI and the GOCACHE environment variable is not set, set it to a sensible default
ifeq ("$(GOCACHE)",)
GOCACHE := /go/cache
diff --git a/build.assets/tooling/go.mod b/build.assets/tooling/go.mod
index 5870c74535be8..cfc1305c2b386 100644
--- a/build.assets/tooling/go.mod
+++ b/build.assets/tooling/go.mod
@@ -53,10 +53,10 @@ require (
github.com/spf13/cast v1.7.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
- golang.org/x/crypto v0.27.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/net v0.26.0 // indirect
- golang.org/x/sys v0.25.0 // indirect
- golang.org/x/text v0.18.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
diff --git a/build.assets/tooling/go.sum b/build.assets/tooling/go.sum
index f89acb6f5295f..c4ff39d6d8447 100644
--- a/build.assets/tooling/go.sum
+++ b/build.assets/tooling/go.sum
@@ -991,8 +991,8 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
-golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
-golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1163,8 +1163,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
-golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1250,8 +1250,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
-golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
@@ -1280,8 +1280,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
-golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
diff --git a/docs/config.json b/docs/config.json
index 10947e64273f4..f5ce95aca7d60 100644
--- a/docs/config.json
+++ b/docs/config.json
@@ -132,7 +132,7 @@
"aws_secret_access_key": "zyxw9876-this-is-an-example"
},
"cloud": {
- "version": "16.4.8",
+ "version": "16.4.9",
"major_version": "16",
"sla": {
"monthly_percentage": "99.9%",
diff --git a/docs/pages/admin-guides/infrastructure-as-code/terraform-provider/dedicated-server.mdx b/docs/pages/admin-guides/infrastructure-as-code/terraform-provider/dedicated-server.mdx
index 683f4f3082bf8..121ed798ad5b9 100644
--- a/docs/pages/admin-guides/infrastructure-as-code/terraform-provider/dedicated-server.mdx
+++ b/docs/pages/admin-guides/infrastructure-as-code/terraform-provider/dedicated-server.mdx
@@ -35,8 +35,7 @@ Terraform provider. The daemon stores its identity on the disk and refresh the t
- A Linux host that you wish to run the Teleport Terraform provider onto.
-- A Linux user on that host that you wish Terraform and `tbot` to run as. In the guide,
- we will use for this.
+- A Linux user on that host that you wish Terraform and `tbot` to run as.
## Step 1/4. Install `tbot` on your server
diff --git a/docs/pages/reference/operator-resources/resources.teleport.dev_roles.mdx b/docs/pages/reference/operator-resources/resources.teleport.dev_roles.mdx
index 7a14c601ab10c..ed405c4443473 100644
--- a/docs/pages/reference/operator-resources/resources.teleport.dev_roles.mdx
+++ b/docs/pages/reference/operator-resources/resources.teleport.dev_roles.mdx
@@ -74,6 +74,8 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|windows_desktop_labels|object|WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.|
|windows_desktop_labels_expression|string|WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.|
|windows_desktop_logins|[]string|WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.|
+|workload_identity_labels|object|WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.|
+|workload_identity_labels_expression|string|WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.|
### spec.allow.account_assignments items
@@ -253,6 +255,8 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|windows_desktop_labels|object|WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.|
|windows_desktop_labels_expression|string|WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.|
|windows_desktop_logins|[]string|WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.|
+|workload_identity_labels|object|WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.|
+|workload_identity_labels_expression|string|WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.|
### spec.deny.account_assignments items
@@ -535,6 +539,8 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|windows_desktop_labels|object|WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.|
|windows_desktop_labels_expression|string|WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.|
|windows_desktop_logins|[]string|WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.|
+|workload_identity_labels|object|WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.|
+|workload_identity_labels_expression|string|WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.|
### spec.allow.account_assignments items
@@ -714,6 +720,8 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|windows_desktop_labels|object|WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.|
|windows_desktop_labels_expression|string|WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.|
|windows_desktop_logins|[]string|WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.|
+|workload_identity_labels|object|WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.|
+|workload_identity_labels_expression|string|WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.|
### spec.deny.account_assignments items
diff --git a/docs/pages/reference/operator-resources/resources.teleport.dev_rolesv6.mdx b/docs/pages/reference/operator-resources/resources.teleport.dev_rolesv6.mdx
index 5f6344d85a1c8..be0ef826e851f 100644
--- a/docs/pages/reference/operator-resources/resources.teleport.dev_rolesv6.mdx
+++ b/docs/pages/reference/operator-resources/resources.teleport.dev_rolesv6.mdx
@@ -74,6 +74,8 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|windows_desktop_labels|object|WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.|
|windows_desktop_labels_expression|string|WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.|
|windows_desktop_logins|[]string|WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.|
+|workload_identity_labels|object|WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.|
+|workload_identity_labels_expression|string|WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.|
### spec.allow.account_assignments items
@@ -253,6 +255,8 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|windows_desktop_labels|object|WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.|
|windows_desktop_labels_expression|string|WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.|
|windows_desktop_logins|[]string|WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.|
+|workload_identity_labels|object|WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.|
+|workload_identity_labels_expression|string|WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.|
### spec.deny.account_assignments items
diff --git a/docs/pages/reference/operator-resources/resources.teleport.dev_rolesv7.mdx b/docs/pages/reference/operator-resources/resources.teleport.dev_rolesv7.mdx
index 311ee13440390..f2f32d32f06f3 100644
--- a/docs/pages/reference/operator-resources/resources.teleport.dev_rolesv7.mdx
+++ b/docs/pages/reference/operator-resources/resources.teleport.dev_rolesv7.mdx
@@ -74,6 +74,8 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|windows_desktop_labels|object|WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.|
|windows_desktop_labels_expression|string|WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.|
|windows_desktop_logins|[]string|WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.|
+|workload_identity_labels|object|WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.|
+|workload_identity_labels_expression|string|WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.|
### spec.allow.account_assignments items
@@ -253,6 +255,8 @@ resource, which you can apply after installing the Teleport Kubernetes operator.
|windows_desktop_labels|object|WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.|
|windows_desktop_labels_expression|string|WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.|
|windows_desktop_logins|[]string|WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.|
+|workload_identity_labels|object|WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.|
+|workload_identity_labels_expression|string|WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.|
### spec.deny.account_assignments items
diff --git a/docs/pages/reference/terraform-provider/data-sources/role.mdx b/docs/pages/reference/terraform-provider/data-sources/role.mdx
index 110330e0dc01d..c79cebff80852 100644
--- a/docs/pages/reference/terraform-provider/data-sources/role.mdx
+++ b/docs/pages/reference/terraform-provider/data-sources/role.mdx
@@ -89,6 +89,8 @@ Optional:
- `windows_desktop_labels` (Map of List of String) WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.
- `windows_desktop_labels_expression` (String) WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.
- `windows_desktop_logins` (List of String) WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.
+- `workload_identity_labels` (Map of List of String) WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.
+- `workload_identity_labels_expression` (String) WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.
### Nested Schema for `spec.allow.account_assignments`
@@ -285,6 +287,8 @@ Optional:
- `windows_desktop_labels` (Map of List of String) WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.
- `windows_desktop_labels_expression` (String) WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.
- `windows_desktop_logins` (List of String) WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.
+- `workload_identity_labels` (Map of List of String) WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.
+- `workload_identity_labels_expression` (String) WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.
### Nested Schema for `spec.deny.account_assignments`
diff --git a/docs/pages/reference/terraform-provider/resources/role.mdx b/docs/pages/reference/terraform-provider/resources/role.mdx
index 5778c9924d832..3d573fa65646b 100644
--- a/docs/pages/reference/terraform-provider/resources/role.mdx
+++ b/docs/pages/reference/terraform-provider/resources/role.mdx
@@ -143,6 +143,8 @@ Optional:
- `windows_desktop_labels` (Map of List of String) WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.
- `windows_desktop_labels_expression` (String) WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.
- `windows_desktop_logins` (List of String) WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.
+- `workload_identity_labels` (Map of List of String) WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.
+- `workload_identity_labels_expression` (String) WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.
### Nested Schema for `spec.allow.account_assignments`
@@ -339,6 +341,8 @@ Optional:
- `windows_desktop_labels` (Map of List of String) WindowsDesktopLabels are used in the RBAC system to allow/deny access to Windows desktops.
- `windows_desktop_labels_expression` (String) WindowsDesktopLabelsExpression is a predicate expression used to allow/deny access to Windows desktops.
- `windows_desktop_logins` (List of String) WindowsDesktopLogins is a list of desktop login names allowed/denied for Windows desktops.
+- `workload_identity_labels` (Map of List of String) WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.
+- `workload_identity_labels_expression` (String) WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.
### Nested Schema for `spec.deny.account_assignments`
diff --git a/e b/e
index 6ddf1da69dcc9..e58eb7edbe80d 160000
--- a/e
+++ b/e
@@ -1 +1 @@
-Subproject commit 6ddf1da69dcc9217eea30dd793c6b264ea59768d
+Subproject commit e58eb7edbe80d991121b58cd35cc959b492406a5
diff --git a/examples/access-plugin-minimal/go.mod b/examples/access-plugin-minimal/go.mod
index 6214f88ce768c..85aee3c5a99da 100644
--- a/examples/access-plugin-minimal/go.mod
+++ b/examples/access-plugin-minimal/go.mod
@@ -46,13 +46,13 @@ require (
go.opentelemetry.io/otel/sdk v1.22.0 // indirect
go.opentelemetry.io/otel/trace v1.22.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.22.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/oauth2 v0.15.0 // indirect
- golang.org/x/sys v0.19.0 // indirect
- golang.org/x/term v0.19.0 // indirect
- golang.org/x/text v0.14.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
diff --git a/examples/access-plugin-minimal/go.sum b/examples/access-plugin-minimal/go.sum
index 1e47f25aebafb..fe8f19d63479a 100644
--- a/examples/access-plugin-minimal/go.sum
+++ b/examples/access-plugin-minimal/go.sum
@@ -176,8 +176,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb h1:mIKbk8weKhSeLH2GmUTrvx8CjkyJmnU1wFmg59CUjFA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
@@ -217,8 +217,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
-golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -232,22 +232,22 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
-golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
-golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
diff --git a/examples/api-sync-roles/go.mod b/examples/api-sync-roles/go.mod
index 5027109379401..e4134f2934472 100644
--- a/examples/api-sync-roles/go.mod
+++ b/examples/api-sync-roles/go.mod
@@ -57,13 +57,13 @@ require (
go.opentelemetry.io/otel/sdk v1.22.0 // indirect
go.opentelemetry.io/otel/trace v1.22.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.22.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/oauth2 v0.15.0 // indirect
- golang.org/x/sys v0.19.0 // indirect
- golang.org/x/term v0.19.0 // indirect
- golang.org/x/text v0.14.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
diff --git a/examples/api-sync-roles/go.sum b/examples/api-sync-roles/go.sum
index 52b2807234af8..be4b25422f0cd 100644
--- a/examples/api-sync-roles/go.sum
+++ b/examples/api-sync-roles/go.sum
@@ -208,8 +208,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb h1:mIKbk8weKhSeLH2GmUTrvx8CjkyJmnU1wFmg59CUjFA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
@@ -261,22 +261,22 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
-golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
-golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44=
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -289,8 +289,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
-golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_roles.yaml b/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_roles.yaml
index 1cafc3ae4534a..9e3a0f46e9334 100644
--- a/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_roles.yaml
+++ b/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_roles.yaml
@@ -607,6 +607,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
deny:
description: Deny is the set of conditions evaluated to deny access.
@@ -1184,6 +1195,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
options:
description: Options is for OpenSSH options like agent forwarding.
@@ -2058,6 +2080,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
deny:
description: Deny is the set of conditions evaluated to deny access.
@@ -2635,6 +2668,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
options:
description: Options is for OpenSSH options like agent forwarding.
diff --git a/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_rolesv6.yaml b/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_rolesv6.yaml
index 652c82fc05f7d..5e1ff2a359184 100644
--- a/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_rolesv6.yaml
+++ b/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_rolesv6.yaml
@@ -610,6 +610,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
deny:
description: Deny is the set of conditions evaluated to deny access.
@@ -1187,6 +1198,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
options:
description: Options is for OpenSSH options like agent forwarding.
diff --git a/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_rolesv7.yaml b/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_rolesv7.yaml
index 53f89036374f4..fb682402d11e3 100644
--- a/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_rolesv7.yaml
+++ b/examples/chart/teleport-cluster/charts/teleport-operator/operator-crds/resources.teleport.dev_rolesv7.yaml
@@ -610,6 +610,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
deny:
description: Deny is the set of conditions evaluated to deny access.
@@ -1187,6 +1198,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
options:
description: Options is for OpenSSH options like agent forwarding.
diff --git a/examples/desktop-registration/go.mod b/examples/desktop-registration/go.mod
index a7633a03340aa..5da92f124caa3 100644
--- a/examples/desktop-registration/go.mod
+++ b/examples/desktop-registration/go.mod
@@ -36,12 +36,12 @@ require (
go.opentelemetry.io/otel/sdk v1.22.0 // indirect
go.opentelemetry.io/otel/trace v1.22.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.22.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb // indirect
golang.org/x/net v0.24.0 // indirect
- golang.org/x/sys v0.19.0 // indirect
- golang.org/x/term v0.19.0 // indirect
- golang.org/x/text v0.14.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/grpc v1.61.1 // indirect
diff --git a/examples/desktop-registration/go.sum b/examples/desktop-registration/go.sum
index 36a788107e189..0b5eedd0047a0 100644
--- a/examples/desktop-registration/go.sum
+++ b/examples/desktop-registration/go.sum
@@ -159,8 +159,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb h1:mIKbk8weKhSeLH2GmUTrvx8CjkyJmnU1wFmg59CUjFA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
@@ -212,21 +212,21 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
-golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
-golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
diff --git a/examples/go-client/go.mod b/examples/go-client/go.mod
index d51d7be223196..f843df505b16b 100644
--- a/examples/go-client/go.mod
+++ b/examples/go-client/go.mod
@@ -38,12 +38,12 @@ require (
go.opentelemetry.io/otel/sdk v1.22.0 // indirect
go.opentelemetry.io/otel/trace v1.22.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.22.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb // indirect
golang.org/x/net v0.24.0 // indirect
- golang.org/x/sys v0.19.0 // indirect
- golang.org/x/term v0.19.0 // indirect
- golang.org/x/text v0.14.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/grpc v1.61.1 // indirect
diff --git a/examples/go-client/go.sum b/examples/go-client/go.sum
index 36a788107e189..0b5eedd0047a0 100644
--- a/examples/go-client/go.sum
+++ b/examples/go-client/go.sum
@@ -159,8 +159,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb h1:mIKbk8weKhSeLH2GmUTrvx8CjkyJmnU1wFmg59CUjFA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
@@ -212,21 +212,21 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
-golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
-golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
diff --git a/examples/service-discovery-api-client/go.mod b/examples/service-discovery-api-client/go.mod
index 9d37ee90fba1d..5cfe290b880fb 100644
--- a/examples/service-discovery-api-client/go.mod
+++ b/examples/service-discovery-api-client/go.mod
@@ -53,15 +53,16 @@ require (
go.opentelemetry.io/otel/sdk v1.25.0 // indirect
go.opentelemetry.io/otel/trace v1.25.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
- golang.org/x/crypto v0.22.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb // indirect
- golang.org/x/mod v0.11.0 // indirect
- golang.org/x/net v0.24.0 // indirect
- golang.org/x/sys v0.19.0 // indirect
- golang.org/x/term v0.19.0 // indirect
- golang.org/x/text v0.14.0 // indirect
+ golang.org/x/mod v0.17.0 // indirect
+ golang.org/x/net v0.25.0 // indirect
+ golang.org/x/sync v0.10.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
golang.org/x/time v0.3.0 // indirect
- golang.org/x/tools v0.6.0 // indirect
+ golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect
google.golang.org/protobuf v1.33.0 // indirect
diff --git a/examples/service-discovery-api-client/go.sum b/examples/service-discovery-api-client/go.sum
index 22bbf60678294..2511aa0d9ec69 100644
--- a/examples/service-discovery-api-client/go.sum
+++ b/examples/service-discovery-api-client/go.sum
@@ -186,8 +186,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb h1:mIKbk8weKhSeLH2GmUTrvx8CjkyJmnU1wFmg59CUjFA=
golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
@@ -198,8 +198,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU=
-golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
+golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -214,8 +214,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
-golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
+golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
+golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ=
@@ -228,8 +228,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
-golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -244,21 +244,21 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
-golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
-golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -271,8 +271,9 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/integration/helpers/instance.go b/integration/helpers/instance.go
index cdff68ef04e2a..b132b027b3bef 100644
--- a/integration/helpers/instance.go
+++ b/integration/helpers/instance.go
@@ -448,6 +448,7 @@ func (i *TeleInstance) Create(t *testing.T, trustedSecrets []*InstanceSecrets, e
tconf.Proxy.DisableWebInterface = true
tconf.CircuitBreakerConfig = breaker.NoopBreakerConfig()
tconf.InstanceMetadataClient = imds.NewDisabledIMDSClient()
+ tconf.DebugService.Enabled = false
return i.CreateEx(t, trustedSecrets, tconf)
}
@@ -473,6 +474,7 @@ func (i *TeleInstance) GenerateConfig(t *testing.T, trustedSecrets []*InstanceSe
tconf.Auth.ClusterName, err = services.NewClusterNameWithRandomID(types.ClusterNameSpecV2{
ClusterName: i.Secrets.SiteName,
})
+ tconf.DebugService.Enabled = false
if err != nil {
return nil, trace.Wrap(err)
}
@@ -741,6 +743,7 @@ func (i *TeleInstance) StartNodeWithTargetPort(tconf *servicecfg.Config, authPor
}
tconf.Auth.Enabled = false
tconf.Proxy.Enabled = false
+ tconf.DebugService.Enabled = false
// Create a new Teleport process and add it to the list of nodes that
// compose this "cluster".
@@ -783,6 +786,7 @@ func (i *TeleInstance) StartApp(conf *servicecfg.Config) (*service.TeleportProce
conf.Testing.UploadEventsC = i.UploadEventsC
conf.Auth.Enabled = false
conf.Proxy.Enabled = false
+ conf.DebugService.Enabled = false
// Create a new Teleport process and add it to the list of nodes that
// compose this "cluster".
@@ -833,6 +837,7 @@ func (i *TeleInstance) StartApps(configs []*servicecfg.Config) ([]*service.Telep
cfg.Testing.UploadEventsC = i.UploadEventsC
cfg.Auth.Enabled = false
cfg.Proxy.Enabled = false
+ cfg.DebugService.Enabled = false
// Create a new Teleport process and add it to the list of nodes that
// compose this "cluster".
@@ -898,6 +903,7 @@ func (i *TeleInstance) StartDatabase(conf *servicecfg.Config) (*service.Teleport
conf.Proxy.Enabled = false
conf.Apps.Enabled = false
conf.SSH.Enabled = false
+ conf.DebugService.Enabled = false
// Create a new Teleport process and add it to the list of nodes that
// compose this "cluster".
@@ -960,6 +966,7 @@ func (i *TeleInstance) StartKube(t *testing.T, conf *servicecfg.Config, clusterN
conf.Apps.Enabled = false
conf.SSH.Enabled = false
conf.Databases.Enabled = false
+ conf.DebugService.Enabled = false
conf.Kube.KubeconfigPath = filepath.Join(dataDir, "kube_config")
if err := EnableKube(t, conf, clusterName); err != nil {
@@ -1035,6 +1042,7 @@ func (i *TeleInstance) StartNodeAndProxy(t *testing.T, name string) (sshPort, we
}
tconf.CircuitBreakerConfig = breaker.NoopBreakerConfig()
tconf.InstanceMetadataClient = imds.NewDisabledIMDSClient()
+ tconf.DebugService.Enabled = false
// Create a new Teleport process and add it to the list of nodes that
// compose this "cluster".
@@ -1128,6 +1136,7 @@ func (i *TeleInstance) StartProxy(cfg ProxyConfig, opts ...Option) (reversetunne
tconf.Proxy.DisableALPNSNIListener = cfg.DisableALPNSNIListener
tconf.CircuitBreakerConfig = breaker.NoopBreakerConfig()
tconf.InstanceMetadataClient = imds.NewDisabledIMDSClient()
+ tconf.DebugService.Enabled = false
tconf.FileDescriptors = cfg.FileDescriptors
// apply options
for _, o := range opts {
diff --git a/integration/integration_test.go b/integration/integration_test.go
index 533068269755d..cbc138b498f4f 100644
--- a/integration/integration_test.go
+++ b/integration/integration_test.go
@@ -4307,12 +4307,18 @@ func testDiscoveryNode(t *testing.T, suite *integrationTestSuite) {
helpers.WaitForActiveTunnelConnections(t, main.Tunnel, helpers.Site, 1)
helpers.WaitForActiveTunnelConnections(t, proxyTunnel, helpers.Site, 1)
+ // Wait for the nodes to be visible to both Proxy instances.
+ require.NoError(t, main.WaitForNodeCount(ctx, helpers.Site, 1))
+ instance := helpers.TeleInstance{Tunnel: proxyTunnel}
+ require.NoError(t, instance.WaitForNodeCount(ctx, helpers.Site, 1))
+
// Execute the connection via first proxy.
cfg := helpers.ClientConfig{
Login: suite.Me.Username,
Cluster: helpers.Site,
Host: "cluster-main-node",
}
+
output, err := runCommand(t, main, []string{"echo", "hello world"}, cfg, 1)
require.NoError(t, err)
require.Equal(t, "hello world\n", output)
diff --git a/integration/proxy/proxy_test.go b/integration/proxy/proxy_test.go
index 0dcf986d70109..db28b969020d6 100644
--- a/integration/proxy/proxy_test.go
+++ b/integration/proxy/proxy_test.go
@@ -1236,7 +1236,7 @@ func TestALPNSNIProxyDatabaseAccess(t *testing.T) {
// advance the fake clock and verify that the local proxy thinks its cert expired.
fakeClock.Advance(time.Hour * 48)
- err = lp.CheckDBCert(routeToDatabase)
+ err = lp.CheckDBCert(context.Background(), routeToDatabase)
require.Error(t, err)
var x509Err x509.CertificateInvalidError
require.ErrorAs(t, err, &x509Err)
diff --git a/integrations/operator/config/crd/bases/resources.teleport.dev_roles.yaml b/integrations/operator/config/crd/bases/resources.teleport.dev_roles.yaml
index 1cafc3ae4534a..9e3a0f46e9334 100644
--- a/integrations/operator/config/crd/bases/resources.teleport.dev_roles.yaml
+++ b/integrations/operator/config/crd/bases/resources.teleport.dev_roles.yaml
@@ -607,6 +607,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
deny:
description: Deny is the set of conditions evaluated to deny access.
@@ -1184,6 +1195,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
options:
description: Options is for OpenSSH options like agent forwarding.
@@ -2058,6 +2080,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
deny:
description: Deny is the set of conditions evaluated to deny access.
@@ -2635,6 +2668,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
options:
description: Options is for OpenSSH options like agent forwarding.
diff --git a/integrations/operator/config/crd/bases/resources.teleport.dev_rolesv6.yaml b/integrations/operator/config/crd/bases/resources.teleport.dev_rolesv6.yaml
index 652c82fc05f7d..5e1ff2a359184 100644
--- a/integrations/operator/config/crd/bases/resources.teleport.dev_rolesv6.yaml
+++ b/integrations/operator/config/crd/bases/resources.teleport.dev_rolesv6.yaml
@@ -610,6 +610,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
deny:
description: Deny is the set of conditions evaluated to deny access.
@@ -1187,6 +1198,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
options:
description: Options is for OpenSSH options like agent forwarding.
diff --git a/integrations/operator/config/crd/bases/resources.teleport.dev_rolesv7.yaml b/integrations/operator/config/crd/bases/resources.teleport.dev_rolesv7.yaml
index 53f89036374f4..fb682402d11e3 100644
--- a/integrations/operator/config/crd/bases/resources.teleport.dev_rolesv7.yaml
+++ b/integrations/operator/config/crd/bases/resources.teleport.dev_rolesv7.yaml
@@ -610,6 +610,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
deny:
description: Deny is the set of conditions evaluated to deny access.
@@ -1187,6 +1198,17 @@ spec:
type: string
nullable: true
type: array
+ workload_identity_labels:
+ additionalProperties:
+ x-kubernetes-preserve-unknown-fields: true
+ description: WorkloadIdentityLabels controls whether or not specific
+ WorkloadIdentity resources can be invoked. Further authorization
+ controls exist on the WorkloadIdentity resource itself.
+ type: object
+ workload_identity_labels_expression:
+ description: WorkloadIdentityLabelsExpression is a predicate expression
+ used to allow/deny access to issuing a WorkloadIdentity.
+ type: string
type: object
options:
description: Options is for OpenSSH options like agent forwarding.
diff --git a/integrations/terraform/tfschema/types_terraform.go b/integrations/terraform/tfschema/types_terraform.go
index baadbc04b34f3..dcc27576c8159 100644
--- a/integrations/terraform/tfschema/types_terraform.go
+++ b/integrations/terraform/tfschema/types_terraform.go
@@ -2075,6 +2075,15 @@ func GenSchemaRoleV6(ctx context.Context) (github_com_hashicorp_terraform_plugin
Optional: true,
Type: github_com_hashicorp_terraform_plugin_framework_types.ListType{ElemType: github_com_hashicorp_terraform_plugin_framework_types.StringType},
},
+ "workload_identity_labels": GenSchemaLabels(ctx, github_com_hashicorp_terraform_plugin_framework_tfsdk.Attribute{
+ Description: "WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.",
+ Optional: true,
+ }),
+ "workload_identity_labels_expression": {
+ Description: "WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.",
+ Optional: true,
+ Type: github_com_hashicorp_terraform_plugin_framework_types.StringType,
+ },
}),
Description: "Allow is the set of conditions evaluated to grant access.",
Optional: true,
@@ -2551,6 +2560,15 @@ func GenSchemaRoleV6(ctx context.Context) (github_com_hashicorp_terraform_plugin
Optional: true,
Type: github_com_hashicorp_terraform_plugin_framework_types.ListType{ElemType: github_com_hashicorp_terraform_plugin_framework_types.StringType},
},
+ "workload_identity_labels": GenSchemaLabels(ctx, github_com_hashicorp_terraform_plugin_framework_tfsdk.Attribute{
+ Description: "WorkloadIdentityLabels controls whether or not specific WorkloadIdentity resources can be invoked. Further authorization controls exist on the WorkloadIdentity resource itself.",
+ Optional: true,
+ }),
+ "workload_identity_labels_expression": {
+ Description: "WorkloadIdentityLabelsExpression is a predicate expression used to allow/deny access to issuing a WorkloadIdentity.",
+ Optional: true,
+ Type: github_com_hashicorp_terraform_plugin_framework_types.StringType,
+ },
}),
Description: "Deny is the set of conditions evaluated to deny access. Deny takes priority over allow.",
Optional: true,
@@ -19152,6 +19170,30 @@ func CopyRoleV6FromTerraform(_ context.Context, tf github_com_hashicorp_terrafor
}
}
}
+ {
+ a, ok := tf.Attrs["workload_identity_labels"]
+ if !ok {
+ diags.Append(attrReadMissingDiag{"RoleV6.Spec.Allow.WorkloadIdentityLabels"})
+ }
+ CopyFromLabels(diags, a, &obj.WorkloadIdentityLabels)
+ }
+ {
+ a, ok := tf.Attrs["workload_identity_labels_expression"]
+ if !ok {
+ diags.Append(attrReadMissingDiag{"RoleV6.Spec.Allow.WorkloadIdentityLabelsExpression"})
+ } else {
+ v, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.String)
+ if !ok {
+ diags.Append(attrReadConversionFailureDiag{"RoleV6.Spec.Allow.WorkloadIdentityLabelsExpression", "github.com/hashicorp/terraform-plugin-framework/types.String"})
+ } else {
+ var t string
+ if !v.Null && !v.Unknown {
+ t = string(v.Value)
+ }
+ obj.WorkloadIdentityLabelsExpression = t
+ }
+ }
+ }
}
}
}
@@ -21156,6 +21198,30 @@ func CopyRoleV6FromTerraform(_ context.Context, tf github_com_hashicorp_terrafor
}
}
}
+ {
+ a, ok := tf.Attrs["workload_identity_labels"]
+ if !ok {
+ diags.Append(attrReadMissingDiag{"RoleV6.Spec.Deny.WorkloadIdentityLabels"})
+ }
+ CopyFromLabels(diags, a, &obj.WorkloadIdentityLabels)
+ }
+ {
+ a, ok := tf.Attrs["workload_identity_labels_expression"]
+ if !ok {
+ diags.Append(attrReadMissingDiag{"RoleV6.Spec.Deny.WorkloadIdentityLabelsExpression"})
+ } else {
+ v, ok := a.(github_com_hashicorp_terraform_plugin_framework_types.String)
+ if !ok {
+ diags.Append(attrReadConversionFailureDiag{"RoleV6.Spec.Deny.WorkloadIdentityLabelsExpression", "github.com/hashicorp/terraform-plugin-framework/types.String"})
+ } else {
+ var t string
+ if !v.Null && !v.Unknown {
+ t = string(v.Value)
+ }
+ obj.WorkloadIdentityLabelsExpression = t
+ }
+ }
+ }
}
}
}
@@ -25943,6 +26009,37 @@ func CopyRoleV6ToTerraform(ctx context.Context, obj *github_com_gravitational_te
}
}
}
+ {
+ t, ok := tf.AttrTypes["workload_identity_labels"]
+ if !ok {
+ diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Allow.WorkloadIdentityLabels"})
+ } else {
+ v := CopyToLabels(diags, obj.WorkloadIdentityLabels, t, tf.Attrs["workload_identity_labels"])
+ tf.Attrs["workload_identity_labels"] = v
+ }
+ }
+ {
+ t, ok := tf.AttrTypes["workload_identity_labels_expression"]
+ if !ok {
+ diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Allow.WorkloadIdentityLabelsExpression"})
+ } else {
+ v, ok := tf.Attrs["workload_identity_labels_expression"].(github_com_hashicorp_terraform_plugin_framework_types.String)
+ if !ok {
+ i, err := t.ValueFromTerraform(ctx, github_com_hashicorp_terraform_plugin_go_tftypes.NewValue(t.TerraformType(ctx), nil))
+ if err != nil {
+ diags.Append(attrWriteGeneralError{"RoleV6.Spec.Allow.WorkloadIdentityLabelsExpression", err})
+ }
+ v, ok = i.(github_com_hashicorp_terraform_plugin_framework_types.String)
+ if !ok {
+ diags.Append(attrWriteConversionFailureDiag{"RoleV6.Spec.Allow.WorkloadIdentityLabelsExpression", "github.com/hashicorp/terraform-plugin-framework/types.String"})
+ }
+ v.Null = string(obj.WorkloadIdentityLabelsExpression) == ""
+ }
+ v.Value = string(obj.WorkloadIdentityLabelsExpression)
+ v.Unknown = false
+ tf.Attrs["workload_identity_labels_expression"] = v
+ }
+ }
}
v.Unknown = false
tf.Attrs["allow"] = v
@@ -29450,6 +29547,37 @@ func CopyRoleV6ToTerraform(ctx context.Context, obj *github_com_gravitational_te
}
}
}
+ {
+ t, ok := tf.AttrTypes["workload_identity_labels"]
+ if !ok {
+ diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Deny.WorkloadIdentityLabels"})
+ } else {
+ v := CopyToLabels(diags, obj.WorkloadIdentityLabels, t, tf.Attrs["workload_identity_labels"])
+ tf.Attrs["workload_identity_labels"] = v
+ }
+ }
+ {
+ t, ok := tf.AttrTypes["workload_identity_labels_expression"]
+ if !ok {
+ diags.Append(attrWriteMissingDiag{"RoleV6.Spec.Deny.WorkloadIdentityLabelsExpression"})
+ } else {
+ v, ok := tf.Attrs["workload_identity_labels_expression"].(github_com_hashicorp_terraform_plugin_framework_types.String)
+ if !ok {
+ i, err := t.ValueFromTerraform(ctx, github_com_hashicorp_terraform_plugin_go_tftypes.NewValue(t.TerraformType(ctx), nil))
+ if err != nil {
+ diags.Append(attrWriteGeneralError{"RoleV6.Spec.Deny.WorkloadIdentityLabelsExpression", err})
+ }
+ v, ok = i.(github_com_hashicorp_terraform_plugin_framework_types.String)
+ if !ok {
+ diags.Append(attrWriteConversionFailureDiag{"RoleV6.Spec.Deny.WorkloadIdentityLabelsExpression", "github.com/hashicorp/terraform-plugin-framework/types.String"})
+ }
+ v.Null = string(obj.WorkloadIdentityLabelsExpression) == ""
+ }
+ v.Value = string(obj.WorkloadIdentityLabelsExpression)
+ v.Unknown = false
+ tf.Attrs["workload_identity_labels_expression"] = v
+ }
+ }
}
v.Unknown = false
tf.Attrs["deny"] = v
diff --git a/lib/auth/auth.go b/lib/auth/auth.go
index 5f21d3b5884ec..befe2993f38d2 100644
--- a/lib/auth/auth.go
+++ b/lib/auth/auth.go
@@ -5130,47 +5130,11 @@ func (a *Server) CreateAccessRequestV2(ctx context.Context, req types.AccessRequ
}
// Look for user groups and associated applications to the request.
- requestedResourceIDs := req.GetRequestedResourceIDs()
- var additionalResources []types.ResourceID
-
- var userGroups []types.ResourceID
- existingApps := map[string]struct{}{}
- for _, resource := range requestedResourceIDs {
- switch resource.Kind {
- case types.KindApp:
- existingApps[resource.Name] = struct{}{}
- case types.KindUserGroup:
- userGroups = append(userGroups, resource)
- }
- }
-
- for _, resource := range userGroups {
- if resource.Kind != types.KindUserGroup {
- continue
- }
-
- userGroup, err := a.GetUserGroup(ctx, resource.Name)
- if err != nil {
- return nil, trace.Wrap(err)
- }
-
- for _, app := range userGroup.GetApplications() {
- // Only add to the request if we haven't already added it.
- if _, ok := existingApps[app]; !ok {
- additionalResources = append(additionalResources, types.ResourceID{
- ClusterName: resource.ClusterName,
- Kind: types.KindApp,
- Name: app,
- })
- existingApps[app] = struct{}{}
- }
- }
- }
-
- if len(additionalResources) > 0 {
- requestedResourceIDs = append(requestedResourceIDs, additionalResources...)
- req.SetRequestedResourceIDs(requestedResourceIDs)
+ requestedResourceIDs, err := a.appendImplicitlyRequiredResources(ctx, req.GetRequestedResourceIDs())
+ if err != nil {
+ return nil, trace.Wrap(err, "adding additional implicitly required resources")
}
+ req.SetRequestedResourceIDs(requestedResourceIDs)
if req.GetDryRun() {
_, promotions := a.generateAccessRequestPromotions(ctx, req)
@@ -5200,7 +5164,7 @@ func (a *Server) CreateAccessRequestV2(ctx context.Context, req types.AccessRequ
}
}
- err := a.emitter.EmitAuditEvent(a.closeCtx, &apievents.AccessRequestCreate{
+ err = a.emitter.EmitAuditEvent(a.closeCtx, &apievents.AccessRequestCreate{
Metadata: apievents.Metadata{
Type: events.AccessRequestCreateEvent,
Code: events.AccessRequestCreateCode,
@@ -5282,6 +5246,69 @@ func (a *Server) CreateAccessRequestV2(ctx context.Context, req types.AccessRequ
return req, nil
}
+// appendImplicitlyRequiredResources examines the set of requested resources and adds
+// any extra resources that are implicitly required by the request.
+func (a *Server) appendImplicitlyRequiredResources(ctx context.Context, resources []types.ResourceID) ([]types.ResourceID, error) {
+ addedApps := utils.NewSet[string]()
+ var userGroups []types.ResourceID
+ var accountAssignments []types.ResourceID
+
+ for _, resource := range resources {
+ switch resource.Kind {
+ case types.KindApp:
+ addedApps.Add(resource.Name)
+ case types.KindUserGroup:
+ userGroups = append(userGroups, resource)
+ case types.KindIdentityCenterAccountAssignment:
+ accountAssignments = append(accountAssignments, resource)
+ }
+ }
+
+ for _, resource := range userGroups {
+ userGroup, err := a.GetUserGroup(ctx, resource.Name)
+ if err != nil {
+ return nil, trace.Wrap(err)
+ }
+
+ for _, app := range userGroup.GetApplications() {
+ // Only add to the request if we haven't already added it.
+ if !addedApps.Contains(app) {
+ resources = append(resources, types.ResourceID{
+ ClusterName: resource.ClusterName,
+ Kind: types.KindApp,
+ Name: app,
+ })
+ addedApps.Add(app)
+ }
+ }
+ }
+
+ icAccounts := utils.NewSet[string]()
+ for _, resource := range accountAssignments {
+ // The UI needs access to the account associated with an Account Assignment
+ // in order to display the enclosing Account, otherwise the user will not
+ // be able to see their assigned permission sets.
+ assignmentID := services.IdentityCenterAccountAssignmentID(resource.Name)
+ asmt, err := a.Services.IdentityCenter.GetAccountAssignment(ctx, assignmentID)
+ if err != nil {
+ return nil, trace.Wrap(err, "fetching identity center account assignment")
+ }
+
+ if icAccounts.Contains(asmt.GetSpec().GetAccountId()) {
+ continue
+ }
+
+ resources = append(resources, types.ResourceID{
+ ClusterName: resource.ClusterName,
+ Kind: types.KindIdentityCenterAccount,
+ Name: asmt.GetSpec().GetAccountId(),
+ })
+ icAccounts.Add(asmt.GetSpec().GetAccountId())
+ }
+
+ return resources, nil
+}
+
// generateAccessRequestPromotions will return potential access list promotions for an access request. On error, this function will log
// the error and return whatever it has. The caller is expected to deal with the possibility of a nil promotions object.
func (a *Server) generateAccessRequestPromotions(ctx context.Context, req types.AccessRequest) (types.AccessRequest, *types.AccessRequestAllowedPromotions) {
diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go
index fa4deaeab7c51..e5fdaa9dab8ce 100644
--- a/lib/auth/auth_with_roles.go
+++ b/lib/auth/auth_with_roles.go
@@ -40,6 +40,8 @@ import (
"github.com/gravitational/teleport/api/constants"
apidefaults "github.com/gravitational/teleport/api/defaults"
auditlogpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/auditlog/v1"
+ headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1"
+ identitycenterv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/identitycenter/v1"
mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1"
"github.com/gravitational/teleport/api/internalutils/stream"
"github.com/gravitational/teleport/api/metadata"
@@ -1272,7 +1274,7 @@ func (c *resourceAccess) checkAccess(resource types.ResourceWithLabels, filter s
return false, nil
}
- // check access normally if base checker doesnt exist
+ // check access normally if base checker doesn't exist
if c.baseAuthChecker == nil {
if err := c.accessChecker.CanAccess(resource); err != nil {
if trace.IsAccessDenied(err) {
@@ -1474,6 +1476,16 @@ func (a *ServerWithRoles) ListUnifiedResources(ctx context.Context, req *proto.L
}
r.Logins = logins
} else if d := r.GetAppServer(); d != nil {
+ // Apps representing an Identity Center Account have a collection of Permission Sets
+ // that can be thought of as individually-addressable sub-resources. To present a consitent
+ // view of the account we check access for each Permission Set, filter out those that have
+ // no access and treat the whole app as requiring an access request if _any_ of the contained
+ // permission sets require one.
+ if err := a.filterICPermissionSets(r, d.GetApp(), resourceAccess); err != nil {
+ log.WithError(err).WithField("resource", d.GetApp().GetName()).Warn("Unable to filter ")
+ continue
+ }
+
logins, err := checker.GetAllowedLoginsForResource(d.GetApp())
if err != nil {
log.WithError(err).WithField("resource", d.GetApp().GetName()).Warn("Unable to determine logins for app")
@@ -1490,6 +1502,56 @@ func (a *ServerWithRoles) ListUnifiedResources(ctx context.Context, req *proto.L
}, nil
}
+func (a *ServerWithRoles) filterICPermissionSets(r *proto.PaginatedResource, app types.Application, checker *resourceAccess) error {
+ appV3, ok := app.(*types.AppV3)
+ if !ok {
+ return trace.BadParameter("resource must be an app")
+ }
+
+ pss := appV3.Spec.IdentityCenter.GetPermissionSets()
+ if pss == nil {
+ return nil
+ }
+
+ assignment := services.IdentityCenterAccountAssignment{
+ AccountAssignment: &identitycenterv1.AccountAssignment{
+ Kind: types.KindIdentityCenterAccountAssignment,
+ Version: types.V1,
+ Metadata: &headerv1.Metadata{},
+ Spec: &identitycenterv1.AccountAssignmentSpec{
+ AccountId: appV3.GetName(),
+ PermissionSet: &identitycenterv1.PermissionSetInfo{},
+ },
+ },
+ }
+ permissionSetQuery := assignment.Spec.PermissionSet
+ checkable := types.Resource153ToResourceWithLabels(assignment)
+
+ var output []*types.IdentityCenterPermissionSet
+ for _, ps := range pss {
+ assignment.Metadata.Name = ps.AssignmentID
+ permissionSetQuery.Arn = ps.ARN
+
+ hasAccess, err := checker.checkAccess(checkable, services.MatchResourceFilter{
+ ResourceKind: types.KindIdentityCenterAccountAssignment,
+ })
+ if err != nil {
+ return trace.Wrap(err)
+ }
+
+ if !hasAccess {
+ continue
+ }
+ output = append(output, ps)
+ if _, requestable := checker.requestableMap[ps.AssignmentID]; requestable {
+ r.RequiresRequest = true
+ }
+ }
+ appV3.Spec.IdentityCenter.PermissionSets = output
+
+ return nil
+}
+
func (a *ServerWithRoles) GetNodes(ctx context.Context, namespace string) ([]types.Server, error) {
if err := a.actionNamespace(namespace, types.KindNode, types.VerbList); err != nil {
return nil, trace.Wrap(err)
@@ -1831,8 +1893,18 @@ func (r resourceChecker) CanAccess(resource types.Resource) error {
return r.CheckAccess(rr, state)
case types.Resource153Unwrapper:
- if checkable, ok := rr.(services.AccessCheckable); ok {
- return r.CheckAccess(checkable, state)
+ checkable, isCheckable := rr.(services.AccessCheckable)
+ if isCheckable {
+ switch unwrapped := rr.Unwrap().(type) {
+ case services.IdentityCenterAccount:
+ return r.CheckAccess(checkable, state, services.NewIdentityCenterAccountMatcher(unwrapped))
+
+ case services.IdentityCenterAccountAssignment:
+ return r.CheckAccess(checkable, state, services.NewIdentityCenterAccountAssignmentMatcher(unwrapped))
+
+ default:
+ return r.CheckAccess(checkable, state)
+ }
}
}
diff --git a/lib/auth/auth_with_roles_test.go b/lib/auth/auth_with_roles_test.go
index dc4ba4ee2e647..1576986648191 100644
--- a/lib/auth/auth_with_roles_test.go
+++ b/lib/auth/auth_with_roles_test.go
@@ -9628,3 +9628,206 @@ func TestRoleRequestReasonModeValidation(t *testing.T) {
})
}
}
+
+func testUserName(testName string) string {
+ return strings.ReplaceAll(testName, " ", "_")
+}
+
+func TestFilterIdentityCenterPermissionSets(t *testing.T) {
+ const (
+ allAccessRoleName = "all-access"
+ accountID = "1234567890"
+ permissionSetArnPrefix = "aws:awn:test:permission:set:"
+ )
+
+ // GIVEN a test cluster...
+ ctx := context.Background()
+ srv := newTestTLSServer(t)
+ s := newTestServerWithRoles(t, srv.AuthServer, types.RoleAdmin)
+
+ // GIVEN an Identity Center Account with some associated Permission Set
+ // resources
+ permissionSets := []*identitycenterv1.PermissionSetInfo{
+ {
+ Name: "PS One",
+ Arn: permissionSetArnPrefix + "one",
+ AssignmentId: accountID + "-" + "ps_one",
+ },
+ {
+ Name: "PS Two",
+ Arn: permissionSetArnPrefix + "two",
+ AssignmentId: accountID + "-" + "ps_two",
+ },
+ {
+ Name: "PS Three",
+ Arn: permissionSetArnPrefix + "ps_three",
+ AssignmentId: accountID + "-" + "ps_three",
+ },
+ }
+
+ _, err := s.authServer.CreateIdentityCenterAccount(ctx,
+ services.IdentityCenterAccount{
+ Account: &identitycenterv1.Account{
+ Kind: types.KindIdentityCenterAccount,
+ Version: types.V1,
+ Metadata: &headerv1.Metadata{
+ Name: accountID,
+ Labels: map[string]string{
+ types.OriginLabel: apicommon.OriginAWSIdentityCenter,
+ },
+ },
+ Spec: &identitycenterv1.AccountSpec{
+ Id: accountID,
+ Arn: "aws:arn:test:account",
+ Name: "Test Account",
+ Description: "An account for testing",
+ PermissionSetInfo: permissionSets,
+ },
+ },
+ })
+ require.NoError(t, err)
+
+ // GIVEN a role that allows access to all permission sets on the target
+ // Identity Center account
+ roleAccessAll, err := types.NewRole(allAccessRoleName, types.RoleSpecV6{
+ Allow: types.RoleConditions{
+ AccountAssignments: []types.IdentityCenterAccountAssignment{
+ {
+ Account: accountID,
+ PermissionSet: types.Wildcard,
+ },
+ },
+ },
+ })
+ require.NoError(t, err, "Constructing role should succeed")
+ _, err = srv.Auth().CreateRole(ctx, roleAccessAll)
+ require.NoError(t, err, "Cretaing role should succeed")
+
+ withRequesterRole := WithRoleMutator(func(role types.Role) {
+ r := role.(*types.RoleV6)
+ r.Spec.Allow.Request = &types.AccessRequestConditions{
+ SearchAsRoles: []string{allAccessRoleName},
+ }
+ })
+
+ // EXPECT that the IC Account has made it to the cache
+ inlineEventually(t,
+ func() bool {
+ testAssignments, _, err := srv.Auth().ListIdentityCenterAccounts(
+ ctx, 100, &pagination.PageRequestToken{})
+ require.NoError(t, err)
+ return len(testAssignments) == 1
+ },
+ 5*time.Second, 200*time.Millisecond,
+ "Target resource missing from cache")
+
+ testCases := []struct {
+ name string
+ roleModifiers []CreateUserAndRoleOption
+ includeRequestable bool
+ expectedPSs []*types.IdentityCenterPermissionSet
+ expectedRequireRequest require.BoolAssertionFunc
+ }{
+ {
+ name: "basic access",
+ roleModifiers: []CreateUserAndRoleOption{
+ withAccountAssignment(types.Allow, accountID, permissionSets[0].Arn),
+ withAccountAssignment(types.Allow, accountID, permissionSets[1].Arn),
+ },
+ expectedPSs: []*types.IdentityCenterPermissionSet{
+ paginatedAppPermissionSet(permissionSets[0]),
+ paginatedAppPermissionSet(permissionSets[1]),
+ },
+ expectedRequireRequest: require.False,
+ },
+ {
+ name: "ignore search as roles when disabled",
+ roleModifiers: []CreateUserAndRoleOption{
+ withAccountAssignment(types.Allow, accountID, permissionSets[1].Arn),
+ withRequesterRole,
+ },
+ includeRequestable: false,
+ expectedPSs: []*types.IdentityCenterPermissionSet{
+ paginatedAppPermissionSet(permissionSets[1]),
+ },
+ expectedRequireRequest: require.False,
+ },
+ {
+ name: "requestable access",
+ roleModifiers: []CreateUserAndRoleOption{
+ withAccountAssignment(types.Allow, accountID, permissionSets[1].Arn),
+ withRequesterRole,
+ },
+ includeRequestable: true,
+ expectedPSs: []*types.IdentityCenterPermissionSet{
+ paginatedAppPermissionSet(permissionSets[0]),
+ paginatedAppPermissionSet(permissionSets[1]),
+ paginatedAppPermissionSet(permissionSets[2]),
+ },
+ expectedRequireRequest: require.True,
+ },
+ {
+ name: "no access",
+ roleModifiers: []CreateUserAndRoleOption{
+ withAccountAssignment(types.Allow, accountID, "some-non-existent-ps"),
+ },
+ expectedRequireRequest: require.False,
+ },
+ }
+
+ for _, test := range testCases {
+ t.Run(test.name, func(t *testing.T) {
+ // GIVEN a user who has a role that allows a test-defined level of
+ // Identity Center access
+ user, _, err := CreateUserAndRole(srv.Auth(), testUserName(test.name),
+ nil, nil, test.roleModifiers...)
+ require.NoError(t, err)
+
+ // GIVEN an auth client using the above user
+ identity := TestUser(user.GetName())
+ clt, err := srv.NewClient(identity)
+ require.NoError(t, err)
+ t.Cleanup(func() { clt.Close() })
+
+ // WHEN I list the unified resources, with a filter specifically for
+ // the account resource defined above...
+ resp, err := clt.ListUnifiedResources(ctx, &proto.ListUnifiedResourcesRequest{
+ Kinds: []string{types.KindApp},
+ Labels: map[string]string{
+ types.OriginLabel: apicommon.OriginAWSIdentityCenter,
+ },
+ UseSearchAsRoles: test.includeRequestable,
+ IncludeRequestable: test.includeRequestable,
+ IncludeLogins: true,
+ SortBy: types.SortBy{IsDesc: true, Field: types.ResourceMetadataName},
+ })
+
+ // EXPECT that the listing succeeds and returns a single resource
+ require.NoError(t, err)
+ require.Len(t, resp.Resources, 1, "Must return exactly one resource")
+
+ // EXPECT that the contained resource has the test-defined value for
+ // the RequiresRequest flag
+ resource := resp.Resources[0]
+ test.expectedRequireRequest(t, resource.RequiresRequest)
+
+ // EXPECT that the returned resource is an App
+ appServer := resp.Resources[0].GetAppServer()
+ require.NotNil(t, appServer, "Expected resource to be an app")
+ app := appServer.GetApp()
+
+ // EXPECT that the app PermissionSets are filtered to the test-defined
+ // list
+ require.ElementsMatch(t,
+ test.expectedPSs, app.GetIdentityCenter().PermissionSets)
+ })
+ }
+}
+
+func paginatedAppPermissionSet(src *identitycenterv1.PermissionSetInfo) *types.IdentityCenterPermissionSet {
+ return &types.IdentityCenterPermissionSet{
+ ARN: src.Arn,
+ Name: src.Name,
+ AssignmentID: src.AssignmentId,
+ }
+}
diff --git a/lib/auth/authclient/tls.go b/lib/auth/authclient/tls.go
index 7c607badb2f85..cf03352e26d49 100644
--- a/lib/auth/authclient/tls.go
+++ b/lib/auth/authclient/tls.go
@@ -20,10 +20,10 @@ import (
"context"
"crypto/tls"
"crypto/x509"
+ "log/slog"
"math"
"github.com/gravitational/trace"
- "github.com/sirupsen/logrus"
"github.com/gravitational/teleport/api/types"
apiutils "github.com/gravitational/teleport/api/utils"
@@ -96,7 +96,7 @@ func DefaultClientCertPool(ctx context.Context, client CAGetter, clusterName str
// WithClusterCAs returns a TLS hello callback that returns a copy of the provided
// TLS config with client CAs pool of the specified cluster.
-func WithClusterCAs(tlsConfig *tls.Config, ap CAGetter, currentClusterName string, log logrus.FieldLogger) func(*tls.ClientHelloInfo) (*tls.Config, error) {
+func WithClusterCAs(tlsConfig *tls.Config, ap CAGetter, currentClusterName string, logger *slog.Logger) func(*tls.ClientHelloInfo) (*tls.Config, error) {
return func(info *tls.ClientHelloInfo) (*tls.Config, error) {
var clusterName string
var err error
@@ -105,14 +105,14 @@ func WithClusterCAs(tlsConfig *tls.Config, ap CAGetter, currentClusterName strin
clusterName, err = apiutils.DecodeClusterName(info.ServerName)
if err != nil {
if !trace.IsNotFound(err) {
- log.Debugf("Ignoring unsupported cluster name name %q.", info.ServerName)
+ logger.DebugContext(info.Context(), "Ignoring unsupported cluster name name", "cluster_name", info.ServerName)
clusterName = ""
}
}
}
pool, totalSubjectsLen, err := DefaultClientCertPool(info.Context(), ap, clusterName)
if err != nil {
- log.WithError(err).Errorf("Failed to retrieve client pool for %q.", clusterName)
+ logger.ErrorContext(info.Context(), "Failed to retrieve client pool for cluster", "error", err, "cluster", clusterName)
// this falls back to the default config
return nil, nil
}
@@ -130,11 +130,11 @@ func WithClusterCAs(tlsConfig *tls.Config, ap CAGetter, currentClusterName strin
// the current cluster CA. In the unlikely case where it's wrong, the
// client will be rejected.
if totalSubjectsLen >= int64(math.MaxUint16) {
- log.Debugf("Number of CAs in client cert pool is too large and cannot be encoded in a TLS handshake; this is due to a large number of trusted clusters; will use only the CA of the current cluster to validate.")
+ logger.DebugContext(info.Context(), "Number of CAs in client cert pool is too large and cannot be encoded in a TLS handshake; this is due to a large number of trusted clusters; will use only the CA of the current cluster to validate")
pool, _, err = DefaultClientCertPool(info.Context(), ap, currentClusterName)
if err != nil {
- log.WithError(err).Errorf("Failed to retrieve client pool for %q.", currentClusterName)
+ logger.ErrorContext(info.Context(), "Failed to retrieve client pool for cluster", "error", err, "cluster", currentClusterName)
// this falls back to the default config
return nil, nil
}
diff --git a/lib/auth/autoupdate/autoupdatev1/service.go b/lib/auth/autoupdate/autoupdatev1/service.go
index aa9e29f2fabea..77baae74e4658 100644
--- a/lib/auth/autoupdate/autoupdatev1/service.go
+++ b/lib/auth/autoupdate/autoupdatev1/service.go
@@ -30,6 +30,7 @@ import (
apievents "github.com/gravitational/teleport/api/types/events"
"github.com/gravitational/teleport/lib/authz"
"github.com/gravitational/teleport/lib/events"
+ "github.com/gravitational/teleport/lib/modules"
"github.com/gravitational/teleport/lib/services"
)
@@ -292,6 +293,10 @@ func (s *Service) CreateAutoUpdateVersion(ctx context.Context, req *autoupdate.C
return nil, trace.Wrap(err)
}
+ if err := checkAdminCloudAccess(authCtx); err != nil {
+ return nil, trace.Wrap(err)
+ }
+
if err := authCtx.CheckAccessToKind(types.KindAutoUpdateVersion, types.VerbCreate); err != nil {
return nil, trace.Wrap(err)
}
@@ -333,6 +338,10 @@ func (s *Service) UpdateAutoUpdateVersion(ctx context.Context, req *autoupdate.U
return nil, trace.Wrap(err)
}
+ if err := checkAdminCloudAccess(authCtx); err != nil {
+ return nil, trace.Wrap(err)
+ }
+
if err := authCtx.CheckAccessToKind(types.KindAutoUpdateVersion, types.VerbUpdate); err != nil {
return nil, trace.Wrap(err)
}
@@ -374,6 +383,10 @@ func (s *Service) UpsertAutoUpdateVersion(ctx context.Context, req *autoupdate.U
return nil, trace.Wrap(err)
}
+ if err := checkAdminCloudAccess(authCtx); err != nil {
+ return nil, trace.Wrap(err)
+ }
+
if err := authCtx.CheckAccessToKind(types.KindAutoUpdateVersion, types.VerbCreate, types.VerbUpdate); err != nil {
return nil, trace.Wrap(err)
}
@@ -415,6 +428,10 @@ func (s *Service) DeleteAutoUpdateVersion(ctx context.Context, req *autoupdate.D
return nil, trace.Wrap(err)
}
+ if err := checkAdminCloudAccess(authCtx); err != nil {
+ return nil, trace.Wrap(err)
+ }
+
if err := authCtx.CheckAccessToKind(types.KindAutoUpdateVersion, types.VerbDelete); err != nil {
return nil, trace.Wrap(err)
}
@@ -589,3 +606,14 @@ func (s *Service) emitEvent(ctx context.Context, e apievents.AuditEvent) {
)
}
}
+
+// checkAdminCloudAccess validates if the given context has the builtin admin role if cloud feature is enabled.
+func checkAdminCloudAccess(authCtx *authz.Context) error {
+ if modules.GetModules().Features().Cloud && !authz.HasBuiltinRole(*authCtx, string(types.RoleAdmin)) {
+ return trace.AccessDenied("This Teleport instance is running on Teleport Cloud. "+
+ "The %q resource is managed by the Teleport Cloud team. You can use the %q resource to opt-in, "+
+ "opt-out or configure update schedules.",
+ types.KindAutoUpdateVersion, types.KindAutoUpdateConfig)
+ }
+ return nil
+}
diff --git a/lib/cloud/clients.go b/lib/cloud/clients.go
index ac21c4c89c045..93bb27f90b246 100644
--- a/lib/cloud/clients.go
+++ b/lib/cloud/clients.go
@@ -390,6 +390,9 @@ type awsOptions struct {
// maxRetries is the maximum number of retries to use for the session.
maxRetries *int
+
+ // withoutSessionCache disables the session cache for the AWS session.
+ withoutSessionCache bool
}
func (a *awsOptions) checkAndSetDefaults() error {
@@ -421,6 +424,13 @@ func WithAssumeRole(roleARN, externalID string) AWSOptionsFn {
}
}
+// WithoutSessionCache disables the session cache for the AWS session.
+func WithoutSessionCache() AWSOptionsFn {
+ return func(options *awsOptions) {
+ options.withoutSessionCache = true
+ }
+}
+
// WithAssumeRoleFromAWSMeta extracts options needed from AWS metadata for
// assuming an AWS role.
func WithAssumeRoleFromAWSMeta(meta types.AWS) AWSOptionsFn {
@@ -487,7 +497,7 @@ func (c *cloudClients) GetAWSSession(ctx context.Context, region string, opts ..
}
var err error
if options.baseSession == nil {
- options.baseSession, err = c.getAWSSessionForRegion(region, options)
+ options.baseSession, err = c.getAWSSessionForRegion(ctx, region, options)
if err != nil {
return nil, trace.Wrap(err)
}
@@ -767,17 +777,12 @@ func awsAmbientSessionProvider(ctx context.Context, region string) (*awssession.
}
// getAWSSessionForRegion returns AWS session for the specified region.
-func (c *cloudClients) getAWSSessionForRegion(region string, opts awsOptions) (*awssession.Session, error) {
+func (c *cloudClients) getAWSSessionForRegion(ctx context.Context, region string, opts awsOptions) (*awssession.Session, error) {
if err := opts.checkAndSetDefaults(); err != nil {
return nil, trace.Wrap(err)
}
- cacheKey := awsSessionCacheKey{
- region: region,
- integration: opts.integration,
- }
-
- sess, err := utils.FnCacheGet(context.Background(), c.awsSessionsCache, cacheKey, func(ctx context.Context) (*awssession.Session, error) {
+ createSession := func(ctx context.Context) (*awssession.Session, error) {
if opts.credentialsSource == credentialsSourceIntegration {
if c.awsIntegrationSessionProviderFn == nil {
return nil, trace.BadParameter("missing aws integration session provider")
@@ -791,6 +796,30 @@ func (c *cloudClients) getAWSSessionForRegion(region string, opts awsOptions) (*
logrus.Debugf("Initializing AWS session for region %v using environment credentials.", region)
session, err := awsAmbientSessionProvider(ctx, region)
return session, trace.Wrap(err)
+ }
+
+ if opts.withoutSessionCache {
+ sess, err := createSession(ctx)
+ if err != nil {
+ return nil, trace.Wrap(err)
+ }
+ if opts.customRetryer != nil || opts.maxRetries != nil {
+ return sess.Copy(&aws.Config{
+ Retryer: opts.customRetryer,
+ MaxRetries: opts.maxRetries,
+ }), nil
+ }
+ return sess, trace.Wrap(err)
+ }
+
+ cacheKey := awsSessionCacheKey{
+ region: region,
+ integration: opts.integration,
+ }
+
+ sess, err := utils.FnCacheGet(ctx, c.awsSessionsCache, cacheKey, func(ctx context.Context) (*awssession.Session, error) {
+ session, err := createSession(ctx)
+ return session, trace.Wrap(err)
})
if err != nil {
return nil, trace.Wrap(err)
@@ -810,6 +839,16 @@ func (c *cloudClients) getAWSSessionForRole(ctx context.Context, region string,
return nil, trace.Wrap(err)
}
+ createSession := func(ctx context.Context) (*awssession.Session, error) {
+ stsClient := sts.New(options.baseSession)
+ return newSessionWithRole(ctx, stsClient, region, options.assumeRoleARN, options.assumeRoleExternalID)
+ }
+
+ if options.withoutSessionCache {
+ session, err := createSession(ctx)
+ return session, trace.Wrap(err)
+ }
+
cacheKey := awsSessionCacheKey{
region: region,
integration: options.integration,
@@ -817,8 +856,8 @@ func (c *cloudClients) getAWSSessionForRole(ctx context.Context, region string,
externalID: options.assumeRoleExternalID,
}
return utils.FnCacheGet(ctx, c.awsSessionsCache, cacheKey, func(ctx context.Context) (*awssession.Session, error) {
- stsClient := sts.New(options.baseSession)
- return newSessionWithRole(ctx, stsClient, region, options.assumeRoleARN, options.assumeRoleExternalID)
+ session, err := createSession(ctx)
+ return session, trace.Wrap(err)
})
}
diff --git a/lib/kube/grpc/grpc_test.go b/lib/kube/grpc/grpc_test.go
index 39ef5ef6b907d..e72e2edf945ef 100644
--- a/lib/kube/grpc/grpc_test.go
+++ b/lib/kube/grpc/grpc_test.go
@@ -22,12 +22,12 @@ import (
"context"
"crypto/tls"
"crypto/x509"
+ "log/slog"
"net"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/gravitational/trace"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
@@ -639,7 +639,7 @@ func initGRPCServer(t *testing.T, testCtx *kubeproxy.TestContext, listener net.L
AcceptedUsage: []string{teleport.UsageKubeOnly},
}
- tlsConf := copyAndConfigureTLS(tlsConfig, logrus.New(), testCtx.AuthClient, clusterName)
+ tlsConf := copyAndConfigureTLS(tlsConfig, testCtx.AuthClient, clusterName)
creds, err := auth.NewTransportCredentials(auth.TransportCredentialsConfig{
TransportCredentials: credentials.NewTLS(tlsConf),
UserGetter: authMiddleware,
@@ -693,7 +693,7 @@ func initGRPCServer(t *testing.T, testCtx *kubeproxy.TestContext, listener net.L
// copyAndConfigureTLS can be used to copy and modify an existing *tls.Config
// for Teleport application proxy servers.
-func copyAndConfigureTLS(config *tls.Config, log logrus.FieldLogger, accessPoint authclient.AccessCache, clusterName string) *tls.Config {
+func copyAndConfigureTLS(config *tls.Config, accessPoint authclient.AccessCache, clusterName string) *tls.Config {
tlsConfig := config.Clone()
// Require clients to present a certificate
@@ -703,7 +703,7 @@ func copyAndConfigureTLS(config *tls.Config, log logrus.FieldLogger, accessPoint
// client's certificate to verify the chain presented. If the client does not
// pass in the cluster name, this functions pulls back all CA to try and
// match the certificate presented against any CA.
- tlsConfig.GetConfigForClient = authclient.WithClusterCAs(tlsConfig.Clone(), accessPoint, clusterName, log)
+ tlsConfig.GetConfigForClient = authclient.WithClusterCAs(tlsConfig.Clone(), accessPoint, clusterName, slog.Default())
return tlsConfig
}
diff --git a/lib/kube/proxy/cluster_details.go b/lib/kube/proxy/cluster_details.go
index b74e81f1b5ddb..c949494ac982d 100644
--- a/lib/kube/proxy/cluster_details.go
+++ b/lib/kube/proxy/cluster_details.go
@@ -131,11 +131,9 @@ func newClusterDetails(ctx context.Context, cfg clusterDetailsConfig) (_ *kubeDe
go dynLabels.Start()
}
- kubeClient := creds.getKubeClient()
-
var isClusterOffline bool
// Create the codec factory and the list of supported types for RBAC.
- codecFactory, rbacSupportedTypes, gvkSupportedRes, err := newClusterSchemaBuilder(cfg.log, kubeClient)
+ codecFactory, rbacSupportedTypes, gvkSupportedRes, err := newClusterSchemaBuilder(cfg.log, creds.getKubeClient())
if err != nil {
cfg.log.WithError(err).Warn("Failed to create cluster schema. Possibly the cluster is offline.")
// If the cluster is offline, we will not be able to create the codec factory
@@ -145,7 +143,7 @@ func newClusterDetails(ctx context.Context, cfg clusterDetailsConfig) (_ *kubeDe
isClusterOffline = true
}
- kubeVersion, err := kubeClient.Discovery().ServerVersion()
+ kubeVersion, err := creds.getKubeClient().Discovery().ServerVersion()
if err != nil {
cfg.log.WithError(err).Warn("Failed to get Kubernetes cluster version. Possibly the cluster is offline.")
}
@@ -204,7 +202,7 @@ func newClusterDetails(ctx context.Context, cfg clusterDetailsConfig) (_ *kubeDe
continue
}
- kubeVersion, err := kubeClient.Discovery().ServerVersion()
+ kubeVersion, err := creds.getKubeClient().Discovery().ServerVersion()
if err != nil {
cfg.log.WithError(err).Warn("Failed to get Kubernetes cluster version. Possibly the cluster is offline.")
}
@@ -342,6 +340,7 @@ func getAWSClientRestConfig(cloudClients cloud.Clients, clock clockwork.Clock, r
region := cluster.GetAWSConfig().Region
opts := []cloud.AWSOptionsFn{
cloud.WithAmbientCredentials(),
+ cloud.WithoutSessionCache(),
}
if awsAssume := getAWSResourceMatcherToCluster(cluster, resourceMatchers); awsAssume != nil {
opts = append(opts, cloud.WithAssumeRole(awsAssume.AssumeRoleARN, awsAssume.ExternalID))
diff --git a/lib/kube/proxy/server.go b/lib/kube/proxy/server.go
index 8c770c16bbdb8..6f05f2a13a22f 100644
--- a/lib/kube/proxy/server.go
+++ b/lib/kube/proxy/server.go
@@ -21,6 +21,7 @@ package proxy
import (
"context"
"crypto/tls"
+ "log/slog"
"maps"
"net"
"net/http"
@@ -421,7 +422,8 @@ func (t *TLSServer) close(ctx context.Context) error {
// and server's GetConfigForClient reloads the list of trusted
// local and remote certificate authorities
func (t *TLSServer) GetConfigForClient(info *tls.ClientHelloInfo) (*tls.Config, error) {
- return authclient.WithClusterCAs(t.TLS, t.AccessPoint, t.ClusterName, t.log)(info)
+ // TODO(tross): remove slog.Default once the TLSServer is updated to use a slog.Logger
+ return authclient.WithClusterCAs(t.TLS, t.AccessPoint, t.ClusterName, slog.Default())(info)
}
// GetServerInfo returns a services.Server object for heartbeats (aka
diff --git a/lib/proxy/peer/quic/quic_test.go b/lib/proxy/peer/quic/quic_test.go
index 2d0b7c4a4be82..2071d78ebe229 100644
--- a/lib/proxy/peer/quic/quic_test.go
+++ b/lib/proxy/peer/quic/quic_test.go
@@ -221,6 +221,8 @@ func TestCertificateVerification(t *testing.T) {
}
func TestBasicFunctionality(t *testing.T) {
+ t.Skip("disabled until quic-go/quic-go#4303 is fixed (data race)")
+
t.Parallel()
hostCA := newCA(t)
diff --git a/lib/service/service.go b/lib/service/service.go
index b321badeef084..ffadadebf855b 100644
--- a/lib/service/service.go
+++ b/lib/service/service.go
@@ -5273,7 +5273,6 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error {
clusterName,
utils.NetAddrsToStrings(process.Config.AuthServerAddresses()),
proxySigner,
- process.log,
process.TracingProvider.Tracer(teleport.ComponentProxy))
alpnRouter.Add(alpnproxy.HandlerDecs{
@@ -6698,7 +6697,7 @@ func (process *TeleportProcess) initSecureGRPCServer(cfg initSecureGRPCServerCfg
tlsConf := serverTLSConfig.Clone()
tlsConf.NextProtos = []string{string(alpncommon.ProtocolHTTP2), string(alpncommon.ProtocolProxyGRPCSecure)}
- tlsConf = copyAndConfigureTLS(tlsConf, process.log, cfg.accessPoint, clusterName)
+ tlsConf = copyAndConfigureTLS(tlsConf, process.logger, cfg.accessPoint, clusterName)
creds, err := auth.NewTransportCredentials(auth.TransportCredentialsConfig{
TransportCredentials: credentials.NewTLS(tlsConf),
UserGetter: authMiddleware,
@@ -6752,7 +6751,7 @@ type initSecureGRPCServerCfg struct {
// copyAndConfigureTLS can be used to copy and modify an existing *tls.Config
// for Teleport application proxy servers.
-func copyAndConfigureTLS(config *tls.Config, log logrus.FieldLogger, accessPoint authclient.AccessCache, clusterName string) *tls.Config {
+func copyAndConfigureTLS(config *tls.Config, log *slog.Logger, accessPoint authclient.AccessCache, clusterName string) *tls.Config {
tlsConfig := config.Clone()
// Require clients to present a certificate
diff --git a/lib/service/service_test.go b/lib/service/service_test.go
index 1c05149527304..1c4d38c14d6ba 100644
--- a/lib/service/service_test.go
+++ b/lib/service/service_test.go
@@ -295,7 +295,10 @@ func TestMonitor(t *testing.T) {
process.BroadcastEvent(Event{Name: TeleportOKEvent, Payload: teleport.ComponentAuth})
require.NoError(t, process.Start())
- t.Cleanup(func() { require.NoError(t, process.Close()) })
+ t.Cleanup(func() {
+ require.NoError(t, process.Close())
+ require.NoError(t, process.Wait())
+ })
diagAddr, err := process.DiagnosticAddr()
require.NoError(t, err)
@@ -1632,7 +1635,10 @@ func TestDebugServiceStartSocket(t *testing.T) {
require.NoError(t, err)
require.NoError(t, process.Start())
- t.Cleanup(func() { require.NoError(t, process.Close()) })
+ t.Cleanup(func() {
+ require.NoError(t, process.Close())
+ require.NoError(t, process.Wait())
+ })
httpClient := &http.Client{
Timeout: 10 * time.Second,
@@ -1746,6 +1752,7 @@ func TestInstanceMetadata(t *testing.T) {
require.NoError(t, err)
t.Cleanup(func() {
require.NoError(t, process.Close())
+ require.NoError(t, process.Wait())
})
if tc.expectCloudLabels {
diff --git a/lib/services/access_checker_test.go b/lib/services/access_checker_test.go
index 86b49d07d5cb0..41b3bc8aaad59 100644
--- a/lib/services/access_checker_test.go
+++ b/lib/services/access_checker_test.go
@@ -24,6 +24,8 @@ import (
"github.com/stretchr/testify/require"
+ headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1"
+ workloadidentityv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/workloadidentity/v1"
"github.com/gravitational/teleport/api/types"
)
@@ -779,3 +781,96 @@ type serverStub struct {
func (serverStub) GetKind() string {
return types.KindNode
}
+
+func TestAccessCheckerWorkloadIdentity(t *testing.T) {
+ localCluster := "cluster"
+
+ noLabelsWI := &workloadidentityv1pb.WorkloadIdentity{
+ Kind: types.KindWorkloadIdentity,
+ Metadata: &headerv1.Metadata{
+ Name: "no-labels",
+ },
+ }
+ fooLabeledWI := &workloadidentityv1pb.WorkloadIdentity{
+ Kind: types.KindWorkloadIdentity,
+ Metadata: &headerv1.Metadata{
+ Name: "foo-labeled",
+ Labels: map[string]string{
+ "foo": "bar",
+ },
+ },
+ }
+
+ roleNoLabels := newRole(func(rv *types.RoleV6) {})
+ roleWildcard := newRole(func(rv *types.RoleV6) {
+ rv.Spec.Allow.WorkloadIdentityLabels = types.Labels{types.Wildcard: []string{types.Wildcard}}
+ })
+ roleFooLabel := newRole(func(rv *types.RoleV6) {
+ rv.Spec.Allow.WorkloadIdentityLabels = types.Labels{"foo": {"bar"}}
+ })
+ tests := []struct {
+ name string
+ roleSet RoleSet
+ resource *workloadidentityv1pb.WorkloadIdentity
+ requireError require.ErrorAssertionFunc
+ }{
+ {
+ name: "wildcard role, no labels wi",
+ roleSet: NewRoleSet(
+ roleWildcard,
+ ),
+ resource: noLabelsWI,
+ requireError: require.NoError,
+ },
+ {
+ name: "no labels role, no labels wi",
+ roleSet: NewRoleSet(
+ roleNoLabels,
+ ),
+ resource: noLabelsWI,
+ requireError: require.Error,
+ },
+ {
+ name: "labels role, no labels wi",
+ roleSet: NewRoleSet(
+ roleFooLabel,
+ ),
+ resource: noLabelsWI,
+ requireError: require.Error,
+ },
+ {
+ name: "wildcard role, labels wi",
+ roleSet: NewRoleSet(
+ roleWildcard,
+ ),
+ resource: fooLabeledWI,
+ requireError: require.NoError,
+ },
+ {
+ name: "no labels role, labels wi",
+ roleSet: NewRoleSet(
+ roleNoLabels,
+ ),
+ resource: fooLabeledWI,
+ requireError: require.Error,
+ },
+ {
+ name: "labels role, labels wi",
+ roleSet: NewRoleSet(
+ roleFooLabel,
+ ),
+ resource: fooLabeledWI,
+ requireError: require.NoError,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ accessChecker := NewAccessCheckerWithRoleSet(&AccessInfo{}, localCluster, tt.roleSet)
+ err := accessChecker.CheckAccess(
+ types.Resource153ToResourceWithLabels(tt.resource),
+ AccessState{},
+ )
+ tt.requireError(t, err)
+ })
+ }
+}
diff --git a/lib/services/local/identitycenter_events.go b/lib/services/local/identitycenter_events.go
index b8cc8933b200b..967db5ae731bc 100644
--- a/lib/services/local/identitycenter_events.go
+++ b/lib/services/local/identitycenter_events.go
@@ -65,7 +65,7 @@ func (p *identityCenterAccountParser) parse(event backend.Event) (types.Resource
if err != nil {
return nil, trace.Wrap(err)
}
- return types.Resource153ToLegacy(services.IdentityCenterAccount{Account: r}), nil
+ return types.Resource153ToResourceWithLabels(services.IdentityCenterAccount{Account: r}), nil
default:
return nil, trace.BadParameter("event %v is not supported", event.Type)
}
@@ -109,7 +109,7 @@ func (p *identityCenterPrincipalAssignmentParser) parse(event backend.Event) (ty
if err != nil {
return nil, trace.Wrap(err)
}
- return types.Resource153ToLegacy(r), nil
+ return types.Resource153ToResourceWithLabels(r), nil
default:
return nil, trace.BadParameter("event %v is not supported", event.Type)
diff --git a/lib/services/presets.go b/lib/services/presets.go
index f9b996a13ee9b..1019dbd943274 100644
--- a/lib/services/presets.go
+++ b/lib/services/presets.go
@@ -194,6 +194,8 @@ func NewPresetEditorRole() types.Role {
types.NewRule(types.KindIdentityCenter, RW()),
types.NewRule(types.KindContact, RW()),
types.NewRule(types.KindWorkloadIdentity, RW()),
+ types.NewRule(types.KindAutoUpdateVersion, RW()),
+ types.NewRule(types.KindAutoUpdateConfig, RW()),
},
},
},
diff --git a/lib/services/unified_resource.go b/lib/services/unified_resource.go
index b3228849a8a25..2cf2e1c89995f 100644
--- a/lib/services/unified_resource.go
+++ b/lib/services/unified_resource.go
@@ -20,7 +20,6 @@ package services
import (
"context"
- "maps"
"strings"
"sync"
"time"
@@ -1056,37 +1055,36 @@ func makePaginatedIdentityCenterAccount(resourceKind string, resource types.Reso
}
}
- protoResource := &proto.PaginatedResource{
- Resource: &proto.PaginatedResource_AppServer{
- AppServer: &types.AppServerV3{
- Kind: types.KindAppServer,
+ appServer := &types.AppServerV3{
+ Kind: types.KindAppServer,
+ Version: types.V3,
+ Metadata: resource.GetMetadata(),
+ Spec: types.AppServerSpecV3{
+ App: &types.AppV3{
+ Kind: types.KindApp,
+ SubKind: types.KindIdentityCenterAccount,
Version: types.V3,
- Metadata: resource.GetMetadata(),
- Spec: types.AppServerSpecV3{
- App: &types.AppV3{
- Kind: types.KindApp,
- SubKind: types.KindIdentityCenterAccount,
- Version: types.V3,
- Metadata: types.Metadata{
- Name: acct.Spec.Name,
- Description: acct.Spec.Description,
- Labels: maps.Clone(acct.Metadata.Labels),
- },
- Spec: types.AppSpecV3{
- URI: acct.Spec.StartUrl,
- PublicAddr: acct.Spec.StartUrl,
- AWS: &types.AppAWS{
- ExternalID: acct.Spec.Id,
- },
- IdentityCenter: &types.AppIdentityCenter{
- AccountID: acct.Spec.Id,
- PermissionSets: pss,
- },
- },
+ Metadata: types.Metadata153ToLegacy(acct.Metadata),
+ Spec: types.AppSpecV3{
+ URI: acct.Spec.StartUrl,
+ PublicAddr: acct.Spec.StartUrl,
+ AWS: &types.AppAWS{
+ ExternalID: acct.Spec.Id,
+ },
+ IdentityCenter: &types.AppIdentityCenter{
+ AccountID: acct.Spec.Id,
+ PermissionSets: pss,
},
},
},
},
+ }
+ appServer.Metadata.Description = acct.Spec.Name
+
+ protoResource := &proto.PaginatedResource{
+ Resource: &proto.PaginatedResource_AppServer{
+ AppServer: appServer,
+ },
RequiresRequest: requiresRequest,
}
diff --git a/lib/srv/alpnproxy/auth/auth_proxy.go b/lib/srv/alpnproxy/auth/auth_proxy.go
index 795017fb02322..acd1041b5d72a 100644
--- a/lib/srv/alpnproxy/auth/auth_proxy.go
+++ b/lib/srv/alpnproxy/auth/auth_proxy.go
@@ -26,7 +26,6 @@ import (
"strings"
"github.com/gravitational/trace"
- "github.com/sirupsen/logrus"
"go.opentelemetry.io/otel/attribute"
oteltrace "go.opentelemetry.io/otel/trace"
@@ -44,13 +43,12 @@ type sitesGetter interface {
}
// NewAuthProxyDialerService create new instance of AuthProxyDialerService.
-func NewAuthProxyDialerService(reverseTunnelServer sitesGetter, localClusterName string, authServers []string, proxySigner multiplexer.PROXYHeaderSigner, log logrus.FieldLogger, tracer oteltrace.Tracer) *AuthProxyDialerService {
+func NewAuthProxyDialerService(reverseTunnelServer sitesGetter, localClusterName string, authServers []string, proxySigner multiplexer.PROXYHeaderSigner, tracer oteltrace.Tracer) *AuthProxyDialerService {
return &AuthProxyDialerService{
reverseTunnelServer: reverseTunnelServer,
localClusterName: localClusterName,
authServers: authServers,
proxySigner: proxySigner,
- log: log,
tracer: tracer,
}
}
@@ -62,7 +60,6 @@ type AuthProxyDialerService struct {
localClusterName string
authServers []string
proxySigner multiplexer.PROXYHeaderSigner
- log logrus.FieldLogger
tracer oteltrace.Tracer
}
diff --git a/lib/srv/alpnproxy/auth/auth_proxy_test.go b/lib/srv/alpnproxy/auth/auth_proxy_test.go
index cf8c6f3b1a07c..1335d3bc94f17 100644
--- a/lib/srv/alpnproxy/auth/auth_proxy_test.go
+++ b/lib/srv/alpnproxy/auth/auth_proxy_test.go
@@ -31,7 +31,7 @@ import (
)
func TestDialLocalAuthServerNoServers(t *testing.T) {
- s := NewAuthProxyDialerService(nil /* reverseTunnelServer */, "clustername", nil /* authServers */, nil, nil, tracing.NoopTracer("test"))
+ s := NewAuthProxyDialerService(nil /* reverseTunnelServer */, "clustername", nil /* authServers */, nil, tracing.NoopTracer("test"))
_, err := s.dialLocalAuthServer(context.Background(), nil, nil)
require.Error(t, err, "dialLocalAuthServer expected to fail")
require.Equal(t, "empty auth servers list", err.Error())
@@ -40,7 +40,7 @@ func TestDialLocalAuthServerNoServers(t *testing.T) {
func TestDialLocalAuthServerNoAvailableServers(t *testing.T) {
// The 203.0.113.0/24 range is part of block TEST-NET-3 as defined in RFC-5735 (https://www.rfc-editor.org/rfc/rfc5735).
// IPs in this range do not appear on the public internet.
- s := NewAuthProxyDialerService(nil /* reverseTunnelServer */, "clustername", []string{"203.0.113.1:3025"}, nil, nil, tracing.NoopTracer("test"))
+ s := NewAuthProxyDialerService(nil /* reverseTunnelServer */, "clustername", []string{"203.0.113.1:3025"}, nil, tracing.NoopTracer("test"))
ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
t.Cleanup(cancel)
_, err := s.dialLocalAuthServer(ctx, nil, nil)
@@ -64,7 +64,7 @@ func TestDialLocalAuthServerAvailableServers(t *testing.T) {
// IPs in this range do not appear on the public internet.
authServers = append(authServers, fmt.Sprintf("203.0.113.%d:3025", i+1))
}
- s := NewAuthProxyDialerService(nil /* reverseTunnelServer */, "clustername", authServers, nil, nil, tracing.NoopTracer("test"))
+ s := NewAuthProxyDialerService(nil /* reverseTunnelServer */, "clustername", authServers, nil, tracing.NoopTracer("test"))
require.Eventually(t, func() bool {
ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
t.Cleanup(cancel)
diff --git a/lib/srv/alpnproxy/auth_checker_middleware.go b/lib/srv/alpnproxy/auth_checker_middleware.go
index d61ad24f6ddf6..0121777121ba7 100644
--- a/lib/srv/alpnproxy/auth_checker_middleware.go
+++ b/lib/srv/alpnproxy/auth_checker_middleware.go
@@ -20,10 +20,10 @@ package alpnproxy
import (
"crypto/subtle"
+ "log/slog"
"net/http"
"github.com/gravitational/trace"
- "github.com/sirupsen/logrus"
"github.com/gravitational/teleport"
)
@@ -35,7 +35,7 @@ type AuthorizationCheckerMiddleware struct {
DefaultLocalProxyHTTPMiddleware
// Log is the Logger.
- Log logrus.FieldLogger
+ Log *slog.Logger
// Secret is the expected value of a bearer token.
Secret string
}
@@ -45,7 +45,7 @@ var _ LocalProxyHTTPMiddleware = (*AuthorizationCheckerMiddleware)(nil)
// CheckAndSetDefaults checks configuration validity and sets defaults.
func (m *AuthorizationCheckerMiddleware) CheckAndSetDefaults() error {
if m.Log == nil {
- m.Log = logrus.WithField(teleport.ComponentKey, "gcp")
+ m.Log = slog.With(teleport.ComponentKey, "authz")
}
if m.Secret == "" {
@@ -58,7 +58,7 @@ func (m *AuthorizationCheckerMiddleware) CheckAndSetDefaults() error {
func (m *AuthorizationCheckerMiddleware) HandleRequest(rw http.ResponseWriter, req *http.Request) bool {
auth := req.Header.Get("Authorization")
if auth == "" {
- m.Log.Debugf("No Authorization header present, ignoring request.")
+ m.Log.DebugContext(req.Context(), "No Authorization header present, ignoring request")
return false
}
diff --git a/lib/srv/alpnproxy/aws_local_proxy.go b/lib/srv/alpnproxy/aws_local_proxy.go
index 87cf634f365d1..77980930b2f37 100644
--- a/lib/srv/alpnproxy/aws_local_proxy.go
+++ b/lib/srv/alpnproxy/aws_local_proxy.go
@@ -19,6 +19,7 @@
package alpnproxy
import (
+ "log/slog"
"net/http"
"strings"
@@ -26,7 +27,6 @@ import (
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/sts"
"github.com/gravitational/trace"
- "github.com/sirupsen/logrus"
"github.com/gravitational/teleport"
awsapiutils "github.com/gravitational/teleport/api/utils/aws"
@@ -43,7 +43,7 @@ type AWSAccessMiddleware struct {
// signature verification.
AWSCredentialsProvider aws.CredentialsProvider
- Log logrus.FieldLogger
+ Log *slog.Logger
assumedRoles utils.SyncMap[string, *sts.AssumeRoleOutput]
}
@@ -52,7 +52,7 @@ var _ LocalProxyHTTPMiddleware = &AWSAccessMiddleware{}
func (m *AWSAccessMiddleware) CheckAndSetDefaults() error {
if m.Log == nil {
- m.Log = logrus.WithField(teleport.ComponentKey, "aws_access")
+ m.Log = slog.With(teleport.ComponentKey, "aws_access")
}
if m.AWSCredentialsProvider == nil {
@@ -113,7 +113,7 @@ func (m *AWSAccessMiddleware) CheckAndSetDefaults() error {
func (m *AWSAccessMiddleware) HandleRequest(rw http.ResponseWriter, req *http.Request) bool {
sigV4, err := awsutils.ParseSigV4(req.Header.Get(awsutils.AuthorizationHeader))
if err != nil {
- m.Log.WithError(err).Error("Failed to parse AWS request authorization header.")
+ m.Log.ErrorContext(req.Context(), "Failed to parse AWS request authorization header", "error", err)
rw.WriteHeader(http.StatusForbidden)
return true
}
@@ -135,7 +135,7 @@ func (m *AWSAccessMiddleware) HandleRequest(rw http.ResponseWriter, req *http.Re
func (m *AWSAccessMiddleware) handleCommonRequest(rw http.ResponseWriter, req *http.Request) bool {
if err := awsutils.VerifyAWSSignatureV2(req, m.AWSCredentialsProvider); err != nil {
- m.Log.WithError(err).Error("AWS signature verification failed.")
+ m.Log.ErrorContext(req.Context(), "AWS signature verification failed", "error", err)
rw.WriteHeader(http.StatusForbidden)
return true
}
@@ -150,12 +150,12 @@ func (m *AWSAccessMiddleware) handleRequestByAssumedRole(rw http.ResponseWriter,
)
if err := awsutils.VerifyAWSSignatureV2(req, credentials); err != nil {
- m.Log.WithError(err).Error("AWS signature verification failed.")
+ m.Log.ErrorContext(req.Context(), "AWS signature verification failed", "error", err)
rw.WriteHeader(http.StatusForbidden)
return true
}
- m.Log.Debugf("Rewriting headers for AWS request by assumed role %q.", aws.ToString(assumedRole.AssumedRoleUser.Arn))
+ m.Log.DebugContext(req.Context(), "Rewriting headers for AWS request by assumed role", "assumed_role", aws.ToString(assumedRole.AssumedRoleUser.Arn))
// Add a custom header for marking the special request.
req.Header.Add(appcommon.TeleportAWSAssumedRole, aws.ToString(assumedRole.AssumedRoleUser.Arn))
@@ -178,7 +178,7 @@ func (m *AWSAccessMiddleware) HandleResponse(response *http.Response) error {
sigV4, err := awsutils.ParseSigV4(authHeader)
if err != nil {
- m.Log.WithError(err).Error("Failed to parse AWS request authorization header.")
+ m.Log.ErrorContext(response.Request.Context(), "Failed to parse AWS request authorization header", "error", err)
return nil
}
@@ -205,13 +205,13 @@ func (m *AWSAccessMiddleware) handleSTSResponse(response *http.Response) error {
assumedRole, err := unmarshalAssumeRoleResponse(body)
if err != nil {
if !trace.IsNotFound(err) {
- m.Log.Warnf("Failed to unmarshal AssumeRoleResponse: %v.", err)
+ m.Log.WarnContext(response.Request.Context(), "Failed to unmarshal AssumeRoleResponse", "error", err)
}
return nil
}
m.assumedRoles.Store(aws.ToString(assumedRole.Credentials.AccessKeyId), assumedRole)
- m.Log.Debugf("Saved credentials for assumed role %q.", aws.ToString(assumedRole.AssumedRoleUser.Arn))
+ m.Log.DebugContext(response.Request.Context(), "Saved credentials for assumed role", "assumed_role", aws.ToString(assumedRole.AssumedRoleUser.Arn))
return nil
}
diff --git a/lib/srv/alpnproxy/azure_msi_middleware.go b/lib/srv/alpnproxy/azure_msi_middleware.go
index 0156e18b49f7f..6e462f2de8906 100644
--- a/lib/srv/alpnproxy/azure_msi_middleware.go
+++ b/lib/srv/alpnproxy/azure_msi_middleware.go
@@ -22,13 +22,13 @@ import (
"crypto"
"encoding/json"
"fmt"
+ "log/slog"
"net/http"
"sync"
"time"
"github.com/gravitational/trace"
"github.com/jonboulle/clockwork"
- "github.com/sirupsen/logrus"
"github.com/gravitational/teleport"
"github.com/gravitational/teleport/api/types"
@@ -49,7 +49,7 @@ type AzureMSIMiddleware struct {
// Clock is used to override time in tests.
Clock clockwork.Clock
// Log is the Logger.
- Log logrus.FieldLogger
+ Log *slog.Logger
// Secret to be provided by the client.
Secret string
@@ -65,7 +65,7 @@ func (m *AzureMSIMiddleware) CheckAndSetDefaults() error {
m.Clock = clockwork.NewRealClock()
}
if m.Log == nil {
- m.Log = logrus.WithField(teleport.ComponentKey, "azure_msi")
+ m.Log = slog.With(teleport.ComponentKey, "azure_msi")
}
if m.Secret == "" {
@@ -86,7 +86,7 @@ func (m *AzureMSIMiddleware) CheckAndSetDefaults() error {
func (m *AzureMSIMiddleware) HandleRequest(rw http.ResponseWriter, req *http.Request) bool {
if req.Host == types.TeleportAzureMSIEndpoint {
if err := m.msiEndpoint(rw, req); err != nil {
- m.Log.Warnf("Bad MSI request: %v", err)
+ m.Log.WarnContext(req.Context(), "Bad MSI request", "error", err)
trace.WriteError(rw, trace.Wrap(err))
}
return true
@@ -135,7 +135,7 @@ func (m *AzureMSIMiddleware) msiEndpoint(rw http.ResponseWriter, req *http.Reque
// check that msi_res_id matches expected Azure Identity
requestedAzureIdentity := req.Form.Get("msi_res_id")
if requestedAzureIdentity != m.Identity {
- m.Log.Warnf("Requested unexpected identity %q, expected %q", requestedAzureIdentity, m.Identity)
+ m.Log.WarnContext(req.Context(), "Requested unexpected identity", "requested_identity", requestedAzureIdentity, "expected_identity", m.Identity)
return trace.BadParameter("unexpected value for parameter 'msi_res_id': %v", requestedAzureIdentity)
}
@@ -144,7 +144,7 @@ func (m *AzureMSIMiddleware) msiEndpoint(rw http.ResponseWriter, req *http.Reque
return trace.Wrap(err)
}
- m.Log.Infof("MSI: returning token for identity %v", m.Identity)
+ m.Log.InfoContext(req.Context(), "MSI: returning token for identity", "identity", m.Identity)
rw.Header().Add("Content-Type", "application/json; charset=utf-8")
rw.Header().Add("Content-Length", fmt.Sprintf("%v", len(respBody)))
diff --git a/lib/srv/alpnproxy/azure_msi_middleware_test.go b/lib/srv/alpnproxy/azure_msi_middleware_test.go
index 8104186a3cb1e..c1fd2a42d5bea 100644
--- a/lib/srv/alpnproxy/azure_msi_middleware_test.go
+++ b/lib/srv/alpnproxy/azure_msi_middleware_test.go
@@ -29,13 +29,12 @@ import (
"time"
"github.com/jonboulle/clockwork"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
- "github.com/gravitational/teleport"
"github.com/gravitational/teleport/api/types"
"github.com/gravitational/teleport/lib/cryptosuites"
"github.com/gravitational/teleport/lib/jwt"
+ "github.com/gravitational/teleport/lib/utils"
)
func TestAzureMSIMiddlewareHandleRequest(t *testing.T) {
@@ -58,7 +57,7 @@ func testAzureMSIMiddlewareHandleRequest(t *testing.T, alg cryptosuites.Algorith
Identity: "azureTestIdentity",
TenantID: "cafecafe-cafe-4aaa-cafe-cafecafecafe",
ClientID: "decaffff-cafe-4aaa-cafe-cafecafecafe",
- Log: logrus.WithField(teleport.ComponentKey, "msi"),
+ Log: utils.NewSlogLoggerForTests(),
Clock: clockwork.NewFakeClockAt(time.Date(2022, 1, 1, 9, 0, 0, 0, time.UTC)),
Secret: "my-secret",
}
diff --git a/lib/srv/alpnproxy/forward_proxy.go b/lib/srv/alpnproxy/forward_proxy.go
index 0a58e442b3f79..1ea1811ff004d 100644
--- a/lib/srv/alpnproxy/forward_proxy.go
+++ b/lib/srv/alpnproxy/forward_proxy.go
@@ -21,13 +21,13 @@ package alpnproxy
import (
"context"
"crypto/tls"
+ "log/slog"
"net"
"net/http"
"net/url"
"strings"
"github.com/gravitational/trace"
- log "github.com/sirupsen/logrus"
"golang.org/x/net/http/httpproxy"
apidefaults "github.com/gravitational/teleport/api/defaults"
@@ -37,6 +37,7 @@ import (
"github.com/gravitational/teleport/api/utils/gcp"
"github.com/gravitational/teleport/lib/defaults"
"github.com/gravitational/teleport/lib/utils"
+ logutils "github.com/gravitational/teleport/lib/utils/log"
)
// IsConnectRequest returns true if the request is a HTTP CONNECT tunnel
@@ -133,7 +134,7 @@ func (p *ForwardProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
clientConn := hijackClientConnection(rw)
if clientConn == nil {
- log.Error("Failed to hijack client connection.")
+ slog.ErrorContext(req.Context(), "Failed to hijack client connection")
rw.WriteHeader(http.StatusInternalServerError)
return
}
@@ -225,7 +226,7 @@ func (h *ForwardToHostHandler) Handle(ctx context.Context, clientConn net.Conn,
serverConn, err := net.Dial("tcp", host)
if err != nil {
- log.WithError(err).Errorf("Failed to connect to host %q.", host)
+ slog.ErrorContext(req.Context(), "Failed to connect to host", "error", err, "host", host)
writeHeaderToHijackedConnection(clientConn, req, http.StatusServiceUnavailable)
return
}
@@ -236,7 +237,7 @@ func (h *ForwardToHostHandler) Handle(ctx context.Context, clientConn net.Conn,
return
}
- startForwardProxy(ctx, clientConn, serverConn, req.Host)
+ startForwardProxy(ctx, clientConn, serverConn, req.Host, slog.Default())
}
// ForwardToSystemProxyHandlerConfig is the config for
@@ -299,24 +300,25 @@ func (h *ForwardToSystemProxyHandler) Handle(ctx context.Context, clientConn net
return
}
+ logger := slog.With("proxy", logutils.StringerAttr(systemProxyURL))
serverConn, err := h.connectToSystemProxy(systemProxyURL)
if err != nil {
- log.WithError(err).Errorf("Failed to connect to system proxy %q.", systemProxyURL.Host)
+ logger.ErrorContext(req.Context(), "Failed to connect to system proxy", "error", err)
writeHeaderToHijackedConnection(clientConn, req, http.StatusBadGateway)
return
}
defer serverConn.Close()
- log.Debugf("Connected to system proxy %v.", systemProxyURL)
+ logger.DebugContext(req.Context(), "Connected to system proxy")
// Send original CONNECT request to system proxy.
if err = req.WriteProxy(serverConn); err != nil {
- log.WithError(err).Errorf("Failed to send CONNECT request to system proxy %q.", systemProxyURL.Host)
+ logger.ErrorContext(req.Context(), "Failed to send CONNECT request to system proxy", "error", err)
writeHeaderToHijackedConnection(clientConn, req, http.StatusBadGateway)
return
}
- startForwardProxy(ctx, clientConn, serverConn, req.Host)
+ startForwardProxy(ctx, clientConn, serverConn, req.Host, logger)
}
// getSystemProxyURL returns the system proxy URL.
@@ -331,7 +333,7 @@ func (h *ForwardToSystemProxyHandler) getSystemProxyURL(req *http.Request) *url.
// If error exists, make a log for debugging purpose.
if err != nil {
- log.WithError(err).Debugf("Failed to get system proxy.")
+ slog.DebugContext(req.Context(), "Failed to get system proxy", "error", err)
}
return nil
}
@@ -364,12 +366,12 @@ func (h *ForwardToSystemProxyHandler) connectToSystemProxy(systemProxyURL *url.U
}
// startForwardProxy starts streaming between client and server.
-func startForwardProxy(ctx context.Context, clientConn, serverConn net.Conn, host string) {
- log.Debugf("Started forwarding request for %q.", host)
- defer log.Debugf("Stopped forwarding request for %q.", host)
+func startForwardProxy(ctx context.Context, clientConn, serverConn net.Conn, host string, logger *slog.Logger) {
+ logger.DebugContext(ctx, "Started forwarding request to host", "host", host)
+ defer logger.DebugContext(ctx, "Stopped forwarding request to host", "host", host)
if err := utils.ProxyConn(ctx, clientConn, serverConn); err != nil {
- log.WithError(err).Errorf("Failed to proxy between %q and %q.", clientConn.LocalAddr(), serverConn.LocalAddr())
+ logger.ErrorContext(ctx, "Failed to proxy request", "error", err, "client_addr", clientConn.LocalAddr(), "server_addr", serverConn.LocalAddr())
}
}
@@ -394,7 +396,7 @@ func writeHeaderToHijackedConnection(conn net.Conn, req *http.Request, statusCod
}
err := resp.Write(conn)
if err != nil && !utils.IsOKNetworkError(err) {
- log.WithError(err).Errorf("Failed to write status code %d to client connection.", statusCode)
+ slog.ErrorContext(req.Context(), "Failed to write status code to client connection", "error", err, "status_code", statusCode)
return false
}
return true
diff --git a/lib/srv/alpnproxy/helpers_test.go b/lib/srv/alpnproxy/helpers_test.go
index 90af912be29b3..30f72b5543624 100644
--- a/lib/srv/alpnproxy/helpers_test.go
+++ b/lib/srv/alpnproxy/helpers_test.go
@@ -32,7 +32,6 @@ import (
"time"
"github.com/jonboulle/clockwork"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
"github.com/gravitational/teleport/api/types"
@@ -125,7 +124,7 @@ func (s *Suite) CreateProxyServer(t *testing.T) *Proxy {
Listener: s.serverListener,
WebTLSConfig: tlsConfig,
Router: s.router,
- Log: logrus.New(),
+ Log: utils.NewSlogLoggerForTests(),
AccessPoint: s.accessPoint,
IdentityTLSConfig: tlsConfig,
ClusterName: "root",
diff --git a/lib/srv/alpnproxy/kube.go b/lib/srv/alpnproxy/kube.go
index 256eb2ad79a30..36ee94ce7fb93 100644
--- a/lib/srv/alpnproxy/kube.go
+++ b/lib/srv/alpnproxy/kube.go
@@ -24,6 +24,7 @@ import (
"crypto/x509"
"crypto/x509/pkix"
"errors"
+ "log/slog"
"net"
"net/http"
"sync"
@@ -32,7 +33,6 @@ import (
"github.com/gravitational/trace"
"github.com/jonboulle/clockwork"
- "github.com/sirupsen/logrus"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
@@ -81,7 +81,7 @@ type KubeMiddleware struct {
// headless controls whether proxy is working in headless login mode.
headless bool
- logger logrus.FieldLogger
+ logger *slog.Logger
closeContext context.Context
// isCertReissuingRunning is used to only ever have one concurrent cert reissuing session requiring user input.
@@ -97,7 +97,7 @@ type KubeMiddlewareConfig struct {
CertReissuer KubeCertReissuer
Headless bool
Clock clockwork.Clock
- Logger logrus.FieldLogger
+ Logger *slog.Logger
CloseContext context.Context
}
@@ -122,7 +122,7 @@ func (m *KubeMiddleware) CheckAndSetDefaults() error {
m.clock = clockwork.NewRealClock()
}
if m.logger == nil {
- m.logger = logrus.WithField(teleport.ComponentKey, "local_proxy_kube")
+ m.logger = slog.With(teleport.ComponentKey, "local_proxy_kube")
}
if m.closeContext == nil {
return trace.BadParameter("missing close context")
@@ -140,12 +140,12 @@ func initKubeCodecs() serializer.CodecFactory {
return serializer.NewCodecFactory(kubeScheme)
}
-func writeKubeError(rw http.ResponseWriter, kubeError *apierrors.StatusError, logger logrus.FieldLogger) {
+func writeKubeError(ctx context.Context, rw http.ResponseWriter, kubeError *apierrors.StatusError, logger *slog.Logger) {
kubeCodecs := initKubeCodecs()
status := kubeError.Status()
errorBytes, err := runtime.Encode(kubeCodecs.LegacyCodec(), &status)
if err != nil {
- logger.Warnf("Failed to encode Kube status error: %v.", err)
+ logger.WarnContext(ctx, "Failed to encode Kube status error", "error", err)
trace.WriteError(rw, trace.Wrap(kubeError))
}
@@ -153,7 +153,7 @@ func writeKubeError(rw http.ResponseWriter, kubeError *apierrors.StatusError, lo
rw.WriteHeader(int(status.Code))
if _, err := rw.Write(errorBytes); err != nil {
- logger.Warnf("Failed to write Kube error: %v.", err)
+ logger.WarnContext(ctx, "Failed to write Kube error", "error", err)
}
}
@@ -170,7 +170,7 @@ func (m *KubeMiddleware) HandleRequest(rw http.ResponseWriter, req *http.Request
if err != nil {
// If user input is required we return an error that will try to get user attention to the local proxy
if errors.Is(err, ErrUserInputRequired) {
- writeKubeError(rw, &apierrors.StatusError{
+ writeKubeError(req.Context(), rw, &apierrors.StatusError{
ErrStatus: metav1.Status{
TypeMeta: metav1.TypeMeta{
Kind: "Status",
@@ -184,7 +184,7 @@ func (m *KubeMiddleware) HandleRequest(rw http.ResponseWriter, req *http.Request
}, m.logger)
return true
}
- m.logger.WithError(err).Warnf("Failed to reissue certificate for server %v", req.TLS.ServerName)
+ m.logger.WarnContext(req.Context(), "Failed to reissue certificate for server", "server", req.TLS.ServerName)
trace.WriteError(rw, trace.Wrap(err))
return true
}
diff --git a/lib/srv/alpnproxy/local_proxy.go b/lib/srv/alpnproxy/local_proxy.go
index 481e0b0813a6d..e5a8da85dcb35 100644
--- a/lib/srv/alpnproxy/local_proxy.go
+++ b/lib/srv/alpnproxy/local_proxy.go
@@ -24,6 +24,7 @@ import (
"crypto/tls"
"crypto/x509"
"io"
+ "log/slog"
"net"
"net/http"
"net/http/httputil"
@@ -33,7 +34,6 @@ import (
"github.com/gravitational/trace"
"github.com/jackc/pgproto3/v2"
"github.com/jonboulle/clockwork"
- "github.com/sirupsen/logrus"
"github.com/gravitational/teleport"
"github.com/gravitational/teleport/api/client"
@@ -43,6 +43,7 @@ import (
commonApp "github.com/gravitational/teleport/lib/srv/app/common"
"github.com/gravitational/teleport/lib/tlsca"
"github.com/gravitational/teleport/lib/utils"
+ logutils "github.com/gravitational/teleport/lib/utils/log"
)
// LocalProxy allows upgrading incoming connection to TLS where custom TLS values are set SNI ALPN and
@@ -81,7 +82,7 @@ type LocalProxyConfig struct {
// Clock is used to override time in tests.
Clock clockwork.Clock
// Log is the Logger.
- Log logrus.FieldLogger
+ Log *slog.Logger
// CheckCertNeeded determines if the local proxy will check if it should
// load cert for dialing upstream. Defaults to false, in which case
// the local proxy will always use whatever cert it has to dial upstream.
@@ -121,7 +122,7 @@ func (cfg *LocalProxyConfig) CheckAndSetDefaults() error {
cfg.Clock = clockwork.NewRealClock()
}
if cfg.Log == nil {
- cfg.Log = logrus.WithField(teleport.ComponentKey, "localproxy")
+ cfg.Log = slog.With(teleport.ComponentKey, "localproxy")
}
// set tls cert chain leaf to reduce per-handshake processing.
@@ -194,16 +195,16 @@ func (l *LocalProxy) start(ctx context.Context) error {
if utils.IsOKNetworkError(err) {
return nil
}
- l.cfg.Log.WithError(err).Error("Failed to accept client connection.")
+ l.cfg.Log.ErrorContext(ctx, "Failed to accept client connection", "error", err)
return trace.Wrap(err)
}
- l.cfg.Log.Debug("Accepted downstream connection.")
+ l.cfg.Log.DebugContext(ctx, "Accepted downstream connection")
if l.cfg.Middleware != nil {
if err := l.cfg.Middleware.OnNewConnection(ctx, l); err != nil {
- l.cfg.Log.WithError(err).Error("Middleware failed to handle client connection.")
+ l.cfg.Log.ErrorContext(ctx, "Middleware failed to handle client connection", "error", err)
if err := conn.Close(); err != nil && !utils.IsUseOfClosedNetworkError(err) {
- l.cfg.Log.WithError(err).Debug("Failed to close client connection.")
+ l.cfg.Log.DebugContext(ctx, "Failed to close client connection", "error", err)
}
continue
}
@@ -214,7 +215,7 @@ func (l *LocalProxy) start(ctx context.Context) error {
if utils.IsOKNetworkError(err) {
return
}
- l.cfg.Log.WithError(err).Error("Failed to handle connection.")
+ l.cfg.Log.ErrorContext(ctx, "Failed to handle connection", "error", err)
}
}()
}
@@ -323,10 +324,10 @@ func (l *LocalProxy) makeHTTPReverseProxy(certs ...tls.Certificate) *httputil.Re
// TODO: find a cleaner way of formatting the error.
errHeader = strings.Replace(errHeader, " \t", "\n\t", -1)
errHeader = strings.Replace(errHeader, " User Message:", "\n\n\tUser Message:", -1)
- l.cfg.Log.Warn(errHeader)
+ l.cfg.Log.WarnContext(response.Request.Context(), "Server response contained an error header", "error_header", errHeader)
}
for _, infoHeader := range response.Header.Values(commonApp.TeleportAPIInfoHeader) {
- l.cfg.Log.Infof("Server response info: %v.", infoHeader)
+ l.cfg.Log.InfoContext(response.Request.Context(), "Server response info", "header", infoHeader)
}
if err := l.cfg.HTTPMiddleware.HandleResponse(response); err != nil {
@@ -335,7 +336,7 @@ func (l *LocalProxy) makeHTTPReverseProxy(certs ...tls.Certificate) *httputil.Re
return nil
},
ErrorHandler: func(w http.ResponseWriter, r *http.Request, err error) {
- l.cfg.Log.WithError(err).Warnf("Failed to handle request %v %v.", r.Method, r.URL)
+ l.cfg.Log.WarnContext(r.Context(), "Failed to handle request ", "error", err, "method", r.Method, "url", logutils.StringerAttr(r.URL))
code := trace.ErrorToCode(err)
http.Error(w, http.StatusText(code), code)
},
@@ -351,15 +352,15 @@ func (l *LocalProxy) startHTTPAccessProxy(ctx context.Context) error {
return trace.Wrap(err)
}
- l.cfg.Log.Info("Starting HTTP access proxy")
- defer l.cfg.Log.Info("HTTP access proxy stopped")
+ l.cfg.Log.InfoContext(ctx, "Starting HTTP access proxy")
+ defer l.cfg.Log.InfoContext(ctx, "HTTP access proxy stopped")
server := &http.Server{
ReadHeaderTimeout: defaults.ReadHeadersTimeout,
Handler: http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
if l.cfg.Middleware != nil {
if err := l.cfg.Middleware.OnNewConnection(ctx, l); err != nil {
- l.cfg.Log.WithError(err).Error("Middleware failed to handle client request.")
+ l.cfg.Log.ErrorContext(ctx, "Middleware failed to handle client request", "error", err)
trace.WriteError(rw, trace.Wrap(err))
return
}
@@ -379,7 +380,7 @@ func (l *LocalProxy) startHTTPAccessProxy(ctx context.Context) error {
proxy, err := l.getHTTPReverseProxyForReq(req)
if err != nil {
- l.cfg.Log.Warnf("Failed to get reverse proxy: %v.", err)
+ l.cfg.Log.WarnContext(ctx, "Failed to get reverse proxy", "error", err)
trace.WriteError(rw, trace.Wrap(err))
return
}
@@ -410,7 +411,7 @@ func (l *LocalProxy) getHTTPReverseProxyForReq(req *http.Request) (*httputil.Rev
return nil, trace.Wrap(err)
}
- l.cfg.Log.Debug("overwrote certs")
+ l.cfg.Log.DebugContext(req.Context(), "overwrote certs")
return l.makeHTTPReverseProxy(certs...), nil
}
@@ -422,8 +423,8 @@ func (l *LocalProxy) getCert() tls.Certificate {
}
// CheckDBCert checks the proxy certificates for expiration and that the cert subject matches a database route.
-func (l *LocalProxy) CheckDBCert(dbRoute tlsca.RouteToDatabase) error {
- l.cfg.Log.Debug("checking local proxy database certs")
+func (l *LocalProxy) CheckDBCert(ctx context.Context, dbRoute tlsca.RouteToDatabase) error {
+ l.cfg.Log.DebugContext(ctx, "checking local proxy database certs")
l.certMu.RLock()
defer l.certMu.RUnlock()
@@ -445,8 +446,8 @@ func (l *LocalProxy) CheckDBCert(dbRoute tlsca.RouteToDatabase) error {
}
// CheckCertExpiry checks the proxy certificates for expiration.
-func (l *LocalProxy) CheckCertExpiry() error {
- l.cfg.Log.Debug("checking local proxy certs")
+func (l *LocalProxy) CheckCertExpiry(ctx context.Context) error {
+ l.cfg.Log.DebugContext(ctx, "checking local proxy certs")
l.certMu.RLock()
defer l.certMu.RUnlock()
diff --git a/lib/srv/alpnproxy/local_proxy_test.go b/lib/srv/alpnproxy/local_proxy_test.go
index 347ca22e891ec..063992f56f962 100644
--- a/lib/srv/alpnproxy/local_proxy_test.go
+++ b/lib/srv/alpnproxy/local_proxy_test.go
@@ -416,7 +416,7 @@ func TestCheckDBCerts(t *testing.T) {
withClock(tt.clock),
)
lp.SetCert(tlsCert)
- tt.errAssertFn(t, lp.CheckDBCert(tt.dbRoute))
+ tt.errAssertFn(t, lp.CheckDBCert(context.Background(), tt.dbRoute))
})
}
}
diff --git a/lib/srv/alpnproxy/proxy.go b/lib/srv/alpnproxy/proxy.go
index 4ac1c9d36a643..94f68fb841fcc 100644
--- a/lib/srv/alpnproxy/proxy.go
+++ b/lib/srv/alpnproxy/proxy.go
@@ -25,6 +25,7 @@ import (
"encoding/base64"
"errors"
"io"
+ "log/slog"
"net"
"strings"
"sync"
@@ -32,7 +33,6 @@ import (
"github.com/gravitational/trace"
"github.com/jonboulle/clockwork"
- "github.com/sirupsen/logrus"
"github.com/gravitational/teleport"
"github.com/gravitational/teleport/api/constants"
@@ -55,7 +55,7 @@ type ProxyConfig struct {
// Router contains definition of protocol routing and handlers description.
Router *Router
// Log is used for logging.
- Log logrus.FieldLogger
+ Log *slog.Logger
// Clock is a clock to override in tests, set to real time clock
// by default
Clock clockwork.Clock
@@ -241,7 +241,7 @@ type HandlerFunc func(ctx context.Context, conn net.Conn) error
type Proxy struct {
cfg ProxyConfig
supportedProtocols []common.Protocol
- log logrus.FieldLogger
+ log *slog.Logger
// mu guards cancel
mu sync.Mutex
@@ -257,7 +257,7 @@ func (c *ProxyConfig) CheckAndSetDefaults() error {
return trace.BadParameter("listener missing")
}
if c.Log == nil {
- c.Log = logrus.WithField(teleport.ComponentKey, "alpn:proxy")
+ c.Log = slog.With(teleport.ComponentKey, "alpn:proxy")
}
if c.Clock == nil {
c.Clock = clockwork.NewRealClock()
@@ -334,16 +334,16 @@ func (p *Proxy) Serve(ctx context.Context) error {
// https://github.com/gravitational/teleport/blob/master/lib/sshutils/server.go#L397
if err := p.handleConn(ctx, clientConn, nil); err != nil {
if cerr := clientConn.Close(); cerr != nil && !utils.IsOKNetworkError(cerr) {
- p.log.WithError(cerr).Warnf("Failed to close client connection.")
+ p.log.WarnContext(ctx, "Failed to close client connection", "error", cerr)
}
switch {
case trace.IsBadParameter(err):
- p.log.Warnf("Failed to handle client connection: %v", err)
+ p.log.WarnContext(ctx, "Failed to handle client connection", "error", err)
case utils.IsOKNetworkError(err):
case isConnRemoteError(err):
- p.log.WithField("remote_addr", clientConn.RemoteAddr()).Debugf("Connection rejected by client: %v", err)
+ p.log.DebugContext(ctx, "Connection rejected by client", "error", err, "remote_addr", clientConn.RemoteAddr())
default:
- p.log.WithError(err).Warnf("Failed to handle client connection.")
+ p.log.WarnContext(ctx, "Failed to handle client connection", "error", err)
}
}
}()
@@ -407,7 +407,7 @@ func (p *Proxy) handleConn(ctx context.Context, clientConn net.Conn, defaultOver
// We try to do quick early IP pinning check, if possible, and stop it on the proxy, without going further.
// It's based only on client cert. Client can still fail full IP pinning check later if their role now requires
// IP pinning but cert isn't pinned.
- if err := p.checkCertIPPinning(tlsConn); err != nil {
+ if err := p.checkCertIPPinning(ctx, tlsConn); err != nil {
return trace.Wrap(err)
}
@@ -419,7 +419,7 @@ func (p *Proxy) handleConn(ctx context.Context, clientConn net.Conn, defaultOver
isDatabaseConnection, err := dbutils.IsDatabaseConnection(tlsConn.ConnectionState())
if err != nil {
- p.log.WithError(err).Debug("Failed to check if connection is database connection.")
+ p.log.DebugContext(ctx, "Failed to check if connection is database connection", "error", err)
}
if isDatabaseConnection {
return trace.Wrap(p.handleDatabaseConnection(ctx, handlerConn, connInfo))
@@ -427,7 +427,7 @@ func (p *Proxy) handleConn(ctx context.Context, clientConn net.Conn, defaultOver
return trace.Wrap(handlerDesc.handle(ctx, handlerConn, connInfo))
}
-func (p *Proxy) checkCertIPPinning(tlsConn *tls.Conn) error {
+func (p *Proxy) checkCertIPPinning(ctx context.Context, tlsConn *tls.Conn) error {
state := tlsConn.ConnectionState()
if len(state.PeerCertificates) == 0 {
@@ -446,10 +446,10 @@ func (p *Proxy) checkCertIPPinning(tlsConn *tls.Conn) error {
if identity.PinnedIP != "" && (clientIP != identity.PinnedIP || port == "0") {
if port == "0" {
- p.log.WithFields(logrus.Fields{
- "client_ip": clientIP,
- "pinned_ip": identity.PinnedIP,
- }).Debug(authz.ErrIPPinningMismatch.Error())
+ p.log.DebugContext(ctx, "pinned IP doesn't match observed client IP",
+ "client_ip", clientIP,
+ "pinned_ip", identity.PinnedIP,
+ )
}
return trace.Wrap(authz.ErrIPPinningMismatch)
}
@@ -474,7 +474,7 @@ func (p *Proxy) handlePingConnection(ctx context.Context, conn *tls.Conn) utils.
err := pingConn.WritePing()
if err != nil {
if !utils.IsOKNetworkError(err) {
- p.log.WithError(err).Warn("Failed to write ping message")
+ p.log.WarnContext(ctx, "Failed to write ping message", "error", err)
}
return
@@ -547,7 +547,7 @@ func (p *Proxy) databaseHandlerWithTLSTermination(ctx context.Context, conn net.
tlsConn := tls.Server(conn, p.cfg.IdentityTLSConfig)
if err := tlsConn.SetReadDeadline(p.cfg.Clock.Now().Add(p.cfg.ReadDeadline)); err != nil {
if err := tlsConn.Close(); err != nil {
- p.log.WithError(err).Error("Failed to close TLS connection.")
+ p.log.ErrorContext(ctx, "Failed to close TLS connection", "error", err)
}
return trace.Wrap(err)
}
@@ -556,14 +556,14 @@ func (p *Proxy) databaseHandlerWithTLSTermination(ctx context.Context, conn net.
}
if err := tlsConn.SetReadDeadline(time.Time{}); err != nil {
if err := tlsConn.Close(); err != nil {
- p.log.WithError(err).Error("Failed to close TLS connection.")
+ p.log.ErrorContext(ctx, "Failed to close TLS connection", "error", err)
}
return trace.Wrap(err)
}
isDatabaseConnection, err := dbutils.IsDatabaseConnection(tlsConn.ConnectionState())
if err != nil {
- p.log.WithError(err).Debug("Failed to check if connection is database connection.")
+ p.log.DebugContext(ctx, "Failed to check if connection is database connection", "error", err)
}
if !isDatabaseConnection {
return trace.BadParameter("not database connection")
diff --git a/lib/tbot/service_application_tunnel.go b/lib/tbot/service_application_tunnel.go
index 427a4558d4e5c..36478d983f313 100644
--- a/lib/tbot/service_application_tunnel.go
+++ b/lib/tbot/service_application_tunnel.go
@@ -150,7 +150,7 @@ func (s *ApplicationTunnelService) buildLocalProxyConfig(ctx context.Context) (l
ctx, span := tracer.Start(ctx, "ApplicationTunnelService/OnNewConnection")
defer span.End()
- if err := lp.CheckCertExpiry(); err != nil {
+ if err := lp.CheckCertExpiry(ctx); err != nil {
s.log.InfoContext(ctx, "Certificate for tunnel needs reissuing.", "reason", err.Error())
cert, _, err := s.issueCert(ctx, roles)
if err != nil {
diff --git a/lib/tbot/service_database_tunnel.go b/lib/tbot/service_database_tunnel.go
index 4ba5c5c3647cf..d65a8d94b3a3f 100644
--- a/lib/tbot/service_database_tunnel.go
+++ b/lib/tbot/service_database_tunnel.go
@@ -130,7 +130,7 @@ func (s *DatabaseTunnelService) buildLocalProxyConfig(ctx context.Context) (lpCf
defer span.End()
// Check if the certificate needs reissuing, if so, reissue.
- if err := lp.CheckDBCert(tlsca.RouteToDatabase{
+ if err := lp.CheckDBCert(ctx, tlsca.RouteToDatabase{
ServiceName: routeToDatabase.ServiceName,
Protocol: routeToDatabase.Protocol,
Database: routeToDatabase.Database,
diff --git a/lib/teleterm/gateway/app_middleware.go b/lib/teleterm/gateway/app_middleware.go
index 2da5946018147..8af69271ade03 100644
--- a/lib/teleterm/gateway/app_middleware.go
+++ b/lib/teleterm/gateway/app_middleware.go
@@ -38,7 +38,7 @@ type appMiddleware struct {
// Other middlewares typically also handle MFA here. App access doesn't support per-session MFA yet,
// so detecting expired certs is all this middleware can do.
func (m *appMiddleware) OnNewConnection(ctx context.Context, lp *alpn.LocalProxy) error {
- err := lp.CheckCertExpiry()
+ err := lp.CheckCertExpiry(ctx)
if err == nil {
return nil
}
diff --git a/lib/teleterm/gateway/db_middleware.go b/lib/teleterm/gateway/db_middleware.go
index df25c400130e1..cd189fff048a0 100644
--- a/lib/teleterm/gateway/db_middleware.go
+++ b/lib/teleterm/gateway/db_middleware.go
@@ -44,7 +44,7 @@ type dbMiddleware struct {
// In the future, DBCertChecker is going to be extended so that it's used by both tsh and Connect
// and this middleware will be removed.
func (m *dbMiddleware) OnNewConnection(ctx context.Context, lp *alpn.LocalProxy) error {
- err := lp.CheckDBCert(m.dbRoute)
+ err := lp.CheckDBCert(ctx, m.dbRoute)
if err == nil {
return nil
}
diff --git a/lib/teleterm/gateway/kube.go b/lib/teleterm/gateway/kube.go
index 17a3b4a55241d..1dccb4189accc 100644
--- a/lib/teleterm/gateway/kube.go
+++ b/lib/teleterm/gateway/kube.go
@@ -26,6 +26,7 @@ import (
"crypto/rsa"
"crypto/tls"
"encoding/pem"
+ "log/slog"
"github.com/gravitational/trace"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
@@ -160,8 +161,9 @@ func (k *kube) makeKubeMiddleware() (alpnproxy.LocalProxyHTTPMiddleware, error)
cert, err := k.cfg.OnExpiredCert(ctx, k)
return cert, trace.Wrap(err)
},
- Clock: k.cfg.Clock,
- Logger: k.cfg.Log,
+ Clock: k.cfg.Clock,
+ // TODO(tross): update this when kube is converted to use slog.
+ Logger: slog.Default(),
CloseContext: k.closeContext,
}), nil
}
diff --git a/lib/web/apiserver.go b/lib/web/apiserver.go
index f1246187a5afe..796e8351ca6f7 100644
--- a/lib/web/apiserver.go
+++ b/lib/web/apiserver.go
@@ -1009,6 +1009,9 @@ func (h *Handler) bindDefaultEndpoints() {
// SAML IDP integration endpoints
h.GET("/webapi/scripts/integrations/configure/gcp-workforce-saml.sh", h.WithLimiter(h.gcpWorkforceConfigScript))
+ // Okta integration endpoints.
+ h.GET("/.well-known/jwks-okta", h.WithLimiter(h.jwksOkta))
+
// Azure OIDC integration endpoints
h.GET("/webapi/scripts/integrations/configure/azureoidc.sh", h.WithLimiter(h.azureOIDCConfigure))
diff --git a/lib/web/apiserver_test.go b/lib/web/apiserver_test.go
index 5b78a5cd60c54..08611d1c2390a 100644
--- a/lib/web/apiserver_test.go
+++ b/lib/web/apiserver_test.go
@@ -34,6 +34,7 @@ import (
"errors"
"fmt"
"io"
+ "log/slog"
"net"
"net/http"
"net/http/cookiejar"
@@ -58,7 +59,6 @@ import (
"github.com/jonboulle/clockwork"
"github.com/julienschmidt/httprouter"
"github.com/pquerna/otp/totp"
- "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
commonv1 "go.opentelemetry.io/proto/otlp/common/v1"
@@ -9534,7 +9534,7 @@ func initGRPCServer(t *testing.T, env *webPack, listener net.Listener) {
AcceptedUsage: []string{teleport.UsageKubeOnly},
}
- tlsConf := copyAndConfigureTLS(tlsConfig, logrus.New(), proxyAuthClient, clusterName)
+ tlsConf := copyAndConfigureTLS(tlsConfig, proxyAuthClient, clusterName)
creds, err := auth.NewTransportCredentials(auth.TransportCredentialsConfig{
TransportCredentials: credentials.NewTLS(tlsConf),
UserGetter: authMiddleware,
@@ -9561,7 +9561,7 @@ func initGRPCServer(t *testing.T, env *webPack, listener net.Listener) {
// copyAndConfigureTLS can be used to copy and modify an existing *tls.Config
// for Teleport application proxy servers.
-func copyAndConfigureTLS(config *tls.Config, log logrus.FieldLogger, accessPoint authclient.AccessCache, clusterName string) *tls.Config {
+func copyAndConfigureTLS(config *tls.Config, accessPoint authclient.AccessCache, clusterName string) *tls.Config {
tlsConfig := config.Clone()
// Require clients to present a certificate
@@ -9571,7 +9571,7 @@ func copyAndConfigureTLS(config *tls.Config, log logrus.FieldLogger, accessPoint
// client's certificate to verify the chain presented. If the client does not
// pass in the cluster name, this functions pulls back all CA to try and
// match the certificate presented against any CA.
- tlsConfig.GetConfigForClient = authclient.WithClusterCAs(tlsConfig.Clone(), accessPoint, clusterName, log)
+ tlsConfig.GetConfigForClient = authclient.WithClusterCAs(tlsConfig.Clone(), accessPoint, clusterName, slog.Default())
return tlsConfig
}
diff --git a/lib/web/jwt.go b/lib/web/jwt.go
new file mode 100644
index 0000000000000..40ae3011db979
--- /dev/null
+++ b/lib/web/jwt.go
@@ -0,0 +1,65 @@
+// Teleport
+// Copyright (C) 2024 Gravitational, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+package web
+
+import (
+ "context"
+
+ "github.com/gravitational/trace"
+
+ "github.com/gravitational/teleport/api/types"
+ "github.com/gravitational/teleport/lib/jwt"
+)
+
+func (h *Handler) jwks(ctx context.Context, caType types.CertAuthType, includeBlankKeyID bool) (*JWKSResponse, error) {
+ clusterName, err := h.GetProxyClient().GetDomainName(ctx)
+ if err != nil {
+ return nil, trace.Wrap(err)
+ }
+
+ // Fetch the JWT public keys only.
+ ca, err := h.GetProxyClient().GetCertAuthority(ctx, types.CertAuthID{
+ Type: caType,
+ DomainName: clusterName,
+ }, false /* loadKeys */)
+ if err != nil {
+ return nil, trace.Wrap(err)
+ }
+
+ pairs := ca.GetTrustedJWTKeyPairs()
+
+ // Create response and allocate space for the keys.
+ var resp JWKSResponse
+ resp.Keys = make([]jwt.JWK, 0, len(pairs))
+
+ // Loop over and all add public keys in JWK format.
+ for _, key := range pairs {
+ jwk, err := jwt.MarshalJWK(key.PublicKey)
+ if err != nil {
+ return nil, trace.Wrap(err)
+ }
+ resp.Keys = append(resp.Keys, jwk)
+
+ // Return an additional copy of the same JWK
+ // with KeyID set to the empty string for compatibility.
+ if includeBlankKeyID {
+ jwk.KeyID = ""
+ resp.Keys = append(resp.Keys, jwk)
+ }
+ }
+ return &resp, nil
+}
diff --git a/lib/web/oidcidp.go b/lib/web/oidcidp.go
index 28a9b7b7465b0..7b9c433f378f7 100644
--- a/lib/web/oidcidp.go
+++ b/lib/web/oidcidp.go
@@ -19,7 +19,6 @@
package web
import (
- "context"
"net/http"
"github.com/gravitational/trace"
@@ -27,7 +26,6 @@ import (
"github.com/gravitational/teleport/api/types"
"github.com/gravitational/teleport/lib/integrations/awsoidc"
- "github.com/gravitational/teleport/lib/jwt"
"github.com/gravitational/teleport/lib/utils/oidc"
)
@@ -51,45 +49,6 @@ func (h *Handler) jwksOIDC(_ http.ResponseWriter, r *http.Request, _ httprouter.
return h.jwks(r.Context(), types.OIDCIdPCA, true)
}
-func (h *Handler) jwks(ctx context.Context, caType types.CertAuthType, includeBlankKeyID bool) (*JWKSResponse, error) {
- clusterName, err := h.GetProxyClient().GetDomainName(ctx)
- if err != nil {
- return nil, trace.Wrap(err)
- }
-
- // Fetch the JWT public keys only.
- ca, err := h.GetProxyClient().GetCertAuthority(ctx, types.CertAuthID{
- Type: caType,
- DomainName: clusterName,
- }, false /* loadKeys */)
- if err != nil {
- return nil, trace.Wrap(err)
- }
-
- pairs := ca.GetTrustedJWTKeyPairs()
-
- // Create response and allocate space for the keys.
- var resp JWKSResponse
- resp.Keys = make([]jwt.JWK, 0, len(pairs))
-
- // Loop over and all add public keys in JWK format.
- for _, key := range pairs {
- jwk, err := jwt.MarshalJWK(key.PublicKey)
- if err != nil {
- return nil, trace.Wrap(err)
- }
- resp.Keys = append(resp.Keys, jwk)
-
- // Return an additional copy of the same JWK
- // with KeyID set to the empty string for compatibility.
- if includeBlankKeyID {
- jwk.KeyID = ""
- resp.Keys = append(resp.Keys, jwk)
- }
- }
- return &resp, nil
-}
-
// thumbprint returns the thumbprint as required by AWS when adding an OIDC Identity Provider.
// This is documented here:
// https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc_verify-thumbprint.html
diff --git a/lib/web/oidcidp_test.go b/lib/web/oidcidp_test.go
index a663a13db6a92..20c9063a7fcb0 100644
--- a/lib/web/oidcidp_test.go
+++ b/lib/web/oidcidp_test.go
@@ -72,41 +72,14 @@ func TestOIDCIdPPublicEndpoints(t *testing.T) {
resp, err = publicClt.Get(ctx, gotConfiguration.JWKSURI, nil)
require.NoError(t, err)
- type jwksKey struct {
- Use string `json:"use"`
- KeyID *string `json:"kid"`
- KeyType string `json:"kty"`
- Alg string `json:"alg"`
- }
- type jwksKeys struct {
- Keys []jwksKey `json:"keys"`
- }
-
- var gotKeys jwksKeys
+ var gotKeys JWKSResponse
err = json.Unmarshal(resp.Bytes(), &gotKeys)
require.NoError(t, err)
// Expect the same key twice, once with a synthesized Key ID, and once with an empty Key ID for compatibility.
require.Len(t, gotKeys.Keys, 2)
- require.NotEmpty(t, *gotKeys.Keys[0].KeyID)
- require.Equal(t, "", *gotKeys.Keys[1].KeyID)
- expectedKeys := jwksKeys{
- Keys: []jwksKey{
- {
- Use: "sig",
- KeyType: "RSA",
- Alg: "RS256",
- KeyID: gotKeys.Keys[0].KeyID,
- },
- {
- Use: "sig",
- KeyType: "RSA",
- Alg: "RS256",
- KeyID: new(string),
- },
- },
- }
- require.Equal(t, expectedKeys, gotKeys)
+ require.NotEmpty(t, gotKeys.Keys[0].KeyID)
+ require.Empty(t, gotKeys.Keys[1].KeyID)
}
func TestThumbprint(t *testing.T) {
diff --git a/lib/web/okta.go b/lib/web/okta.go
new file mode 100644
index 0000000000000..67dec290784ae
--- /dev/null
+++ b/lib/web/okta.go
@@ -0,0 +1,32 @@
+// Teleport
+// Copyright (C) 2024 Gravitational, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+package web
+
+import (
+ "net/http"
+
+ "github.com/julienschmidt/httprouter"
+
+ "github.com/gravitational/teleport/api/types"
+)
+
+// jwksOkta returns public keys used to verify JWT tokens signed for use with Okta API Service App
+// machine-to-machine authentication.
+// https://developer.okta.com/docs/guides/implement-oauth-for-okta-serviceapp/main/
+func (h *Handler) jwksOkta(_ http.ResponseWriter, r *http.Request, _ httprouter.Params) (interface{}, error) {
+ return h.jwks(r.Context(), types.OktaCA, false /* includeBlankKeyID */)
+}
diff --git a/lib/web/okta_test.go b/lib/web/okta_test.go
new file mode 100644
index 0000000000000..b884aa5f85283
--- /dev/null
+++ b/lib/web/okta_test.go
@@ -0,0 +1,46 @@
+// Teleport
+// Copyright (C) 2024 Gravitational, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+package web
+
+import (
+ "context"
+ "encoding/json"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+// TestJWKSOktaPublicEndpoint ensures the public endpoint for the Okta API Service App integration
+// is available.
+func TestJWKSOktaPublicEndpoint(t *testing.T) {
+ t.Parallel()
+ ctx := context.Background()
+ env := newWebPack(t, 1)
+ proxy := env.proxies[0]
+
+ publicClt := proxy.newClient(t)
+
+ resp, err := publicClt.Get(ctx, publicClt.Endpoint(".well-known/jwks-okta"), nil)
+ require.NoError(t, err)
+
+ var gotKeys JWKSResponse
+ err = json.Unmarshal(resp.Bytes(), &gotKeys)
+ require.NoError(t, err)
+
+ require.Len(t, gotKeys.Keys, 1)
+ require.NotEmpty(t, gotKeys.Keys[0].KeyID)
+}
diff --git a/lib/web/spiffe_test.go b/lib/web/spiffe_test.go
index eef680d411123..1eb49b33b4369 100644
--- a/lib/web/spiffe_test.go
+++ b/lib/web/spiffe_test.go
@@ -131,30 +131,10 @@ func TestSPIFFEJWTPublicEndpoints(t *testing.T) {
resp, err = publicClt.Get(ctx, gotConfiguration.JWKSURI, nil)
require.NoError(t, err)
- type jwksKey struct {
- Use string `json:"use"`
- KeyID string `json:"kid"`
- KeyType string `json:"kty"`
- Alg string `json:"alg"`
- }
- type jwksKeys struct {
- Keys []jwksKey `json:"keys"`
- }
- gotKeys := jwksKeys{}
+ var gotKeys JWKSResponse
err = json.Unmarshal(resp.Bytes(), &gotKeys)
require.NoError(t, err)
require.Len(t, gotKeys.Keys, 1)
require.NotEmpty(t, gotKeys.Keys[0].KeyID)
- expectedKeys := jwksKeys{
- Keys: []jwksKey{
- {
- Use: "sig",
- KeyType: "EC",
- Alg: "ES256",
- KeyID: gotKeys.Keys[0].KeyID,
- },
- },
- }
- require.Equal(t, expectedKeys, gotKeys)
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4f4d986da4820..94b69155e300a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -470,11 +470,11 @@ importers:
specifier: ^5.5.0
version: 5.5.0
electron:
- specifier: 33.1.0
- version: 33.1.0
+ specifier: 33.2.1
+ version: 33.2.1
electron-builder:
- specifier: ^25.1.7
- version: 25.1.7(electron-builder-squirrel-windows@25.1.7(dmg-builder@25.1.7))
+ specifier: ^25.1.8
+ version: 25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8))
electron-vite:
specifier: ^2.3.0
version: 2.3.0(@swc/core@1.9.3)(vite@5.4.8(@types/node@20.17.9)(terser@5.31.1))
@@ -2873,12 +2873,12 @@ packages:
app-builder-bin@5.0.0-alpha.10:
resolution: {integrity: sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==}
- app-builder-lib@25.1.7:
- resolution: {integrity: sha512-JxmN+D/Dn7BLQoN+cTFO+zbMHcpI10v/xjyjFO1FKpHbApOG+OQt/xUyVjKWp4FYplIfuHdpxqTXo1PN/Wzm/A==}
+ app-builder-lib@25.1.8:
+ resolution: {integrity: sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==}
engines: {node: '>=14.0.0'}
peerDependencies:
- dmg-builder: 25.1.7
- electron-builder-squirrel-windows: 25.1.7
+ dmg-builder: 25.1.8
+ electron-builder-squirrel-windows: 25.1.8
append-transform@2.0.0:
resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==}
@@ -3578,8 +3578,8 @@ packages:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
- dmg-builder@25.1.7:
- resolution: {integrity: sha512-Hac0AfXQrAV62JT99Had6bvUJb/f7vjJTaLOsmA/gAQcrc/cLmNAqCJ0ZZDqwKy2+LKXnxx45TvMXvovKd4iMg==}
+ dmg-builder@25.1.8:
+ resolution: {integrity: sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==}
dmg-license@1.0.11:
resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==}
@@ -3643,11 +3643,11 @@ packages:
engines: {node: '>=0.10.0'}
hasBin: true
- electron-builder-squirrel-windows@25.1.7:
- resolution: {integrity: sha512-nJMvw1FNy+6YP8HmjSb0JwMowpdlZpydZGab9KevKO/fIC9wTcr5rkhbLsTfEPOjdAqOTycRoK0mOJCFB/1uig==}
+ electron-builder-squirrel-windows@25.1.8:
+ resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==}
- electron-builder@25.1.7:
- resolution: {integrity: sha512-lsKtX93GSHWnmuteNRvBzgJIjRiiYB0qrJVRjShwBi75Ns+mRdWeOGZiXItqOWj+3g5UyY722kgoq2WlqCB87A==}
+ electron-builder@25.1.8:
+ resolution: {integrity: sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -3668,8 +3668,8 @@ packages:
'@swc/core':
optional: true
- electron@33.1.0:
- resolution: {integrity: sha512-7KiY6MtRo1fVFLPGyHS7Inh8yZfrbUTy43nNwUgMD2CBk729BgSwOC2WhmcptNJVlzHJpVxSWkiVi2hp9mH/bw==}
+ electron@33.2.1:
+ resolution: {integrity: sha512-SG/nmSsK9Qg1p6wAW+ZfqU+AV8cmXMTIklUL18NnOKfZLlum4ZsDoVdmmmlL39ZmeCaq27dr7CgslRPahfoVJg==}
engines: {node: '>= 12.20.55'}
hasBin: true
@@ -9410,7 +9410,7 @@ snapshots:
app-builder-bin@5.0.0-alpha.10: {}
- app-builder-lib@25.1.7(dmg-builder@25.1.7(electron-builder-squirrel-windows@25.1.7))(electron-builder-squirrel-windows@25.1.7(dmg-builder@25.1.7)):
+ app-builder-lib@25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)):
dependencies:
'@develar/schema-utils': 2.6.5
'@electron/notarize': 2.5.0
@@ -9426,11 +9426,11 @@ snapshots:
chromium-pickle-js: 0.2.0
config-file-ts: 0.2.8-rc1
debug: 4.3.7
- dmg-builder: 25.1.7(electron-builder-squirrel-windows@25.1.7)
+ dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8)
dotenv: 16.4.5
dotenv-expand: 11.0.6
ejs: 3.1.10
- electron-builder-squirrel-windows: 25.1.7(dmg-builder@25.1.7)
+ electron-builder-squirrel-windows: 25.1.8(dmg-builder@25.1.8)
electron-publish: 25.1.7
form-data: 4.0.1
fs-extra: 10.1.0
@@ -10289,9 +10289,9 @@ snapshots:
dependencies:
path-type: 4.0.0
- dmg-builder@25.1.7(electron-builder-squirrel-windows@25.1.7):
+ dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8):
dependencies:
- app-builder-lib: 25.1.7(dmg-builder@25.1.7(electron-builder-squirrel-windows@25.1.7))(electron-builder-squirrel-windows@25.1.7(dmg-builder@25.1.7))
+ app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8))
builder-util: 25.1.7
builder-util-runtime: 9.2.10
fs-extra: 10.1.0
@@ -10373,9 +10373,9 @@ snapshots:
dependencies:
jake: 10.8.5
- electron-builder-squirrel-windows@25.1.7(dmg-builder@25.1.7):
+ electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8):
dependencies:
- app-builder-lib: 25.1.7(dmg-builder@25.1.7(electron-builder-squirrel-windows@25.1.7))(electron-builder-squirrel-windows@25.1.7(dmg-builder@25.1.7))
+ app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8))
archiver: 5.3.2
builder-util: 25.1.7
fs-extra: 10.1.0
@@ -10384,13 +10384,13 @@ snapshots:
- dmg-builder
- supports-color
- electron-builder@25.1.7(electron-builder-squirrel-windows@25.1.7(dmg-builder@25.1.7)):
+ electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)):
dependencies:
- app-builder-lib: 25.1.7(dmg-builder@25.1.7(electron-builder-squirrel-windows@25.1.7))(electron-builder-squirrel-windows@25.1.7(dmg-builder@25.1.7))
+ app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8))
builder-util: 25.1.7
builder-util-runtime: 9.2.10
chalk: 4.1.2
- dmg-builder: 25.1.7(electron-builder-squirrel-windows@25.1.7)
+ dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8)
fs-extra: 10.1.0
is-ci: 3.0.1
lazy-val: 1.0.5
@@ -10429,7 +10429,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- electron@33.1.0:
+ electron@33.2.1:
dependencies:
'@electron/get': 2.0.2
'@types/node': 20.17.9
diff --git a/rfd/0191-workload-id-config-ux.md b/rfd/0191-workload-id-config-ux.md
new file mode 100644
index 0000000000000..f8ee211381003
--- /dev/null
+++ b/rfd/0191-workload-id-config-ux.md
@@ -0,0 +1,1469 @@
+---
+authors: Noah Stride (noah@goteleport.com)
+state: draft
+---
+
+# RFD 0191 - Workload Identity Configuration and RBAC Overhaul
+
+## Required Approvers
+
+* Engineering: @timothyb89
+* Product: @thedevelopnik
+
+## What
+
+Overhaul the Workload Identity configuration and RBAC UX to resolve challenges
+with operating Workload Identity at Scale.
+
+This will be achieved by introducing a new resource to Teleport, the
+WorkloadIdentity, which will become the primary resource used to configure
+Teleport Workload Identity.
+
+## Why
+
+Today, Teleport Workload Identity is configured via a combination of mechanisms:
+Roles, Join Tokens, Bots and the `tbot` configuration itself. This worked fine
+for the initial proof of concept where operation at scale was not a primary
+concern, however, it has become apparent that without change, this will not
+scale nicely.
+
+Let's consider this within the context of a common use-case.
+
+I wish to issue my GitLab CI workflows SPIFFE IDs that uniquely identify them.
+For example, `spiffe://example.teleport.sh/gitlab/my-org/my-repo/my-workflow`.
+I have 1000 of these.
+
+Today, I need to create a Join Token, Bot, Role for each workflow. I must also
+maintain a unique configuration for the `tbot` within each workflow.
+
+This has the following negative impacts:
+
+- Maintaining a large number of similar configuration items is laborious and
+ frustrating.
+- Enforcing policies/compliance across a larger number of configuration items
+ is more challenging.
+- Configuration in `tbot` can "mismatch" what is allowed by Teleport's RBAC
+ engine, leading to errors. Therefore, `tbot` configuration must be kept
+ "in-step" with Teleport resource-based configuration.
+- Larger numbers of resources places a greater amount of pressure on the
+ Teleport Control Plane and cache.
+
+This leads to a couple of "desires":
+
+- The ability to "template" the SPIFFE IDs of issued SVIDs using metadata from
+ attestations, reducing the number of configuration resources required.
+- The ability to modify the issuance of SPIFFE IDs without needing to modify
+ the configuration of individual `tbot` installations. If I want to change the
+ structure of the SPIFFE IDs, I should be able to do this without modifying
+ each individual workflow's configuration.
+- The ability to centrally control elements of issuance that are critical for
+ compliance (e.g TTL, Key types etc).
+
+## Background
+
+When issuing a workload an identity, there's a number of pieces of metadata that
+can be used in that decision, and could potentially included in the resulting
+identity document:
+
+- Join Metadata (Node Attestation)
+ - When a bot authenticates/joins via the Teleport Auth Service, rich metadata
+ about the delegated identity is attested to the Auth Service. For example,
+ when joining with the GitLab join method, the Auth Service can determine the
+ organization, repository and workflow names.
+- Workload Attestation Metadata
+ - When a workload connects to the SPIFFE Workload API, the `tbot` agent can
+ determine metadata about the workflow itself. For example, on Kubernetes
+ it can determine the name of the pod, namespace and service account.
+ - It's worth bearing in mind that whilst the `tbot` agent is able to "trust"
+ this information, the Auth Service cannot transitively "trust" that this
+ has not been tampered by a malicious `tbot`. This should be considered
+ when designing SPIFFE IDs, with information that can be attested from the
+ Join itself coming before information from the workload attestation.
+ - In some environments, this is likely to be uninformative. For example, with
+ a CI/CD run in GitLab, the Join Metadata containing information such as the
+ repository or workflow is more interesting for the purposes of templating a
+ SPIFFE ID than the UID or PID of the workload that has connected to tbot
+ within the workflow execution.
+- User Metadata
+ - This is a looser category, but consider traits, labels and name of the
+ User/Bot requesting the generation of the identity. This information doesn't
+ come from an attestation process, but is typically "administrative" and set
+ by the operator.
+
+Today:
+
+- `tbot` authenticates to the Auth Service in the join process, and if the
+ attested delegated identity matches the Join Token rules, it is granted a
+ certificate for the attached Bot identity including the Bot's roles.
+- A Teleport Role can contain rules that determine what SPIFFE IDs can be
+ requested in SVIDs by a principal that holds this role. Basic wildcarding is
+ possible.
+- `tbot` itself decides which SPIFFE ID should be requested for a given
+ workload based on its configuration and which workload attestation rules
+ within that configuration have passed.
+- Effectively, a combination of local and central configuration controls what
+ SVIDs are issued by `tbot`.
+
+## UX
+
+At the core of the UX overhaul is the introduction of a new resource, the
+WorkloadIdentity. This resource is designed to capture the configuration of
+Teleport Workload Identity for a single workload, or, a group of similar
+workloads for which a structured identifier can be generated from a template.
+It effectively acts as a template for the generation of workload identity
+credentials (e.g SVIDs).
+
+The WorkloadIdentity resource in its simplest form merely specifies an static
+SPIFFE ID path - in this example - the resulting SPIFFE ID would be
+`spiffe://example.teleport.sh/my/awesome/identity`:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: my-workload-identity
+ labels:
+ env: production
+spec:
+ spiffe:
+ # Provide the path element of the workload identifier (SPIFFE ID).
+ id: /my/awesome/identity
+ # Optionally provide a "hint" that will be provided to workloads using the
+ # SPIFFE Workload API to fetch workload identity credentials.
+ hint: my-hint
+```
+
+As with most Teleport resources, a basic layer of RBAC based on the label
+matcher mechanism will be present. A user or bot must hold a role with the
+appropriate label matchers for a WorkloadIdentity in order to execute it:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: my-workload-identity
+ labels:
+ env: production
+spec:
+ spiffe:
+ id: /my/awesome/identity
+---
+kind: role
+metadata:
+ name: production-workload-identity
+spec:
+ allow:
+ workload_identity_labels:
+ env: production
+```
+
+### Templating
+
+Certain fields, such as `spec.spiffe.id`, will support templating using a
+set of attributes from the attestation during Bot's Join, the Bot resource
+itself and any workload attestation that has been completed by the `tbot` agent.
+
+To use templating, the name of an attribute is enclosed between `{{` and `}}`.
+
+For example:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: gitlab
+spec:
+ spiffe:
+ id: /gitlab/{{ join.gitlab.project_path }}/{{ join.gitlab.environment }}
+```
+
+This WorkloadIdentity would result in a SPIFFE ID of
+`spiffe://example.teleport/sh/gitlab/my-org/my-project/production` if the Bot
+had joined with the GitLab join method from a CI pipeline in the
+`my-org/my-project` repository which was configured to deploy to the
+`production` environment.
+
+Including an attribute within the WorkloadIdentity will implicitly restrict the
+issuance of that WorkloadIdentity to workloads that possess this attribute. In
+the given example, the WorkloadIdentity could only be used where a join
+has occurred using the `gitlab` join method.
+
+### Rules
+
+To restrict the issuance of a WorkloadIdentity based on attributes from the
+join, workload attestation or the Bot itself, a set of explicit rules can be
+set within the WorkloadIdentity resource:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: my-workload-identity
+spec:
+ spiffe:
+ # Implicitly, this WorkloadIdentity can only be issued to requester's
+ # with a successful join via the GitLab join method.
+ id: /gitlab/{{ join.gitlab.project_path }}/{{ join.gitlab.environment }}
+ rules:
+ allow:
+ - conditions:
+ # The CI must be running in the "foo" namespace in GitLab
+ - attribute: join.gitlab.namespace_path
+ equals: foo
+ # AND
+ # The CI must be running against the "special" environment
+ - attribute: join.gitlab.environment
+ equals: special
+ # OR
+ - conditions:
+ # The CI must be running in the "bar" namespace in GitLab
+ - attribute: join.gitlab.namespace_path
+ equals: bar
+ deny:
+ - conditions:
+ # The CI must not be running against the "dev" environment.
+ - attribute: join.gitlab.environment
+ equals: dev
+```
+
+Each WorkloadIdentity resource has two rulesets - `allow` and `deny`.
+
+If the `allow` ruleset is non-empty, then at least one rule within the set must
+return true for the WorkloadIdentity to be issued.
+
+If the `deny` ruleset is non-empty, then all rules within the set must return
+false for the WorkloadIdentity to be issued.
+
+Each rule consists of either a set of conditions or an expression. A rule
+cannot have both conditions and an expression.
+
+When conditions have been provided within a rule, then all conditions within the
+rule must return true for the rule to return true. A condition consists of a
+single target attribute, a single operator and a single expected value.
+
+Initially, the following operators will be supported:
+
+- `equals`: The target attribute must equal the given value.
+- `not_equals`: The target attribute must not equal the given value
+- `matches`: The target attribute must be a string and must match the
+ given regex pattern.
+- `not_matches`: The target attribute must be a string and must not match
+ the given regex pattern.
+- `in`: The target attribute must equal one of the values in the given list.
+- `not_in`: The target attribute must not equal any of the values in the given
+ list.
+
+Future iterations may introduce additional operators as we better understand the
+types of conditions that will be useful to users.
+
+Alternatively, a rule may consist of a single expression. This expression is
+configured by the user in the predicate language with access to the same
+attributes as the conditions and templating. This expression must return a
+boolean value. For example:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: my-workload-identity
+spec:
+ spiffe:
+ # Implicitly, this WorkloadIdentity can only be issued to requester's
+ # with a successful join via the GitLab join method.
+ id: /gitlab/{{ join.gitlab.project_path }}/{{ join.gitlab.environment }}
+ rules:
+ allow:
+ - expression: join.gitlab.environment == "production"
+```
+
+See "Predicate Language" for further details.
+
+### Attributes
+
+The attributes available for templating and rule evaluation will come from
+three sources:
+
+- `join`: From the attestation performed when the bot joined. This will be
+ specific to the join method used. E.g `join.gitlab.project_path`.
+- `workload`: From the workload attestation performed by `tbot`. The presence of
+ these attributes is dependent on whether workload attestation has been
+ performed by `tbot` and which form of attestation has been performed. E.g
+ `workload.k8s.namespace`.
+- `user`: From the identity of the user calling the WorkloadIdentity API. E.g
+ `user.bot_name` or `user.traits`. This information does not directly come from
+ attestation but may be useful for referencing administrative or organizational
+ values.
+
+Attributes take a hierarchical form which can be navigated within templates and
+rules using `.`. For example, `join.gitlab.project_path`.
+
+Documentation will be generated with an exhaustive list of available attributes
+and example values.
+
+The audit log entry for the issuance of a WorkloadIdentity will include the
+full attribute set that was used during rule and template evaluation. This will
+not only serve as a tool for compliance and auditing, but, will also provide
+the necessary information to debug issues with the configuration of templates
+and rules.
+
+### `tbot` Configuration
+
+In addition to this resource configuring the Teleport control plane's
+authorization rules as to who and what workload identity credentials
+can be issued, the WorkloadIdentity resource will also serve as a form of
+remote configuration for the `tbot` workload identity agent - removing the need
+for explicit configuration of workload identity credentials at the edge.
+
+For example, to configure `tbot` to attempt to issue a specific
+WorkloadIdentity:
+
+```yaml
+services:
+- type: spiffe-workload-api
+ listen: unix:///opt/machine-id/workload.sock
+ workload_identity: my-workload-identity
+```
+
+Label matchers can be specified within the `tbot` configuration to issue
+any WorkloadIdentity which matches those labels and to which the Bot has access:
+
+```yaml
+services:
+- type: spiffe-workload-api
+ listen: unix:///opt/machine-id/workload.sock
+ workload_identity_labels:
+ env: production
+```
+
+The "wildcard" label matcher can be used within the `tbot` configuration to
+issue any WorkloadIdentity to which the Bot has access:
+
+```yaml
+services:
+- type: spiffe-workload-api
+ listen: unix:///opt/machine-id/workload.sock
+ workload_identity_labels:
+ '*': '*'
+```
+
+The `workload_identity` and `workload_identity_labels` fields are mutually
+exclusive, that is, a service may be configured with either a specific
+WorkloadIdentity or with a set of labels to match against WorkloadIdentity
+resources.
+
+These configuration values may also be provided using the "zero-config" CLI
+flags for `tbot`:
+
+```shell
+$ tbot start workload-identity \
+ --proxy-server example.teleport.sh:443 \
+ --join-token my-join-token \
+ --workload-identity my-workload-identity \
+ --destination /opt/workload-id
+
+$ tbot start workload-identity \
+ --proxy-server example.teleport.sh:443 \
+ --join-token my-join-token \
+ --workload-identity-labels env:production \
+ --destination /opt/workload-id
+
+ $ tbot start workload-identity \
+ --proxy-server example.teleport.sh:443 \
+ --join-token my-join-token \
+ --workload-identity-labels *:* \
+ --destination /opt/workload-id
+```
+
+### Configuration Tooling
+
+The WorkloadIdentity resource will support configuration via four methods:
+
+- The `tctl create`/`tctl update` commands with a YAML representation
+- The Teleport Terraform Provider
+- The Teleport Kubernetes Operator as Kubernetes CRDs
+- The Teleport gRPC API
+
+### Diagnostics Tooling
+
+The flexibility of the templating, rules and attributes system allows
+potentially complex configurations to be created. As such, we must provide
+tooling to assist operators in testing and debugging WorkloadIdentity
+configurations.
+
+The `tctl` CLI will be extended with a new command
+`tctl workload-identity test` that will locally evaluate a WorkloadIdentity,
+or set of WorkloadIdentities, against a given set of attributes and return a
+description of the workload identity credentials that would have been issued.
+
+Operators will be able to specify a WorkloadIdentity from a local file which
+may not yet exist in the Teleport cluster, or specify an existing
+WorkloadIdentity by name.
+
+Operators will provide the attributes as a file in YAML or JSON format. This
+will be in the same structure as the attributes included in the Teleport
+audit log.
+
+For example:
+
+```shell
+$ tctl workload-identity test --workload-identity-file ./my-workload-identity.yaml --attributes-file ./attributes.yaml
+Evaluating 3 WorkloadIdentity resources against the following attributes:
+--snip--
+
+1 WorkloadIdentity resources matched the given attributes. The following
+credentials would have been issued:
+
+- workload_identity_name: gitlab-production
+ spiffe:
+ id: spiffe://example.teleport.sh/gitlab/my-org/my-project/production
+ jwt:
+ sub: spiffe://example.teleport.sh/gitlab/my-org/my-project/production
+ iss: https://example.teleport.sh
+ -- snipped for conciseness: all JWT claims would be included --
+ x509:
+ subject:
+ common_name: spiffe://example.teleport.sh/gitlab/my-org/my-project/production
+ organization: my-org
+ -- snipped for conciseness: all Subject DN fields would be included --
+ sans:
+ - dns: my-project.example.com
+ - ip: 10.0.0.1
+ - uri: spiffe://example.teleport.sh/gitlab/my-org/my-project/production
+2 WorkloadIdentity resources did not match the given attributes:
+
+- workload_identity_name: gitlab-staging
+ reason: Rule evaluation failed. Allow rule expression `join.gitlab.environment == "production"` returned false.
+- workload_identity_name: github-production
+ reason: The `join.github.environment` attribute included in `spec.spiffe.id` template do not exist in the attribute set.
+```
+
+Similar functionality should be built into the Teleport Web UI. This should
+initially be built into the WorkloadIdentity resource view, and allow the
+resource to be tested against a set of attributes derived from an existing
+Bot Instance resource.
+
+Later, this functionality can be built into the "Create or Edit" flow for a
+WorkloadIdentity resource.
+
+### X509 SVIDs and DNS SANs
+
+By default, the X509 SVIDs issued for a WorkloadIdentity resource will not
+include any DNS SANs.
+
+To include DNS SANs, the `spec.spiffe.x509.dns_sans` field can be used:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: gitlab
+spec:
+ spiffe:
+ id: /my-awesome-service
+ x509:
+ dns_sans:
+ - my.awesome.service.example.com
+ - "*.my.awesome.service.example.com"
+```
+
+This will result in any X509 SVID issued using this WorkloadIdentity including
+both the specified DNS SANs.
+
+As with `spec.spiffe.id`, templating can be used to include attributes within
+DNS SANs:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: gitlab
+spec:
+ spiffe:
+ id: /my-awesome-service
+ x509:
+ dns_sans:
+ - {{ join.gitlab.environment }}.gitlab.example.com
+```
+
+### Time To Live (TTL)
+
+Both X509 and JWT SVIDs include fields which control when the credential is
+valid from and when it is valid to.
+
+When requesting the issuance of a credential, the `tbot` agent will provide a
+requested TTL for the credential - which will either be a default value or
+one explicitly configured by a user.
+
+However, the WorkloadIdentity resource will also include a `spec.spiffe.ttl.max`
+field. If `tbot` requests a credential with a TTL greater than this value, the
+TTL will be capped at this value. This provides the ability to enforce a
+maximum permissible TTL regardless of the configuration of the `tbot` agent.
+
+If this field is not set, a default maximum value of 24 hours will be used.
+
+Example:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: my-awesome-service
+spec:
+ spiffe:
+ id: /my-awesome-service
+ ttl:
+ max: 24h
+```
+
+### Future: Customizing workload identity credentials
+
+In a future iteration, we'd introduce the ability for the `WorkloadIdentity`
+resource to specify more than just the SPIFFE ID/workload identifier of the
+generated identity credential.
+
+This ability serves many purposes:
+
+- Allow the encoding of additional information that is not considered for
+ authorization but may be useful to be included in workload audit logs.
+- Allow the encoding of additional information that is only rarely used for
+ authorization - or - does not fit well into the structure of a SPIFFE ID for
+ other reasons.
+- Support compatibility with services which may require information to be
+ encoded into non-standard fields.
+
+The fields for controlling customization of the credentials would also accept
+the same templating logic as `spec.spiffe.id`.
+
+For JWTs, the following options are good candidates for inclusion:
+
+- Additional claims using information from attributes, or, encoding all
+ attributes into a specific claim.
+- Constraining acceptable audiences
+- Inclusion or exclusion of standard claims (e.g `jti`)
+
+For X509 certificates, the following options are good candidates for inclusion:
+
+- Control of the Subject CN behaviour (e.g should the CN match the SPIFFE ID or
+ the first DNS SAN)
+- Overriding Subject DN entirely (e.g populate DN attributes with values from
+ the requester's attributes)
+
+The following example configuration is given for demonstrative purposes and
+does not represent a decision on field naming or structure - which is out of
+scope of this RFD:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: gitlab
+spec:
+ spiffe:
+ id: "/gitlab/{{ join.gitlab.project_path }}/{{ join.gitlab.pipeline_id }}"
+ jwt:
+ extra_claims:
+ "gitlab_ref_path": {{ join.gitlab.ref_path }}
+ x509:
+ override_subject:
+ cn: my-lovely-common-name
+ dns_sans:
+ - example.com
+```
+
+We may wish to consider a second-order configuration resource
+(e.g a WorkloadIdentityProfile) which would allow customization settings to be
+shared between WorkloadIdentity resources. This would provide a unified way
+to control customizations which may be necessary for compliance or compatability
+purposes.
+
+### Revisiting our use-case
+
+Let's revisit the use-case we outlined at the beginning of this RFD.
+
+Now, the operator must only configure a single WorkloadIdentity, Bot, Join Token
+and Role:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: gitlab
+ labels:
+ environment: production
+spec:
+ spiffe:
+ # Results in spiffe://example.teleport.sh/gitlab/my-org/my-project/42
+ id: "/gitlab/{{ join.gitlab.project_path }}/{{ join.gitlab.pipeline_id }}"
+---
+kind: role
+metadata:
+ name: production-workload-id
+spec:
+ allow:
+ workload_identity_labels:
+ environment: production
+---
+kind: bot
+metadata:
+ name: gitlab-workload-id
+spec:
+ roles:
+ - production-workload-id
+---
+kind: token
+version: v2
+metadata:
+ name: gitlab-workload-id
+spec:
+ roles: [Bot]
+ join_method: gitlab
+ bot_name: gitlab-workload-id
+ gitlab:
+ domain: gitlab.example.com
+ # Allow rules are intentionally very permissive as we'd like to allow any
+ # CI run to request a WorkloadIdentity using the template.
+ allow:
+ - namespace_path: my-org
+```
+
+The `tbot` configuration is now identical across all workflows and
+consists of just a handful of flags:
+
+```yaml
+tbot start workload-api \
+ --proxy-server example.teleport.sh:443 \
+ --join-token gitlab-workload-id \
+ --join-method gitlab \
+ --workload-identity-labels *:* \
+ --listen-addr unix:///opt/workload.sock
+```
+
+## Technical Design
+
+### Attributes
+
+For the purposes of templating, rule evaluation and auditing, a set of
+attributes is derived during the issuance of a WorkloadIdentity.
+
+Attributes are organized into a hierarchical structure, with three top-level
+keys:
+
+- `join`
+- `workload`
+- `user`
+
+The attribute hierarchy will be defined using Protobuf. This will enable:
+
+- Generation of documentation.
+- Strong typing of rules, templates and expressions provided by users.
+- Serialization and deserialization of attributes for the purposes of
+ persistence, auditing or transport.
+
+Specification:
+
+```protobuf
+package teleport.workloadidentity.v1;
+
+// AttributeSet is the top-level structure that contains all attributes that
+// are considered during the issuance of a WorkloadIdentity.
+message AttributeSet {
+ // Attributes pertaining to the join process.
+ JoinAttributes join = 1;
+ // Attributes pertaining to the workload attestation process.
+ WorkloadAttributes workload = 2;
+ // Attributes pertaining to the user that is requesting the WorkloadIdentity.
+ UserAttributes user = 3;
+}
+```
+
+Example (marshalled as YAML):
+
+```yaml
+join:
+ meta:
+ token_name: my-gitlab-join-token
+ method: gitlab
+ gitlab:
+ project_path: my-org/my-project
+ pipeline_id: 42
+ # -- snipped for conciseness --
+workload:
+ unix:
+ attested: true
+ pid: 1234
+ uid: 1000
+ gid: 1000
+ k8s:
+ attested: true
+ pod_name: my-pod-ab837c
+ namespace: my-namespace
+ service_account: my-service-account
+user:
+ name: bot-gitlab-workload-identity
+ is_bot: true
+ bot_name: gitlab-workload-identity
+ traits:
+ - name: foo
+ values:
+ - bar
+ - bizz
+ - name: logins
+ values:
+ - root
+```
+
+#### User Attributes
+
+The user attributes are extracted during the RPC invocation from the X509
+identity of the caller, and include information such as the name of the user,
+whether the user is a bot, and any traits attached to that user.
+
+Specification:
+
+```protobuf
+package teleport.workloadidentity.v1;
+
+// Attributes pertaining to the user that is requesting the WorkloadIdentity.
+message UserAttributes {
+ // Name of the user requesting the generation of the WorkloadIdentity.
+ // Example: `bot-gitlab-workload-identity`
+ string name = 1;
+ // Whether or not the user requesting the generation of the WorkloadIdentity
+ // is a bot.
+ bool is_bot = 2;
+ // If the user is a bot, the name of the bot.
+ // Example: `gitlab-workload-identity`
+ string bot_name = 3;
+ // The traits of the user configured within Teleport or determined during
+ // SSO.
+ Traits traits = 4;
+ // The ID of the Bot Instance, should this user be a bot. Otherwise empty.
+ string bot_instance_id = 5;
+}
+```
+
+Example (marshalled as YAML):
+
+```yaml
+name: bot-gitlab-workload-identity
+is_bot: true
+bot_name: gitlab-workload-identity
+traits:
+- name: foo
+ values:
+ - bar
+ - bizz
+- name: logins
+ values:
+ - root
+```
+
+#### Workload Attributes
+
+The workload attributes are provided by the `tbot` agent at the time of
+attestation as part of the RPC request.
+
+Depending on whether workload attestation has been performed, or which form of
+attestation has been performed, the attributes available will differ.
+
+```protobuf
+package teleport.workloadidentity.v1;
+
+// Attributes pertaining to unix workload attestation.
+message WorkloadUnix {
+ // Whether or not this attestation method has been performed successfully.
+ bool attested = 1;
+ // The PID of the process that connected to the workload API.
+ int32 pid = 2;
+ // The UID of the process that connected to the workload API.
+ uint32 uid = 3;
+ // The GID of the process that connected to the workload API.
+ uint32 gid = 4;
+ // -- snipped for conciseness --
+}
+
+// Attributes pertaining to Kubernetes workload attestation.
+message WorkloadKubernetes {
+ // Whether or not this attestation method has been performed successfully.
+ bool attested = 1;
+ // The name of the pod that connected to the workload API.
+ string pod_name = 2;
+ // The namespace of the pod that connected to the workload API.
+ string namespace = 3;
+ // The service account of the pod that connected to the workload API.
+ string service_account = 4;
+ // -- snipped for conciseness --
+}
+
+// Attributes sourced from the workload attestation process.
+message WorkloadAttributes {
+ // Attributes pertaining to Unix workload attestation.
+ WorkloadUnix unix = 1;
+ // Attributes pertaining to Kubernetes workload attestation.
+ WorkloadKubernetes k8s = 2;
+}
+```
+
+Example (marshalled as YAML):
+
+```yaml
+unix:
+ attested: true
+ pid: 1234
+ uid: 1000
+ gid: 1000
+k8s:
+ attested: true
+ pod_name: my-pod-ab837c
+ namespace: my-namespace
+ service_account: my-service-account
+```
+
+#### Join Attributes
+
+The `join` attributes are sourced from the attestation process that occurs when
+a principal (Bot, Agent etc) initially authenticates using a Join Token.
+
+At the top level of the join attributes, the `meta` key will hold attributes
+that apply to all joins. For example, the name of the join token used and the
+method of the join.
+
+A top level key will exist for each join method that is supported by Teleport.
+Under this key, attributes specific to that join method will be present.
+Typically, these attributes will be sourced directly from some identity
+document provided by the principal upon joining (e.g an ID Token issued by
+GitLab).
+
+Specification:
+
+```protobuf
+package teleport.workloadidentity.v1;
+
+// Attributes present for all joins, including metadata about the join token
+// itself.
+message JoinMeta {
+ // The name of the join token used to join. If the method of the join is
+ // `token`, then this field will not be set as the name of the join token
+ // is sensitive.
+ string token_name = 1;
+ // The join method that was used, e.g `gitlab`, `github`, `token`.
+ string method = 2;
+}
+
+// Attributes specific to the GitLab join method.
+message JoinGitLab {
+ // The path of the project in GitLab that the CI pipeline is running in.
+ // For example `strideynet/my-project`.
+ string project_path = 1;
+ // The namespace path of the project in GitLab that the CI pipeline is running
+ // in.
+ // For example `strideynet`.
+ string namespace_path = 2;
+ // -- snipped for conciseness --
+}
+
+// Attributes specific to the TPM join method.
+message JoinTPM {
+ // The hash of the EKPub presented during the join process
+ string ekpub_hash = 1;
+ // The description of the join token rule that matched during the join
+ // process.
+ string rule_description = 2;
+ // -- snipped for conciseness --
+}
+
+// Attributes sourced from the join process.
+message JoinAttributes {
+ // Attributes of the join token itself (e.g name, method)
+ JoinMeta meta = 1;
+ // Attributes specific to the GitLab join method.
+ JoinGitLab gitlab = 2;
+ // Attributes specific to the TPM join method.
+ JoinTPM tpm = 3;
+ // Snipped for conciseness. A field will exist for each join method.
+}
+```
+
+Example (marshalled as YAML):
+
+```yaml
+meta:
+ token_name: my-gitlab-join-token
+ method: gitlab
+gitlab:
+ project_path: my-org/my-project
+ namespace_path: my-org
+ # -- snipped for conciseness --
+```
+
+##### Propagating Join Attributes
+
+In order to access the join attributes during WorkloadIdentity evaluation,
+we will need to persist them in some form.
+
+This persistence must remain over:
+
+- Renewals of the certificate using the GenerateUserCert RPC.
+- The generation of role impersonated certificates using the GenerateUserCert
+ RPC.
+
+To achieve this persistence, the JoinAttributes protobuf message will be
+encoded using `protojson.Marshal` and stored within the X509 certificate using
+a new extension - `1.3.9999.2.21`. When unmarshalling, unknown fields should be
+ignored to ensure forwards compatability.
+
+The GenerateUserCert RPC will be modified to propagate the JoinAttributes,
+if present, to any certificates issued.
+
+The Join RPCs will be modified to pass the newly generated JoinAttributes to
+the certificate generation internals.
+
+Whilst out of scope for this RFD, the persistence of the JoinAttributes into
+the X509 certificate could be leveraged in future work to provide a richer
+metadata for audit logging of Bot actions.
+
+### WorkloadIdentity Resource
+
+The WorkloadIdentity resource abides the guidelines set out in
+[RFD 153: Resource Guidelines](./0153-resource-guidelines.md).
+
+```protobuf
+syntax = "proto3";
+
+package teleport.workloadidentity.v1;
+
+// WorkloadIdentity represents a single, or group of similar, workload
+// identities and configures the structure of workload identity credentials and
+// authorization rules. is a resource that represents the configuration of a trust
+// domain federation.
+message WorkloadIdentity {
+ // The kind of resource represented.
+ string kind = 1;
+ // Differentiates variations of the same kind. All resources should
+ // contain one, even if it is never populated.
+ string sub_kind = 2;
+ // The version of the resource being represented.
+ string version = 3;
+ // Common metadata that all resources share.
+ teleport.header.v1.Metadata metadata = 4;
+ // The configured properties of the WorkloadIdentity
+ WorkloadIdentitySpec spec = 5;
+}
+
+// The individual condition of a rule. A condition consists of a single target
+// attribute to evaluate against and an operator to use when evaluating.
+// Only one operator field should be set.
+message WorkloadIdentityCondition {
+ // The attribute name to evaluate.
+ // Example: `join.gitlab.project_path`
+ string attribute = 1;
+ // The exact string the attribute value must match.
+ string equals = 2;
+ // The regex pattern the attribute value must match.
+ string matches = 3;
+ // The exact string the attribute value must not match.
+ string not_equals = 4;
+ // The regex pattern the attribute value must not match.
+ string not_matches = 5;
+ // A list of strings that the attribute value must equal at least one of.
+ repeated string in = 6;
+ // A list of strings that the attribute value must not equal any of.
+ repeated string not_in = 7;
+}
+
+// WorkloadIdentityRule is an individual rule which can be evaluated against
+// the context attributes to produce a boolean result.
+//
+// A rule contains either a set of conditions or an expression. A rule cannot
+// contain both conditions and an expression.
+//
+// When conditions are provided, the rule evaluates to true if all conditions
+// evaluate to true.
+message WorkloadIdentityRule {
+ // The set of conditions to evaluate. All condition may return true for this
+ // rule to return true.
+ repeated WorkloadIdentityCondition conditions = 1;
+ // The predicate language expression to evaluate. Mutually exclusive with
+ // conditions.
+ string expression = 2;
+}
+
+
+// WorkloadIdentityRules holds the allow and deny authorization rules for the
+// WorkloadIdentitySpec.
+//
+// Deny rules take precedence over allow rules.
+message WorkloadIdentityRules {
+ // Allow is a list of rules. If any rule evaluate to true, then the allow
+ // ruleset is consdered satisfied.
+ //
+ // If the allow ruleset is empty, then the allow ruleset is considered to be
+ // satisfied.
+ repeated WorkloadIdentityRule allow = 1;
+ // Deny is a list of rules. If any rule evaluates to true, then the
+ // WorkloadIdentity cannot be issued.
+ repeated WorkloadIdentityRule deny = 2;
+}
+
+// WorkloadIdentitySPIFFEX509 holds configuration specific to the issuance of
+// an X509 SVID from a WorkloadIdentity.
+message WorkloadIdentitySPIFFEX509 {
+ // The DNS SANs to include in the issued X509 SVID. Each provided entry
+ // supports templating using attributes.
+ repeated string dns_sans = 1;
+}
+
+// WorkloadIdentitySPIFFEJWT holds configuration specific to the issuance of
+// a JWT SVID from a WorkloadIdentity.
+message WorkloadIdentitySPIFFEJWT {
+ // Currently empty - but will eventually permit the modification and insertion
+ // of custom JWT claims.
+}
+
+message WorkloadIdentityTTL {
+ // The maximum TTL that can be requested for credential using this
+ // WorkloadIdentity.
+ // If the requested TTL is greater than this value, the TTL will be capped at
+ // this value.
+ // If not set, a default value of 24 hours will be used.
+ google.protobuf.Duration max = 1;
+}
+
+// WorkloadIdentitySPIFFE holds configuration for the issuance of
+// SPIFFE-compatible workload identity credentials when this WorkloadIdentity
+// is used.
+message WorkloadIdentitySPIFFE {
+ // Id is the path of the SPIFFE ID that will be issued in workload identity
+ // credentials when this WorkloadIdentity is used. It can be templated using
+ // attributes.
+ //
+ // Examples:
+ // - `/no/templating/used` -> `spiffe://example.teleport.sh/no/templating/used`
+ // - `/gitlab/{{ join.gitlab.project_path }}` -> `spiffe://example.teleport.sh/gitlab/org/project`
+ string id = 1;
+ // Hint is an optional hint that will be provided to workloads using the
+ // SPIFFE Workload API to fetch workload identity credentials.
+ string hint = 2;
+ // x509 holds configuration specific to the issuance of X509 SVIDs from this
+ // WorkloadIdentity resource.
+ WorkloadIdentitySPIFFEX509 x509 = 3;
+ // jwt holds configuration specific to the issuance of JWT SVIDs from this
+ // WorkloadIdentity resource.
+ WorkloadIdentitySPIFFEJWT jwt = 4;
+ // ttl holds configuration specific to the TTL of credentials issued from
+ // this WorkloadIdentity resource.
+ WorkloadIdentityTTL ttl = 5;
+}
+
+// WorkloadIdentitySpec holds the configuration element of the WorkloadIdentity
+// resource.
+message WorkloadIdentitySpec {
+ // Rules holds the authorization rules that must pass for this
+ // WorkloadIdentity to be used. See [WorkloadIdentityRules] for further
+ // documentation.
+ WorkloadIdentityRules rules = 1;
+ // SPIFFE holds configuration for the structure of SPIFFE-compatible
+ // workload identity credentials for this WorkloadIdentity. See
+ // [WorkloadIdentitySPIFFE] for further documentation.
+ WorkloadIdentitySPIFFE spiffe = 2;
+}
+```
+
+Exhaustive representation in YAML:
+
+```yaml
+kind: workload_identity
+version: v1
+metadata:
+ name: gitlab
+ labels:
+ environment: production
+spec:
+ rules:
+ allow:
+ - conditions:
+ - attribute: join.gitlab.user_email
+ in:
+ - admin-bob@example.com
+ - admin-jane@example.com
+ - conditions:
+ - attribute: join.gitlab.namespace_path
+ equals: my-org
+ - attribute: join.gitlab.user_login
+ not_equals: noah
+ - attribute: join.gitlab.environment
+ not_matches: "^abc-.*$"
+ - expression: join.gitlab.pipeline_id > 100
+ deny:
+ - conditions:
+ - attribute: join.gitlab.ref_type
+ equals: branch
+ - attribute: join.gitlab.ref
+ not_in: [main, master]
+ - conditions:
+ - attribute: join.gitlab.environment
+ matches: "^xyz-.*$"
+ - expression: join.gitlab.project_path == "my-org/my-project"
+ spiffe:
+ id: /gitlab/{{ join.gitlab.project_path }}/{{ join.gitlab.environment }}
+ ttl:
+ max: 12h
+ x509:
+ dns_sans:
+ - {{ join.gitlab.environment }}.gitlab.example.com
+```
+
+As per RFD 153, CRUD RPCs will be included for the WorkloadIdentity resource.
+The ability to execute these RPCs will be governed by the standard verbs with a
+noun of `workload_identity`.
+
+The proto specification of the RPCs is omitted for conciseness.
+
+### IssueWorkloadIdentity RPC
+
+```protobuf
+syntax = "proto3";
+
+package teleport.workloadidentity.v1;
+
+// WorkloadIdentityService provides the signing of workload identity documents.
+service WorkloadIdentityService {
+ // IssueWorkloadIdentity issues a workload identity credential from a
+ // specific named WorkloadIdentity resource.
+ rpc IssueWorkloadIdentity(IssueWorkloadIdentityRequest) returns (IssueWorkloadIdentityResponse) {}
+ // IssueWorkloadIdentityWithLabels issues workload identity credentials from
+ // WorkloadIdentity resources that match the provided label selectors.
+ rpc IssueWorkloadIdentityWithLabels(IssueWorkloadIdentityWithLabelsRequest) returns (IssueWorkloadIdentityResponse) {}
+}
+
+// The request parameters specific to the issuance of a JWT SVID.
+message JWTSVIDRequest {
+ // The value that should be included in the JWT SVID as the `aud` claim.
+ // Required.
+ repeated string audiences = 1;
+ // The requested TTL for the JWT SVID. This request may be modified by
+ // the server according to its policies. It is the client's responsibility
+ // to check the TTL of the returned workload identity credential.
+ google.protobuf.Duration ttl = 2;
+}
+
+// The request parameters specific to the issuance of an X509 SVID.
+message X509SVIDRequest {
+ // A PKIX, ASN.1 DER encoded public key that should be included in the x509
+ // SVID.
+ // Required.
+ bytes public_key = 1;
+ // The requested TTL for the JWT SVID. This request may be modified by
+ // the server according to its policies. It is the client's responsibility
+ // to check the TTL of the returned workload identity credential.
+ google.protobuf.Duration ttl = 2;
+}
+
+message WorkloadIdentityCredential {
+ oneof credential {
+ // Signed JWT-SVID
+ string jwt_svid = 1;
+ // An ASN.1 DER encoded X509-SVID
+ bytes x509_svid = 2;
+ }
+ // The TTL that was chosen by the server.
+ google.protobuf.Duration ttl = 3;
+ // The time that the TTL is reached for this credential.
+ google.protobuf.Timestamp expiry = 4;
+ // The hint configured for this Workload Identity - if any. This is provided
+ // to workloads using the SPIFFE Workload API to fetch credentials.
+ string hint = 5;
+ // The name of the Workload Identity resource used to issue this credential.
+ string workload_identity_name = 6;
+ // The revision of the Workload Identity resource used to issue this
+ // credential.
+ string workload_identity_revision = 7;
+}
+
+message IssueWorkloadIdentityRequest {
+ // The name of the Workload Identity resource to attempt issuance using.
+ string name = 1;
+
+ // The credential_type oneof selects the type of credential (e.g JWT vs X509)
+ // to be issued and also provides any parameters specific to that type.
+ oneof credential_type {
+ // Parameters specific to the issuance of a JWT SVID.
+ JWTSVIDRequest jwt_svid = 2;
+ // Parameters specific to the issuance of an X509 SVID.
+ X509SVIDRequest x509_svid = 3;
+ }
+
+ // The results of any workload attestation performed by `tbot`.
+ WorkloadAttributes workload_attributes = 4;
+}
+
+// Response for IssueWorkloadIdentity
+message IssueWorkloadIdentityResponse {
+ // The issued credential.
+ WorkloadIdentityCredential credential = 1;
+}
+
+// An individual label selector to be used to filter WorkloadIdentity resources.
+message LabelSelector {
+ // The name of the label to match.
+ string key = 1;
+ // The values to accept within the label. If multiple are provided, then any
+ // may match.
+ repeated string values = 2;
+}
+
+// Request for IssueWorkloadIdentityWithLabels
+message IssueWorkloadIdentityWithLabelsRequest {
+ // The label matchers which should be used to select a subset of the
+ // WorkloadIdentity resources to attempt issuance using.
+ repeated LabelSelector labels = 1;
+
+ // The credential_type oneof selects the type of credential (e.g JWT vs X509)
+ // to be issued and also provides any parameters specific to that type.
+ oneof credential_type {
+ // Parameters specific to the issuance of a JWT SVID.
+ JWTSVIDRequest jwt_svid = 2;
+ // Parameters specific to the issuance of an X509 SVID.
+ X509SVIDRequest x509_svid = 3;
+ }
+
+ // The results of any workload attestation performed by `tbot`.
+ WorkloadAttributes workload_attributes = 4;
+}
+
+// Response for IssueWorkloadIdentityWithLabels
+message IssueWorkloadIdentityWithLabelsResponse {
+ // The issued credentials.
+ repeated WorkloadIdentityCredentials credential = 1;
+}
+```
+
+When a specific WorkloadIdentity is specified by-name by the client:
+
+1. Fetch WorkloadIdentity resource by name.
+2. Compare `workload_identity_labels` of the client roleset against
+ `metadata.labels` of the WorkloadIdentity. Reject if no access.
+3. Perform rules evaluation of `spec.rules.deny` against the attributes of the
+ client. Reject if no access.
+4. If `spec.rules.allow` is non-zero, complete rules evaluation against the
+ attributes of the client. Reject if no access.
+5. Evaluate templated fields, if attribute included in template missing from
+ attributes of the client, reject.
+6. Issue workload identity credential, emit audit log, and return credential to
+ client.
+
+Where the client has provided label selectors:
+
+1. Fetch all WorkloadIdentity resources.
+2. For each WorkloadIdentity, compare client's requested labels against
+ `metadata.labels`, drop if no match.
+3. For each remaining WorkloadIdentity, compare `workload_identity_labels` of
+ client's roleset against `metadata.labels`, drop if no match.
+4. For each remaining WorkloadIdentity:
+4a. Perform rules evaluation of `spec.rules.deny` against the attributes of the
+ client. Drop if no access.
+4b. If `spec.rules.allow` is non-zero, complete rules evaluation against the
+ attributes of the client. Drop if no access.
+4c. Evaluate templated fields, if attribute included in template missing from
+ attributes of the client, drop.
+4d. Issue workload identity credential, emit audit log.
+5. Return issued credentials to client.
+
+If, after evaluation of labels and rules, more than 20 WorkloadIdentity
+resources remain, the client should receive an error encouraging the user to
+leverage labels so that the set of returned WorkloadIdentity falls below this
+threshold. This limits the runaway resource consumption if there is a
+misconfiguration.
+
+For the initial release, this limit should be configurable via an environment
+variable, allowing this to be tuned without requiring a new release of Teleport
+should we discover a use-case that legitimately requires the issuance of a
+larger number of identities.
+
+### Predicate Language
+
+For the purposes of rule evaluation and templating, a predicate language and
+engine must be implemented.
+
+Today, Teleport already includes a predicate language engine that serves
+extremely similar functionality (e.g role templating, login rules).
+
+This engine and language will be reused.
+
+### Performance
+
+In the initial release, the standard resource cache will be used to improve the
+performance of issuing identities to workloads.
+
+The resource requirements of the initial design scale with the number of
+WorkloadIdentity resources in use. We should work closely with design partners
+to determine the number of WorkloadIdentity resources in use, and proactively
+perform benchmarks and performance improvements with growing magnitudes of
+scale in mind.
+
+The flexible templating mechanism is intended to limit the number of Roles,
+Bots and WorkloadIdentitys used for large-scale deployment. For example,
+thousands of CI workflows can share the same Bot and WorkloadIdentity.
+Where possible, we can mitigate the need for growing numbers of WorkloadIdentity
+resources by adding more advanced templating and authorization rule
+functionality.
+
+We should bear in mind the following potential performance improvements:
+
+- Tailored cache with label-based indexing to improve the performance of
+ resolving label matchers to specific WorkloadIdentity resources.
+- Edge cache in `tbot` that can be enabled to return recently-issued identities
+ without hitting the Auth Service. This will involve some elements of the
+ authorization logic being executed at the edge for the cache.
+- Decoupling the Workload Identity CA and issuance process from the Auth
+ Service.
+
+OpenTelemetry tracing should be included across the credential issuance process
+to highlight performance hot-spots.
+
+### Deprecation
+
+For now, the old RBAC and RPCs for Workload Identity will be left in place as
+they provide effectively an "administrative" way of generating workload
+identity credentials.
+
+When the new mechanism has been available for 2 major versions, we should
+revisit the deprecation of the legacy RPCs and RBAC.
+
+### Implementation Pathway
+
+This work is well-suited to being broken down into a number of smaller tasks:
+
+1. Implement the persistence of join metadata as attributes into X509
+ certificates.
+2. Implement the WorkloadIdentity resource and CRUD RPCs.
+3. Implement the IssueWorkloadIdentity RPC without templating or rules
+ evaluation.
+4. Implement rules and template evaluation.
+5. Implement label-based IssueWorkloadIdentity RPC functionality.
+6. Implement changes in `tbot` to support using the IssueWorkloadIdentity RPC.
+7. Implement the `tctl workload-identity test` command.
+
+## Alternatives
+
+### Role Templating and `tbot` SPIFFE ID templating
+
+One alternative to introducing a new resource is to introduce support for role
+templating of the SPIFFE fields.
+
+This would still require work to propagate the join metadata into the
+certificate as trait-like things for the purposes of RBAC evaluation.
+
+We'd also need to implement similar templating into the `tbot` configuration
+itself, we could likely reuse much of the same functionality here.
+
+Positives:
+
+1. "Simpler" to implement (but not significantly so)
+2. Keeps configuration within an existing Teleport primitive (roles) rather than
+ further spreading it out into a new resource.
+
+Negatives:
+
+1. TBot configuration still remains important in the SVID issuance process,
+ meaning you still need to manage configuration for a large fleet of `tbot`
+ instances.
+2. The configuration is split between Teleport resources and the `tbot`
+ configuration. If these drift, SVIDs will fail to be issued.
+3. Teleport Roles are already pretty complex, and this is introducing further
+ complexity.
+
+### CEL vs Teleport Predicate Language
+
+Rather than use the existing Teleport predicate language, we could base the
+templating and rule evaluation functionality in Workload Identity on Google's
+open-source Common Expression Language (CEL).
+
+Positives:
+
+- A more widely-used and understood language. Users are more likely to have
+ encountered this previously, and, there exists a wealth of tooling and
+ documentation.
+- Native support for encoding compiled expressions in Protobuf. This would
+ support the pre-compilation of expressions at creation time for the purposes
+ of validation and performance.
+- Native support for environments/contexts defined in Protobuf. Our AttributeSet
+ will be defined in Protobuf and would natively be supported by CEL. We would
+ need to extend the Teleport predicate language to support this.
+- CEL has a built-in "cost estimation" mechanism which could be used to prevent
+ the configuration of overly computationally expensive expressions.
+
+Negatives:
+
+- Inconsistency with other functionality in Teleport may be confusing for users.
+- We already have internal expertise about the functionality of the Teleport
+ predicate language and understand the existing limitations of it, CEL
+ introduces a new set of limitations and challenges, many of which are unknown
+ to us. That being said, CEL is more mature and battle-tested, it's unlikely
+ we will encounter problems which are not already well-documented.
+
+At this time, it is felt that consistency with the rest of the product is a
+higher priority. We can revisit the introduction of CEL at a later date.
+
+## Security Considerations
+
+### Auditing
+
+The CRUD RPCs for the WorkloadIdentity resource will emit the standard audit
+events:
+
+- `workload_identity.create`
+- `workload_identity.update`
+- `workload_identity.delete`
+
+The new RPC for issuing a credential based on a WorkloadIdentity will emit a
+new audit event `workload_identity.generate` for each issued identity. This will
+contain the following information:
+
+- Connection Metadata
+- The User or Bot Instance that has requested the issuance
+- Details of the issued credential:
+ - X509 SVID:
+ - SPIFFE ID
+ - Serial Number
+ - NotBefore, NotAfter
+ - Included SANs and Subject
+ - Public Key
+ - JWT SVID:
+ - SPIFFE ID
+ - Claims (e.g iat, exp, jti, sub, aud and any custom claims)
+- The full attribute set that was used during rule and template evaluation.
+- Which WorkloadIdentity was used for the issuance.
+ - The name and the revision to allow the specific version to be identified
+ if this has been modified since.
+
+### Trustworthiness of Workload Attestation Attributes
+
+The `workload` subset of the attributes is sourced from the workload attestation
+performed by `tbot`. A malicious `tbot`, or someone with credentials exfiltrated
+from `tbot`, is able to provide any values it desires for these attributes.
+
+This is not a risk that has been introduced by the design proposed by this RFD
+and is effectively an underlying concern of most workload identity
+implementations that include an element of workload attestation that is
+completed using information that is local to the workload.
+
+To make this risk easier to mitigate, care should be taken to distinguish
+attributes sourced from workload attestation against the more verifiable
+attributes sourced from the join process. This has been achieved by placing
+them under separate root attribute keys (e.g `join` vs `workload`).
+
+Largely, the blast radius of this risk is mitigated by the use of best practices
+such as ensuring that attributes from the join are included in rules or
+templates with a higher precedence than that of attributes sourced from
+workload attestation. This limits a bad actors abiliy to issue credentials
+to a subset of the workload identifier namespace. Authorization rules that
+process workload identities should also abide this.
+
+We should ensure that this risk and the best practices are explained in the
+product documentation, and, provide a set of example WorkloadIdentity resources
+for common use-cases.
+
+To simplify responding to this kind of breach, the audit log must include
+sufficient information to trace back issued workload identities to the identity
+that requested them.
diff --git a/tool/tsh/common/kube_proxy.go b/tool/tsh/common/kube_proxy.go
index f8430d642c2a2..75c8c120b223e 100644
--- a/tool/tsh/common/kube_proxy.go
+++ b/tool/tsh/common/kube_proxy.go
@@ -350,7 +350,7 @@ func makeKubeLocalProxy(cf *CLIConf, tc *client.TeleportClient, clusters kubecon
Certs: certs,
CertReissuer: kubeProxy.getCertReissuer(tc),
Headless: cf.Headless,
- Logger: log,
+ Logger: logger,
CloseContext: cf.Context,
})
diff --git a/tool/tsh/common/tsh.go b/tool/tsh/common/tsh.go
index dc186e3458feb..aa6fb5cbf5666 100644
--- a/tool/tsh/common/tsh.go
+++ b/tool/tsh/common/tsh.go
@@ -93,6 +93,7 @@ import (
"github.com/gravitational/teleport/lib/tlsca"
"github.com/gravitational/teleport/lib/utils"
"github.com/gravitational/teleport/lib/utils/diagnostics/latency"
+ logutils "github.com/gravitational/teleport/lib/utils/log"
"github.com/gravitational/teleport/lib/utils/mlock"
stacksignal "github.com/gravitational/teleport/lib/utils/signal"
"github.com/gravitational/teleport/tool/common"
@@ -101,9 +102,10 @@ import (
"github.com/gravitational/teleport/tool/common/webauthnwin"
)
-var log = logrus.WithFields(logrus.Fields{
- teleport.ComponentKey: teleport.ComponentTSH,
-})
+var (
+ log = logrus.WithField(teleport.ComponentKey, teleport.ComponentTSH)
+ logger = logutils.NewPackageLogger(teleport.ComponentKey, teleport.ComponentTSH)
+)
const (
// mfaModeAuto automatically chooses the best MFA device(s), without any
diff --git a/web/packages/shared/components/MissingPermissionsTooltip/MissingPermissionsTooltip.tsx b/web/packages/shared/components/MissingPermissionsTooltip/MissingPermissionsTooltip.tsx
index aaef46ec0baf6..f414c2526318f 100644
--- a/web/packages/shared/components/MissingPermissionsTooltip/MissingPermissionsTooltip.tsx
+++ b/web/packages/shared/components/MissingPermissionsTooltip/MissingPermissionsTooltip.tsx
@@ -20,14 +20,22 @@ import { Box, Text, Flex } from 'design';
export const MissingPermissionsTooltip = ({
missingPermissions,
+ requiresAll = true,
}: {
missingPermissions: string[];
+ requiresAll?: boolean;
}) => {
return (
You do not have all of the required permissions.
- Missing permissions:
+ {requiresAll ? (
+ Missing permissions:
+ ) : (
+
+ You must have at least one of these role permissions:
+
+ )}
{missingPermissions.map(perm => (
{perm}
diff --git a/web/packages/teleport/src/Bots/List/Bots.test.tsx b/web/packages/teleport/src/Bots/List/Bots.test.tsx
index bb17c3a495447..5d0f0a78afdeb 100644
--- a/web/packages/teleport/src/Bots/List/Bots.test.tsx
+++ b/web/packages/teleport/src/Bots/List/Bots.test.tsx
@@ -22,13 +22,20 @@ import { render, screen, userEvent, waitFor } from 'design/utils/testing';
import api from 'teleport/services/api';
import { botsApiResponseFixture } from 'teleport/Bots/fixtures';
-import { createTeleportContext } from 'teleport/mocks/contexts';
+import {
+ allAccessAcl,
+ createTeleportContext,
+ noAccess,
+} from 'teleport/mocks/contexts';
import { ContextProvider } from 'teleport/index';
+import TeleportContext from 'teleport/teleportContext';
import { Bots } from './Bots';
-function renderWithContext(element) {
- const ctx = createTeleportContext();
+function renderWithContext(element, ctx?: TeleportContext) {
+ if (!ctx) {
+ ctx = createTeleportContext();
+ }
return render(
{element}
@@ -57,6 +64,20 @@ test('shows empty state when bots are empty', async () => {
});
});
+test('shows missing permissions error if user lacks permissions to list', async () => {
+ jest.spyOn(api, 'get').mockResolvedValue({ items: [] });
+ const ctx = createTeleportContext();
+ ctx.storeUser.setState({ acl: { ...allAccessAcl, bots: noAccess } });
+ renderWithContext(, ctx);
+
+ await waitFor(() => {
+ expect(screen.getByTestId('bots-empty-state')).toBeInTheDocument();
+ });
+ expect(
+ screen.getByText(/You do not have permission to access Bots/i)
+ ).toBeInTheDocument();
+});
+
test('calls edit endpoint', async () => {
jest
.spyOn(api, 'get')
diff --git a/web/packages/teleport/src/Bots/List/Bots.tsx b/web/packages/teleport/src/Bots/List/Bots.tsx
index 594a1840d7c52..ade2886712151 100644
--- a/web/packages/teleport/src/Bots/List/Bots.tsx
+++ b/web/packages/teleport/src/Bots/List/Bots.tsx
@@ -45,12 +45,15 @@ export function Bots() {
const ctx = useTeleport();
const flags = ctx.getFeatureFlags();
const hasAddBotPermissions = flags.addBots;
+ const canListBots = flags.listBots;
const [bots, setBots] = useState([]);
const [selectedBot, setSelectedBot] = useState();
const [selectedRoles, setSelectedRoles] = useState();
const { attempt: crudAttempt, run: crudRun } = useAttemptNext();
- const { attempt: fetchAttempt, run: fetchRun } = useAttemptNext('processing');
+ const { attempt: fetchAttempt, run: fetchRun } = useAttemptNext(
+ canListBots ? 'processing' : 'success'
+ );
useEffect(() => {
const signal = new AbortController();
@@ -60,15 +63,17 @@ export function Bots() {
return await fetchBots(signal, flags);
}
- fetchRun(() =>
- bots(signal.signal).then(botRes => {
- setBots(botRes.bots);
- })
- );
+ if (canListBots) {
+ fetchRun(() =>
+ bots(signal.signal).then(botRes => {
+ setBots(botRes.bots);
+ })
+ );
+ }
return () => {
signal.abort();
};
- }, [ctx, fetchRun]);
+ }, [ctx, fetchRun, canListBots]);
async function fetchRoleNames(search: string): Promise {
const flags = ctx.getFeatureFlags();
@@ -122,6 +127,12 @@ export function Bots() {
if (fetchAttempt.status === 'success' && bots.length === 0) {
return (
+ {!canListBots && (
+
+ You do not have permission to access Bots. Missing role permissions:{' '}
+ bot.list
+
+ )}
);
diff --git a/web/packages/teleport/src/Bots/List/EmptyState/EmptyState.tsx b/web/packages/teleport/src/Bots/List/EmptyState/EmptyState.tsx
index 597a3f3faabae..990578de5c196 100644
--- a/web/packages/teleport/src/Bots/List/EmptyState/EmptyState.tsx
+++ b/web/packages/teleport/src/Bots/List/EmptyState/EmptyState.tsx
@@ -206,12 +206,20 @@ export const BotTiles = () => {
{integrationsTop.map(integration => (
-
+
))}
{integrationsBottom.map(integration => (
-
+
))}
diff --git a/web/packages/teleport/src/Integrations/Integrations.tsx b/web/packages/teleport/src/Integrations/Integrations.tsx
index e528a252db7d0..c51acdec84563 100644
--- a/web/packages/teleport/src/Integrations/Integrations.tsx
+++ b/web/packages/teleport/src/Integrations/Integrations.tsx
@@ -41,7 +41,6 @@ export function Integrations() {
const { attempt, run } = useAttempt('processing');
const ctx = useTeleport();
- const canCreateIntegrations = ctx.storeUser.getIntegrationsAccess().create;
useEffect(() => {
// TODO(lisa): handle paginating as a follow up polish.
@@ -82,7 +81,14 @@ export function Integrations() {
Integrations
-
+
{attempt.status === 'failed' && }
{attempt.status === 'processing' && (
diff --git a/web/packages/teleport/src/Integrations/IntegrationsAddButton.test.tsx b/web/packages/teleport/src/Integrations/IntegrationsAddButton.test.tsx
new file mode 100644
index 0000000000000..6021f79e52a96
--- /dev/null
+++ b/web/packages/teleport/src/Integrations/IntegrationsAddButton.test.tsx
@@ -0,0 +1,54 @@
+/**
+ * Teleport
+ * Copyright (C) 2024 Gravitational, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import { MemoryRouter } from 'react-router';
+import { render, screen } from 'design/utils/testing';
+
+import { IntegrationsAddButton } from './IntegrationsAddButton';
+
+test('is disables if all permissions are missing', async () => {
+ render(
+
+
+
+ );
+
+ expect(
+ screen.getByTitle('You do not have access to add new integrations')
+ ).toBeInTheDocument();
+});
+
+test('is enabled if at least one permission is true', async () => {
+ render(
+
+
+
+ );
+
+ expect(screen.getByText('Enroll New Integration')).toBeEnabled();
+});
diff --git a/web/packages/teleport/src/Integrations/IntegrationsAddButton.tsx b/web/packages/teleport/src/Integrations/IntegrationsAddButton.tsx
index 3c66c1c1272e8..425e66335b744 100644
--- a/web/packages/teleport/src/Integrations/IntegrationsAddButton.tsx
+++ b/web/packages/teleport/src/Integrations/IntegrationsAddButton.tsx
@@ -19,26 +19,48 @@
import React from 'react';
import { Link } from 'react-router-dom';
import { Button } from 'design';
+import { HoverTooltip } from 'design/Tooltip';
+import { MissingPermissionsTooltip } from 'shared/components/MissingPermissionsTooltip';
import cfg from 'teleport/config';
export function IntegrationsAddButton({
- canCreate = false,
+ requiredPermissions,
}: {
- canCreate: boolean;
+ requiredPermissions: { value: boolean; label: string }[];
}) {
+ const canCreateIntegrations = requiredPermissions.some(v => v.value);
+ const missingPermissions = requiredPermissions
+ .filter(perm => !perm.value)
+ .map(perm => perm.label);
+
return (
-
+ )
+ }
>
- Enroll New Integration
-
+
+
);
}
diff --git a/web/packages/teleport/src/Roles/RoleEditor/RequiresResetToStandard.tsx b/web/packages/teleport/src/Roles/RoleEditor/RequiresResetToStandard.tsx
index 9b0b33bc4710f..67780c3e4ecbc 100644
--- a/web/packages/teleport/src/Roles/RoleEditor/RequiresResetToStandard.tsx
+++ b/web/packages/teleport/src/Roles/RoleEditor/RequiresResetToStandard.tsx
@@ -17,16 +17,13 @@
*/
import { Info } from 'design/Alert/Alert';
-import { ButtonSecondary, Text } from 'design';
+import { Text } from 'design';
-export const RequiresResetToStandard = ({ reset }: { reset(): void }) => (
+export const RequiresResetToStandard = () => (
- Some fields were not readable by the standard editor. To continue editing,
- go back to YAML editor or reset the affected fields to standard settings.
+ This role is too complex to be edited in the standard editor. To continue
+ editing, go back to YAML editor.
-
- Reset to Standard Settings
-
);
diff --git a/web/packages/teleport/src/Roles/RoleEditor/RoleEditor.test.tsx b/web/packages/teleport/src/Roles/RoleEditor/RoleEditor.test.tsx
index 403c9f331255f..2d458fff5aebc 100644
--- a/web/packages/teleport/src/Roles/RoleEditor/RoleEditor.test.tsx
+++ b/web/packages/teleport/src/Roles/RoleEditor/RoleEditor.test.tsx
@@ -129,9 +129,7 @@ test('rendering and switching tabs for a non-standard role', async () => {
expect(screen.getByRole('button', { name: 'Update Role' })).toBeDisabled();
await user.click(getStandardEditorTab());
- expect(
- screen.getByRole('button', { name: 'Reset to Standard Settings' })
- ).toBeVisible();
+ expect(screen.getByText(/This role is too complex/)).toBeVisible();
expect(screen.getByLabelText('Role Name')).toHaveValue('some-role');
expect(screen.getByLabelText('Description')).toHaveValue('');
expect(screen.getByRole('button', { name: 'Update Role' })).toBeDisabled();
@@ -139,21 +137,6 @@ test('rendering and switching tabs for a non-standard role', async () => {
await user.click(getYamlEditorTab());
expect(fromFauxYaml(await getTextEditorContents())).toEqual(originalRole);
expect(screen.getByRole('button', { name: 'Update Role' })).toBeDisabled();
-
- // Switch once again, reset to standard
- await user.click(getStandardEditorTab());
- expect(screen.getByRole('button', { name: 'Update Role' })).toBeDisabled();
- await user.click(
- screen.getByRole('button', { name: 'Reset to Standard Settings' })
- );
- expect(screen.getByRole('button', { name: 'Update Role' })).toBeEnabled();
- await user.type(screen.getByLabelText('Description'), 'some description');
-
- await user.click(getYamlEditorTab());
- const editorContents = fromFauxYaml(await getTextEditorContents());
- expect(editorContents.metadata.description).toBe('some description');
- expect(editorContents.spec.deny).toEqual({});
- expect(screen.getByRole('button', { name: 'Update Role' })).toBeEnabled();
});
test('switching tabs triggers validation', async () => {
@@ -192,9 +175,7 @@ test('switching tabs ignores standard model validation for a non-standard role',
);
expect(getYamlEditorTab()).toHaveAttribute('aria-selected', 'true');
await user.click(getStandardEditorTab());
- expect(
- screen.getByText(/Some fields were not readable by the standard editor/)
- ).toBeVisible();
+ expect(screen.getByText(/This role is too complex/)).toBeVisible();
await user.click(getYamlEditorTab());
// Proceed, even though our validation would consider the data invalid.
expect(getYamlEditorTab()).toHaveAttribute('aria-selected', 'true');
diff --git a/web/packages/teleport/src/Roles/RoleEditor/StandardEditor.tsx b/web/packages/teleport/src/Roles/RoleEditor/StandardEditor.tsx
index 46888d141fc7a..4d6fc5c2777fc 100644
--- a/web/packages/teleport/src/Roles/RoleEditor/StandardEditor.tsx
+++ b/web/packages/teleport/src/Roles/RoleEditor/StandardEditor.tsx
@@ -161,18 +161,6 @@ export const StandardEditor = ({
});
}
- /**
- * Resets the standard editor back into viewable state. The existing model
- * has been already stripped from unsupported features by the parsing
- * attempt, the only thing left to do is to set the `requiresReset` flag.
- */
- function resetForStandardEditor() {
- handleChange({
- ...standardEditorModel.roleModel,
- requiresReset: false,
- });
- }
-
function addAccessSpec(kind: AccessSpecKind) {
handleChange({
...standardEditorModel.roleModel,
@@ -219,7 +207,7 @@ export const StandardEditor = ({
<>
{roleModel.requiresReset && (
-
+
)}
{
// @electron-universal adds the `ElectronAsarIntegrity` key to every .plist
@@ -95,6 +97,9 @@ module.exports = {
target: 'dmg',
category: 'public.app-category.developer-tools',
type: 'distribution',
+ // TODO(ravicious): Migrate from custom notarize.js script to using the notarize field of the
+ // mac target.
+ notarize: false,
hardenedRuntime: true,
gatekeeperAssess: false,
// If CONNECT_TSH_APP_PATH is provided, we assume that tsh.app is already signed.
diff --git a/web/packages/teleterm/notarize.js b/web/packages/teleterm/notarize.js
index 082a43e3ff5f3..dad6cfd9d9be2 100644
--- a/web/packages/teleterm/notarize.js
+++ b/web/packages/teleterm/notarize.js
@@ -23,6 +23,8 @@ exports.default = async function notarizing(context) {
const appName = context.packager.appInfo.productFilename;
const appBundleId = context.packager.appInfo.macBundleIdentifier;
+ console.log('notarize.js: Notarizing in progress.');
+
return await notarize({
appBundleId,
appPath: `${appOutDir}/${appName}.app`,
diff --git a/web/packages/teleterm/package.json b/web/packages/teleterm/package.json
index 6f24853b5c7a3..4cd65da0abec2 100644
--- a/web/packages/teleterm/package.json
+++ b/web/packages/teleterm/package.json
@@ -45,8 +45,8 @@
"@types/whatwg-url": "^11.0.5",
"@xterm/addon-fit": "^0.10.0",
"@xterm/xterm": "^5.5.0",
- "electron": "33.1.0",
- "electron-builder": "^25.1.7",
+ "electron": "33.2.1",
+ "electron-builder": "^25.1.8",
"electron-vite": "^2.3.0",
"events": "3.3.0",
"immer": "^10.1.1",