Add monitor feature for output values (#7870)

This commit is contained in:
Justin Van Patten 2021-09-15 14:16:00 -07:00 committed by GitHub
parent 67303e1b99
commit ed4b53d3ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 274 additions and 196 deletions

View file

@ -152,6 +152,7 @@ func newDestroyCmd() *cobra.Command {
UseLegacyDiff: useLegacyDiff(),
DisableProviderPreview: disableProviderPreview(),
DisableResourceReferences: disableResourceReferences(),
DisableOutputValues: disableOutputValues(),
}
_, res := s.Destroy(commandContext(), backend.UpdateOperation{

View file

@ -170,6 +170,7 @@ func newPreviewCmd() *cobra.Command {
UseLegacyDiff: useLegacyDiff(),
DisableProviderPreview: disableProviderPreview(),
DisableResourceReferences: disableResourceReferences(),
DisableOutputValues: disableOutputValues(),
UpdateTargets: targetURNs,
TargetDependents: targetDependents,
},

View file

@ -146,6 +146,7 @@ func newRefreshCmd() *cobra.Command {
UseLegacyDiff: useLegacyDiff(),
DisableProviderPreview: disableProviderPreview(),
DisableResourceReferences: disableResourceReferences(),
DisableOutputValues: disableOutputValues(),
RefreshTargets: targetUrns,
}

View file

@ -132,6 +132,7 @@ func newUpCmd() *cobra.Command {
UseLegacyDiff: useLegacyDiff(),
DisableProviderPreview: disableProviderPreview(),
DisableResourceReferences: disableResourceReferences(),
DisableOutputValues: disableOutputValues(),
UpdateTargets: targetURNs,
TargetDependents: targetDependents,
}

View file

@ -75,6 +75,10 @@ func disableResourceReferences() bool {
return cmdutil.IsTruthy(os.Getenv("PULUMI_DISABLE_RESOURCE_REFERENCES"))
}
func disableOutputValues() bool {
return !cmdutil.IsTruthy(os.Getenv("PULUMI_ENABLE_OUTPUT_VALUES"))
}
// skipConfirmations returns whether or not confirmation prompts should
// be skipped. This should be used by pass any requirement that a --yes
// parameter has been set for non-interactive scenarios.

View file

@ -122,6 +122,7 @@ func newWatchCmd() *cobra.Command {
UseLegacyDiff: useLegacyDiff(),
DisableProviderPreview: disableProviderPreview(),
DisableResourceReferences: disableResourceReferences(),
DisableOutputValues: disableOutputValues(),
}
res := s.Watch(commandContext(), backend.UpdateOperation{

View file

@ -256,6 +256,7 @@ func (deployment *deployment) run(cancelCtx *Context, actions runActions, policy
TrustDependencies: deployment.Options.trustDependencies,
UseLegacyDiff: deployment.Options.UseLegacyDiff,
DisableResourceReferences: deployment.Options.DisableResourceReferences,
DisableOutputValues: deployment.Options.DisableOutputValues,
}
walkResult = deployment.Deployment.Execute(ctx, opts, preview)
close(done)

View file

@ -137,6 +137,9 @@ type UpdateOptions struct {
// true if the engine should disable resource reference support.
DisableResourceReferences bool
// true if the engine should disable output value support.
DisableOutputValues bool
// true if we should report events for steps that involve default providers.
reportDefaultProviderSteps bool

View file

@ -61,6 +61,7 @@ type Options struct {
TrustDependencies bool // whether or not to trust the resource dependency graph.
UseLegacyDiff bool // whether or not to use legacy diffing behavior.
DisableResourceReferences bool // true to disable resource reference support.
DisableOutputValues bool // true to disable output value support.
}
// DegreeOfParallelism returns the degree of parallelism that should be used during the

View file

@ -405,6 +405,7 @@ type resmon struct {
cancel chan bool // a channel that can cancel the server.
done chan error // a channel that resolves when the server completes.
disableResourceReferences bool // true if resource references are disabled.
disableOutputValues bool // true if output values are disabled.
}
var _ SourceResourceMonitor = (*resmon)(nil)
@ -436,6 +437,7 @@ func newResourceMonitor(src *evalSource, provs ProviderSource, regChan chan *reg
regReadChan: regReadChan,
cancel: cancel,
disableResourceReferences: opts.DisableResourceReferences,
disableOutputValues: opts.DisableOutputValues,
}
// Fire up a gRPC server and start listening for incomings.
@ -539,6 +541,8 @@ func (rm *resmon) SupportsFeature(ctx context.Context,
hasSupport = true
case "resourceReferences":
hasSupport = !rm.disableResourceReferences
case "outputValues":
hasSupport = !rm.disableOutputValues
}
logging.V(5).Infof("ResourceMonitor.SupportsFeature(id: %s) = %t", req.Id, hasSupport)
@ -619,6 +623,9 @@ func (rm *resmon) Call(ctx context.Context, req *pulumirpc.CallRequest) (*pulumi
KeepUnknowns: true,
KeepSecrets: true,
KeepResources: true,
// To initially scope the use of this new feature, we only keep output values when unmarshaling
// properties for RegisterResource (when remote is true for multi-lang components) and Call.
KeepOutputValues: true,
})
if err != nil {
return nil, errors.Wrapf(err, "failed to unmarshal %v args", tok)
@ -904,6 +911,9 @@ func (rm *resmon) RegisterResource(ctx context.Context,
ComputeAssetHashes: true,
KeepSecrets: true,
KeepResources: true,
// To initially scope the use of this new feature, we only keep output values when unmarshaling
// properties for RegisterResource (when remote is true for multi-lang components) and Call.
KeepOutputValues: remote,
})
if err != nil {
return nil, err

View file

@ -66,6 +66,7 @@ type provider struct {
cfgdone chan bool // closed when configuration has completed.
acceptSecrets bool // true if this plugin accepts strongly-typed secrets.
acceptResources bool // true if this plugin accepts strongly-typed resource refs.
acceptOutputs bool // true if this plugin accepts output values.
supportsPreview bool // true if this plugin supports previews for Create and Update.
disableProviderPreview bool // true if previews for Create and Update are disabled.
legacyPreview bool // enables legacy behavior for unconfigured provider previews.
@ -514,6 +515,7 @@ func (p *provider) Configure(inputs resource.PropertyMap) error {
p.acceptSecrets = resp.GetAcceptSecrets()
p.acceptResources = resp.GetAcceptResources()
p.supportsPreview = resp.GetSupportsPreview()
p.acceptOutputs = resp.GetAcceptOutputs()
p.cfgknown, p.cfgerr = true, err
close(p.cfgdone)
@ -1103,6 +1105,9 @@ func (p *provider) Construct(info ConstructInfo, typ tokens.Type, name tokens.QN
KeepUnknowns: true,
KeepSecrets: p.acceptSecrets,
KeepResources: p.acceptResources,
// To initially scope the use of this new feature, we only keep output values for
// Construct and Call (when the client accepts them).
KeepOutputValues: p.acceptOutputs,
})
if err != nil {
return ConstructResult{}, err
@ -1354,6 +1359,9 @@ func (p *provider) Call(tok tokens.ModuleMember, args resource.PropertyMap, info
KeepUnknowns: true,
KeepSecrets: true,
KeepResources: true,
// To initially scope the use of this new feature, we only keep output values for
// Construct and Call (when the client accepts them).
KeepOutputValues: p.acceptOutputs,
})
if err != nil {
return CallResult{}, err

View file

@ -1218,7 +1218,8 @@ proto.pulumirpc.ConfigureResponse.toObject = function(includeInstance, msg) {
var f, obj = {
acceptsecrets: jspb.Message.getBooleanFieldWithDefault(msg, 1, false),
supportspreview: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),
acceptresources: jspb.Message.getBooleanFieldWithDefault(msg, 3, false)
acceptresources: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),
acceptoutputs: jspb.Message.getBooleanFieldWithDefault(msg, 4, false)
};
if (includeInstance) {
@ -1267,6 +1268,10 @@ proto.pulumirpc.ConfigureResponse.deserializeBinaryFromReader = function(msg, re
var value = /** @type {boolean} */ (reader.readBool());
msg.setAcceptresources(value);
break;
case 4:
var value = /** @type {boolean} */ (reader.readBool());
msg.setAcceptoutputs(value);
break;
default:
reader.skipField();
break;
@ -1317,6 +1322,13 @@ proto.pulumirpc.ConfigureResponse.serializeBinaryToWriter = function(message, wr
f
);
}
f = message.getAcceptoutputs();
if (f) {
writer.writeBool(
4,
f
);
}
};
@ -1374,6 +1386,24 @@ proto.pulumirpc.ConfigureResponse.prototype.setAcceptresources = function(value)
};
/**
* optional bool acceptOutputs = 4;
* @return {boolean}
*/
proto.pulumirpc.ConfigureResponse.prototype.getAcceptoutputs = function() {
return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
};
/**
* @param {boolean} value
* @return {!proto.pulumirpc.ConfigureResponse} returns this
*/
proto.pulumirpc.ConfigureResponse.prototype.setAcceptoutputs = function(value) {
return jspb.Message.setProto3BooleanField(this, 4, value);
};
/**
* List of repeated fields within this message type.

View file

@ -236,6 +236,7 @@ type ConfigureResponse struct {
AcceptSecrets bool `protobuf:"varint,1,opt,name=acceptSecrets,proto3" json:"acceptSecrets,omitempty"`
SupportsPreview bool `protobuf:"varint,2,opt,name=supportsPreview,proto3" json:"supportsPreview,omitempty"`
AcceptResources bool `protobuf:"varint,3,opt,name=acceptResources,proto3" json:"acceptResources,omitempty"`
AcceptOutputs bool `protobuf:"varint,4,opt,name=acceptOutputs,proto3" json:"acceptOutputs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -287,6 +288,13 @@ func (m *ConfigureResponse) GetAcceptResources() bool {
return false
}
func (m *ConfigureResponse) GetAcceptOutputs() bool {
if m != nil {
return m.AcceptOutputs
}
return false
}
// ConfigureErrorMissingKeys is sent as a Detail on an error returned from `ResourceProvider.Configure`.
type ConfigureErrorMissingKeys struct {
MissingKeys []*ConfigureErrorMissingKeys_MissingKey `protobuf:"bytes,1,rep,name=missingKeys,proto3" json:"missingKeys,omitempty"`
@ -1963,126 +1971,126 @@ func init() {
func init() { proto.RegisterFile("provider.proto", fileDescriptor_c6a9f3c02af3d1c8) }
var fileDescriptor_c6a9f3c02af3d1c8 = []byte{
// 1894 bytes of a gzipped FileDescriptorProto
// 1903 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x4b, 0x73, 0xdb, 0xc8,
0x11, 0x16, 0x48, 0x90, 0x22, 0x9b, 0x0f, 0x53, 0x93, 0x8d, 0x84, 0xe5, 0xfa, 0xa0, 0x42, 0x52,
0x15, 0xc5, 0xce, 0xd2, 0x8e, 0x7c, 0x48, 0xec, 0xf2, 0x96, 0x57, 0x16, 0x29, 0xaf, 0xca, 0x6b,
0x59, 0x81, 0xd6, 0x79, 0x9c, 0xbc, 0x30, 0x38, 0xa4, 0x11, 0x81, 0x00, 0x3c, 0x18, 0xc8, 0xa5,
0x9c, 0x73, 0xc8, 0x25, 0xb9, 0xa6, 0x72, 0xca, 0x31, 0x97, 0x3c, 0xaa, 0xf2, 0x0b, 0xf2, 0x43,
0x92, 0x63, 0xfe, 0x40, 0x7e, 0x41, 0x6a, 0x1e, 0x00, 0x67, 0x08, 0x90, 0xa2, 0x14, 0x57, 0xf6,
0x86, 0x9e, 0xe9, 0xe9, 0xe9, 0xfe, 0xfa, 0x31, 0x3d, 0x03, 0xe8, 0xc6, 0x24, 0xba, 0xf0, 0xc7,
0x98, 0x0c, 0x62, 0x12, 0xd1, 0x08, 0x35, 0xe3, 0x34, 0x48, 0x67, 0x3e, 0x89, 0xbd, 0x7e, 0x3b,
0x0e, 0xd2, 0xa9, 0x1f, 0x8a, 0x89, 0xfe, 0x27, 0xd3, 0x28, 0x9a, 0x06, 0xf8, 0x1e, 0xa7, 0xde,
0xa4, 0x93, 0x7b, 0x78, 0x16, 0xd3, 0x4b, 0x39, 0x79, 0x7b, 0x71, 0x32, 0xa1, 0x24, 0xf5, 0xa8,
0x98, 0xb5, 0x7f, 0x00, 0xbd, 0x67, 0x98, 0x9e, 0x79, 0x6f, 0xf1, 0xcc, 0x75, 0xf0, 0xbb, 0x14,
0x27, 0x14, 0x59, 0xb0, 0x79, 0x81, 0x49, 0xe2, 0x47, 0xa1, 0x65, 0xec, 0x1a, 0x7b, 0x35, 0x27,
0x23, 0xed, 0xbb, 0xb0, 0xa5, 0x70, 0x27, 0x71, 0x14, 0x26, 0x18, 0x6d, 0x43, 0x3d, 0xe1, 0x23,
0x9c, 0xbb, 0xe9, 0x48, 0xca, 0xfe, 0x7d, 0x05, 0x7a, 0x87, 0x51, 0x38, 0xf1, 0xa7, 0x29, 0xc1,
0x99, 0xec, 0x2f, 0xa0, 0x79, 0xe1, 0x12, 0xdf, 0x7d, 0x13, 0xe0, 0xc4, 0x32, 0x76, 0xab, 0x7b,
0xad, 0xfd, 0x3b, 0x83, 0xdc, 0xae, 0xc1, 0x22, 0xff, 0xe0, 0xa7, 0x19, 0xf3, 0x28, 0xa4, 0xe4,
0xd2, 0x99, 0x2f, 0x46, 0x77, 0xc1, 0x74, 0xc9, 0x34, 0xb1, 0x2a, 0xbb, 0xc6, 0x5e, 0x6b, 0x7f,
0x67, 0x20, 0xcc, 0x1c, 0x64, 0x66, 0x0e, 0xce, 0xb8, 0x99, 0x0e, 0x67, 0x42, 0xdf, 0x85, 0x8e,
0xeb, 0x79, 0x38, 0xa6, 0x67, 0xd8, 0x23, 0x98, 0x26, 0x56, 0x75, 0xd7, 0xd8, 0x6b, 0x38, 0xfa,
0x20, 0xda, 0x83, 0x5b, 0x62, 0xc0, 0xc1, 0x49, 0x94, 0x12, 0x0f, 0x27, 0x96, 0xc9, 0xf9, 0x16,
0x87, 0xfb, 0x8f, 0xa1, 0xab, 0x6b, 0x86, 0x7a, 0x50, 0x3d, 0xc7, 0x97, 0x12, 0x02, 0xf6, 0x89,
0x3e, 0x82, 0xda, 0x85, 0x1b, 0xa4, 0x98, 0x6b, 0xd8, 0x74, 0x04, 0xf1, 0xa8, 0xf2, 0x63, 0xc3,
0xfe, 0xad, 0x01, 0x5b, 0x8a, 0xa5, 0x12, 0xc7, 0x82, 0x8e, 0xc6, 0x12, 0x1d, 0x93, 0x34, 0x8e,
0x23, 0x42, 0x93, 0x53, 0x82, 0x2f, 0x7c, 0xfc, 0x9e, 0xcb, 0x6f, 0x38, 0x8b, 0xc3, 0x65, 0xd6,
0x54, 0x4b, 0xad, 0xb1, 0xff, 0x6e, 0xc0, 0xc7, 0xb9, 0x3e, 0x23, 0x42, 0x22, 0xf2, 0xc2, 0x4f,
0x12, 0x3f, 0x9c, 0x3e, 0xc7, 0x97, 0x09, 0xfa, 0x09, 0xb4, 0x66, 0x73, 0x52, 0x3a, 0xed, 0x5e,
0x99, 0xd3, 0x16, 0x97, 0x0e, 0xe6, 0xdf, 0x8e, 0x2a, 0xa3, 0xff, 0x14, 0x60, 0x3e, 0x85, 0x10,
0x98, 0xa1, 0x3b, 0xc3, 0x12, 0x3b, 0xfe, 0x8d, 0x76, 0xa1, 0x35, 0xc6, 0x89, 0x47, 0xfc, 0x98,
0xb2, 0x38, 0x14, 0x10, 0xaa, 0x43, 0xf6, 0x5f, 0x0d, 0xe8, 0x1c, 0x87, 0x17, 0xd1, 0x79, 0x1e,
0x5b, 0x3d, 0xa8, 0xd2, 0xe8, 0x3c, 0x73, 0x01, 0x8d, 0xce, 0xaf, 0x17, 0x23, 0x7d, 0x68, 0x64,
0x09, 0xc7, 0x81, 0x6a, 0x3a, 0x39, 0xad, 0xa6, 0x84, 0xc9, 0xa7, 0x32, 0xb2, 0x0c, 0xe5, 0x5a,
0x39, 0xca, 0x17, 0xd0, 0xcd, 0xf4, 0x95, 0x1e, 0xbf, 0x07, 0x75, 0x82, 0x69, 0x4a, 0x44, 0x9e,
0xad, 0x50, 0x50, 0xb2, 0xa1, 0x07, 0xd0, 0x98, 0xb8, 0x7e, 0x90, 0x12, 0xcc, 0x6c, 0xaa, 0xf2,
0x25, 0x8a, 0x1f, 0xde, 0x62, 0xef, 0xfc, 0x48, 0xcc, 0x3b, 0x39, 0xa3, 0xfd, 0xa7, 0x1a, 0xb4,
0x0e, 0xdd, 0x20, 0xf8, 0x40, 0x30, 0xbd, 0x82, 0x5b, 0x2e, 0x99, 0x0e, 0x71, 0x8c, 0xc3, 0x31,
0x0e, 0x3d, 0x9f, 0x87, 0x15, 0x53, 0xe5, 0xae, 0xaa, 0xca, 0x7c, 0xbf, 0xc1, 0x81, 0xce, 0x2d,
0x12, 0x79, 0x51, 0x86, 0x86, 0xbe, 0xb9, 0x1c, 0xfd, 0x9a, 0x8e, 0xbe, 0x05, 0x9b, 0x31, 0x89,
0x7e, 0x89, 0x3d, 0x6a, 0xd5, 0xc5, 0x8c, 0x24, 0x59, 0xf6, 0x25, 0xd4, 0xf5, 0xce, 0xad, 0x4d,
0x91, 0x7d, 0x9c, 0x40, 0x8f, 0xa0, 0xee, 0xf1, 0x68, 0xb5, 0x1a, 0x5c, 0x67, 0x7b, 0x89, 0xce,
0x22, 0xa4, 0x85, 0xaa, 0x72, 0x05, 0xba, 0x03, 0x3d, 0xf1, 0x25, 0x52, 0x91, 0x27, 0x43, 0x73,
0xb7, 0xba, 0xd7, 0x74, 0x0a, 0xe3, 0xac, 0x26, 0x8e, 0xc9, 0xa5, 0x93, 0x86, 0x16, 0xf0, 0x60,
0x90, 0x14, 0xb7, 0xd2, 0x25, 0x6e, 0x10, 0xe0, 0xc0, 0x6a, 0xf1, 0xda, 0x9a, 0xd3, 0x2c, 0x92,
0x66, 0x51, 0xe8, 0xd3, 0x88, 0x8c, 0xc2, 0x71, 0x1c, 0xf9, 0x21, 0xb5, 0xda, 0x5c, 0xf7, 0xc5,
0xe1, 0xfe, 0x1d, 0xf8, 0xe8, 0x80, 0x4c, 0xd3, 0x19, 0x0e, 0xa9, 0x86, 0x21, 0x02, 0x33, 0x25,
0xa1, 0x48, 0xd1, 0xa6, 0xc3, 0xbf, 0xfb, 0x11, 0xe7, 0x2d, 0x38, 0xa0, 0xa4, 0x5e, 0x1d, 0xa8,
0xf5, 0x6a, 0xa5, 0x3b, 0x0b, 0x3b, 0x2b, 0xc5, 0xad, 0xff, 0x10, 0x5a, 0x0a, 0x7a, 0xd7, 0xaa,
0x8b, 0xff, 0xa9, 0x40, 0x5b, 0x6c, 0x75, 0xd3, 0x04, 0x79, 0x0d, 0x48, 0x7c, 0x69, 0xf1, 0x59,
0x29, 0x96, 0x2c, 0x65, 0x97, 0x81, 0x53, 0x58, 0x21, 0x1c, 0x5f, 0x22, 0x4a, 0xcb, 0xc0, 0xea,
0x9a, 0x19, 0xd8, 0xdf, 0x03, 0x54, 0xdc, 0xa3, 0xd4, 0x5b, 0xef, 0x60, 0x67, 0x89, 0x36, 0x25,
0x40, 0x7e, 0xae, 0x3b, 0xec, 0xce, 0xfa, 0xf6, 0xa9, 0xa0, 0xff, 0x0a, 0xda, 0x5c, 0x6d, 0xa5,
0x3c, 0x64, 0x80, 0x37, 0x1d, 0xf6, 0xc9, 0xca, 0x43, 0x14, 0x8c, 0xaf, 0x2e, 0x0f, 0x8c, 0x89,
0x31, 0x87, 0xf8, 0xbd, 0x38, 0x6a, 0x56, 0x31, 0x33, 0x26, 0x3b, 0x85, 0x8e, 0xdc, 0x7b, 0xee,
0x70, 0x3f, 0x8c, 0x53, 0x79, 0xf8, 0xad, 0x72, 0xb8, 0x60, 0xbb, 0x59, 0x45, 0x7c, 0x2a, 0x4d,
0x96, 0x33, 0xb2, 0xf6, 0xc4, 0x98, 0xd0, 0x0c, 0xdf, 0x9c, 0x66, 0x99, 0x4c, 0xb0, 0x9b, 0xe4,
0x67, 0x90, 0xa4, 0xec, 0xbf, 0x19, 0xd0, 0x1a, 0xfa, 0x93, 0x49, 0x06, 0x5b, 0x17, 0x2a, 0xfe,
0x58, 0xae, 0xae, 0xf8, 0xe3, 0x0c, 0xc6, 0x4a, 0x11, 0xc6, 0xea, 0x75, 0x60, 0x34, 0xd7, 0x80,
0x91, 0x75, 0x0e, 0xfe, 0x34, 0x8c, 0x08, 0x3e, 0x7c, 0xeb, 0x86, 0x53, 0x7e, 0x02, 0xb1, 0x90,
0xd2, 0x07, 0xed, 0x7f, 0x18, 0xd0, 0x3e, 0x95, 0x66, 0x31, 0xcd, 0xd1, 0x7d, 0x30, 0xcf, 0xfd,
0x50, 0x28, 0xdd, 0xdd, 0xbf, 0xad, 0xe0, 0xa6, 0xb2, 0x0d, 0x9e, 0xfb, 0xe1, 0xd8, 0xe1, 0x9c,
0xe8, 0x36, 0x34, 0x39, 0xee, 0x6c, 0x5c, 0xb6, 0x1d, 0xf3, 0x01, 0xfb, 0x6b, 0x30, 0x19, 0x2f,
0xda, 0x84, 0xea, 0xc1, 0x70, 0xd8, 0xdb, 0x40, 0xb7, 0xa0, 0x75, 0x30, 0x1c, 0xbe, 0x76, 0x46,
0xa7, 0x5f, 0x1e, 0x1c, 0x8e, 0x7a, 0x06, 0x02, 0xa8, 0x0f, 0x47, 0x5f, 0x8e, 0xbe, 0x1a, 0xf5,
0x2a, 0x08, 0x41, 0x57, 0x7c, 0xe7, 0xf3, 0x55, 0x36, 0xff, 0xea, 0x74, 0x78, 0xf0, 0xd5, 0xa8,
0x67, 0xb2, 0x79, 0xf1, 0x9d, 0xcf, 0xd7, 0xec, 0x7f, 0x55, 0xa1, 0x2d, 0x40, 0x97, 0xf1, 0xd2,
0x87, 0x06, 0xc1, 0x71, 0xe0, 0x7a, 0x38, 0xcb, 0xa3, 0x9c, 0x66, 0x67, 0x43, 0x42, 0x45, 0xa3,
0x59, 0xe1, 0x53, 0x19, 0x89, 0xee, 0xc3, 0xb7, 0xc6, 0x38, 0xc0, 0x14, 0x3f, 0xc5, 0x93, 0x88,
0x75, 0x60, 0x7c, 0x85, 0xec, 0x8e, 0xca, 0xa6, 0xd0, 0x67, 0xb0, 0xe9, 0x49, 0x6c, 0x4d, 0x8e,
0xd6, 0x77, 0x14, 0xb4, 0x54, 0x8d, 0x38, 0x21, 0x11, 0x77, 0xb2, 0x35, 0xac, 0xe4, 0x8d, 0xfd,
0xc9, 0x24, 0x73, 0x8c, 0x20, 0xd0, 0x0b, 0x68, 0x8f, 0x31, 0x75, 0xfd, 0x00, 0x8f, 0x39, 0xa0,
0x75, 0x1e, 0xbf, 0xdf, 0x5f, 0x2a, 0x59, 0xe1, 0x15, 0x05, 0x4a, 0x5b, 0xce, 0xce, 0x8f, 0xb7,
0x6e, 0xa2, 0x72, 0xf1, 0xb3, 0xaf, 0xe1, 0x2c, 0x0e, 0xf7, 0x7f, 0x0e, 0x5b, 0x05, 0x61, 0x25,
0xf5, 0xe5, 0x53, 0xbd, 0xbe, 0xec, 0x2c, 0x09, 0x10, 0xb5, 0x98, 0x7c, 0x26, 0x92, 0x42, 0x02,
0x80, 0x7a, 0xd0, 0x1e, 0x1e, 0x1f, 0x1d, 0xbd, 0x7e, 0x75, 0xf2, 0xfc, 0xe4, 0xe5, 0xcf, 0x4e,
0x7a, 0x1b, 0xa8, 0x03, 0x4d, 0x3e, 0x72, 0xf2, 0xf2, 0x84, 0x05, 0x44, 0x46, 0x9e, 0xbd, 0x7c,
0x31, 0xea, 0x55, 0xec, 0xdf, 0x19, 0xd0, 0x39, 0x24, 0xd8, 0xa5, 0x78, 0x79, 0x35, 0xfa, 0x11,
0x80, 0x4c, 0x4e, 0x51, 0xda, 0x57, 0xe6, 0x87, 0xc2, 0xca, 0xe2, 0x81, 0xfa, 0x33, 0x1c, 0xa5,
0x94, 0x7b, 0xda, 0x70, 0x32, 0x52, 0x74, 0x11, 0xa2, 0x97, 0x16, 0xfd, 0x7e, 0x46, 0xda, 0xbf,
0x80, 0x6e, 0xa6, 0x8f, 0x8c, 0xb8, 0xc5, 0x3c, 0xbf, 0xa9, 0x3a, 0xf6, 0x1f, 0x0c, 0x68, 0x39,
0xd8, 0x1d, 0xaf, 0x5f, 0x40, 0xf4, 0xad, 0xaa, 0xeb, 0x5b, 0x3e, 0xaf, 0xaa, 0xe6, 0x5a, 0x55,
0xd5, 0xfe, 0x8d, 0x01, 0x6d, 0xa1, 0xdb, 0x07, 0xb6, 0x5a, 0x51, 0xa5, 0xba, 0x9e, 0x2a, 0xff,
0x36, 0xa0, 0xf3, 0x2a, 0x1e, 0x2b, 0x21, 0xf1, 0x4d, 0x56, 0x5a, 0x25, 0x86, 0x6a, 0x7a, 0x0c,
0x15, 0x6a, 0x70, 0xbd, 0xa4, 0x06, 0xab, 0x91, 0xb6, 0xa9, 0x47, 0xda, 0x31, 0x74, 0x33, 0x33,
0x25, 0xe6, 0x3a, 0xc6, 0xc6, 0xfa, 0x91, 0xf5, 0x6b, 0x03, 0x3a, 0x43, 0x5e, 0xc4, 0xfe, 0x0f,
0xb1, 0xa5, 0x20, 0x62, 0x6a, 0x88, 0xd8, 0x7f, 0xdc, 0xe4, 0xf7, 0x7f, 0xf1, 0xdc, 0xa0, 0xbc,
0x2d, 0x64, 0x0d, 0xbb, 0xb1, 0xa4, 0x61, 0xaf, 0xa8, 0x0d, 0xfb, 0x93, 0xbc, 0x61, 0x17, 0xdd,
0xd6, 0xf7, 0xf4, 0x7b, 0xa7, 0x26, 0xbc, 0xb4, 0x6b, 0x9f, 0x77, 0xe2, 0xe6, 0xd2, 0x4e, 0xbc,
0x76, 0x75, 0x27, 0x5e, 0x2f, 0xed, 0xc4, 0x59, 0x0f, 0x47, 0x2f, 0x63, 0x2c, 0x2f, 0x19, 0xfc,
0x3b, 0xbf, 0xce, 0x36, 0x94, 0xeb, 0xec, 0x36, 0xd4, 0x63, 0x97, 0xe0, 0x90, 0x5a, 0x4d, 0xd1,
0x45, 0x08, 0x4a, 0x49, 0x07, 0x58, 0xaf, 0xdf, 0xf9, 0x1a, 0xb6, 0xc4, 0x81, 0xab, 0xf6, 0xb7,
0x2d, 0x0e, 0xcd, 0xfe, 0x2a, 0x68, 0x8e, 0x17, 0x17, 0x09, 0x94, 0x8a, 0xc2, 0xa4, 0x87, 0x28,
0xf3, 0x50, 0x3b, 0x0b, 0x51, 0x4e, 0xa2, 0x2f, 0xa0, 0x99, 0x5d, 0xc9, 0x12, 0xab, 0x53, 0xf6,
0x76, 0xa3, 0xef, 0x79, 0x9a, 0x31, 0xcb, 0xb7, 0x9b, 0x7c, 0x31, 0xdb, 0xc3, 0x0d, 0x7c, 0x37,
0xc1, 0x89, 0xd5, 0x15, 0x47, 0xb3, 0x24, 0x91, 0xcd, 0xce, 0x44, 0xc5, 0xb4, 0x5b, 0x7c, 0x5a,
0x1b, 0x2b, 0xbd, 0x88, 0xf5, 0xca, 0x2f, 0x62, 0xec, 0xaa, 0x94, 0x9f, 0x55, 0x57, 0x35, 0xdf,
0x37, 0xbf, 0xb9, 0xf4, 0x2f, 0x60, 0xbb, 0x1c, 0xe1, 0x12, 0x29, 0x47, 0xfa, 0xb1, 0x7a, 0xff,
0x0a, 0x08, 0x0b, 0xba, 0xab, 0xfb, 0x3e, 0x86, 0xae, 0x8e, 0xf2, 0xb5, 0xee, 0x5b, 0xff, 0xac,
0xf0, 0x77, 0xa8, 0x6c, 0x4b, 0x59, 0x77, 0x8a, 0x47, 0xee, 0xa7, 0x3c, 0x35, 0x29, 0xbe, 0xaa,
0xd0, 0x0b, 0x2e, 0xe4, 0xc2, 0x16, 0xff, 0x28, 0x79, 0x23, 0x78, 0x50, 0x6e, 0xac, 0xec, 0x70,
0xce, 0x16, 0x57, 0xc9, 0x20, 0x2d, 0x48, 0xbb, 0x96, 0x5b, 0xdf, 0xc3, 0x76, 0xb9, 0xe0, 0x12,
0xac, 0x9e, 0xe9, 0xbe, 0xf9, 0xe1, 0x4a, 0x75, 0xaf, 0x70, 0x8e, 0xfd, 0x17, 0x03, 0x76, 0xf8,
0x93, 0x58, 0xf6, 0x06, 0x74, 0x1c, 0xfa, 0xf4, 0x88, 0xb7, 0x5d, 0x1f, 0xee, 0x40, 0xb5, 0x60,
0x53, 0xdc, 0x48, 0x04, 0xc4, 0x4d, 0x27, 0x23, 0xaf, 0x7d, 0xea, 0xef, 0xff, 0xb9, 0x01, 0xbd,
0x4c, 0xd5, 0x2c, 0xaa, 0x58, 0xd2, 0xe7, 0x4f, 0xbe, 0xe8, 0x13, 0x05, 0x8f, 0xc5, 0x67, 0xe3,
0xfe, 0xed, 0xf2, 0x49, 0x01, 0x96, 0xbd, 0x81, 0x9e, 0x42, 0x8b, 0xdf, 0xba, 0x44, 0x8e, 0xa1,
0xc2, 0x3d, 0x2d, 0x93, 0x63, 0x15, 0x27, 0x72, 0x19, 0x4f, 0x00, 0x78, 0x7f, 0x29, 0x6b, 0x7b,
0xa1, 0x55, 0x16, 0x12, 0x76, 0x96, 0xb4, 0xd0, 0xf6, 0x06, 0x33, 0x27, 0x7f, 0xae, 0xd4, 0xcc,
0x59, 0x7c, 0x79, 0xd6, 0xcc, 0x29, 0x3c, 0xd6, 0x72, 0x55, 0xea, 0xe2, 0x39, 0x0f, 0xa9, 0x0a,
0x6b, 0x2f, 0x92, 0xfd, 0x8f, 0x4b, 0x66, 0x72, 0x01, 0xcf, 0xa0, 0x7d, 0x46, 0x09, 0x76, 0x67,
0xff, 0x93, 0x98, 0xfb, 0x06, 0x7a, 0x08, 0x26, 0xbb, 0xef, 0x6b, 0x70, 0x28, 0x2f, 0x36, 0x1a,
0x1c, 0xea, 0xc3, 0x80, 0xbd, 0x81, 0x1e, 0x43, 0x8d, 0x43, 0x7c, 0x33, 0x6f, 0x3c, 0x04, 0x93,
0xdf, 0x3c, 0x6e, 0xe0, 0x87, 0x27, 0x50, 0x17, 0x8d, 0xb5, 0x66, 0xb6, 0xd6, 0xfb, 0x6b, 0x66,
0xeb, 0x5d, 0xb8, 0xd8, 0x9b, 0x75, 0xa8, 0xda, 0xde, 0x4a, 0x3b, 0xad, 0xed, 0xad, 0xb6, 0xb2,
0x62, 0x6f, 0xd1, 0x6a, 0x69, 0x7b, 0x6b, 0x4d, 0xa6, 0xb6, 0xb7, 0xde, 0x97, 0x71, 0xd4, 0xea,
0xa2, 0xbf, 0xd2, 0x04, 0x68, 0x2d, 0x57, 0x7f, 0xbb, 0x90, 0x6d, 0xa3, 0x59, 0x4c, 0x2f, 0xf3,
0x10, 0x14, 0xb5, 0x64, 0x31, 0x04, 0xb5, 0xea, 0xbf, 0x18, 0x82, 0x7a, 0xf9, 0xb1, 0x37, 0xd0,
0x23, 0xa8, 0x1f, 0xba, 0xa1, 0x87, 0x99, 0xeb, 0x4b, 0x77, 0x5b, 0xa1, 0xc5, 0xe7, 0xd0, 0x79,
0x86, 0xe9, 0x29, 0xff, 0x8d, 0x74, 0x1c, 0x4e, 0xa2, 0xa5, 0x22, 0xbe, 0xad, 0x5e, 0xfb, 0x72,
0x76, 0x7b, 0xe3, 0x4d, 0x9d, 0x33, 0x3e, 0xf8, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x3f,
0xb3, 0xcf, 0xa7, 0x1a, 0x00, 0x00,
0x11, 0x16, 0xf8, 0x12, 0xd9, 0x7c, 0x98, 0x9a, 0x6c, 0x24, 0x2c, 0xd7, 0x07, 0x15, 0x92, 0xaa,
0x28, 0x76, 0x96, 0x76, 0xe4, 0x43, 0x62, 0x97, 0xb7, 0xbc, 0xb2, 0x48, 0x79, 0x55, 0x5e, 0xcb,
0x0a, 0xb4, 0xce, 0xe3, 0xe4, 0x85, 0xc9, 0x21, 0x8d, 0x08, 0x04, 0xe0, 0xc1, 0x80, 0x2e, 0xe5,
0x9c, 0x43, 0x4e, 0xb9, 0xa6, 0x72, 0xca, 0x31, 0x97, 0x3c, 0xaa, 0x92, 0x3f, 0x90, 0x1f, 0x92,
0x1c, 0xf3, 0x07, 0xf2, 0x0b, 0x52, 0xf3, 0x02, 0x67, 0x08, 0x50, 0xa2, 0x14, 0x57, 0xf6, 0x86,
0x9e, 0xe9, 0x99, 0xee, 0xfe, 0xfa, 0x31, 0x3d, 0x03, 0xe8, 0xc4, 0x24, 0x9a, 0xfb, 0x63, 0x4c,
0xfa, 0x31, 0x89, 0x68, 0x84, 0x1a, 0x71, 0x1a, 0xa4, 0x33, 0x9f, 0xc4, 0xa3, 0x5e, 0x2b, 0x0e,
0xd2, 0xa9, 0x1f, 0x8a, 0x89, 0xde, 0x27, 0xd3, 0x28, 0x9a, 0x06, 0xf8, 0x1e, 0xa7, 0xde, 0xa4,
0x93, 0x7b, 0x78, 0x16, 0xd3, 0x0b, 0x39, 0x79, 0x7b, 0x79, 0x32, 0xa1, 0x24, 0x1d, 0x51, 0x31,
0xeb, 0xfc, 0x00, 0xba, 0xcf, 0x30, 0x3d, 0x1b, 0xbd, 0xc5, 0x33, 0xcf, 0xc5, 0xef, 0x52, 0x9c,
0x50, 0x64, 0xc3, 0xe6, 0x1c, 0x93, 0xc4, 0x8f, 0x42, 0xdb, 0xda, 0xb5, 0xf6, 0xaa, 0xae, 0x22,
0x9d, 0xbb, 0xb0, 0xa5, 0x71, 0x27, 0x71, 0x14, 0x26, 0x18, 0x6d, 0x43, 0x2d, 0xe1, 0x23, 0x9c,
0xbb, 0xe1, 0x4a, 0xca, 0xf9, 0x5d, 0x09, 0xba, 0x87, 0x51, 0x38, 0xf1, 0xa7, 0x29, 0xc1, 0x6a,
0xef, 0x2f, 0xa0, 0x31, 0xf7, 0x88, 0xef, 0xbd, 0x09, 0x70, 0x62, 0x5b, 0xbb, 0xe5, 0xbd, 0xe6,
0xfe, 0x9d, 0x7e, 0x66, 0x57, 0x7f, 0x99, 0xbf, 0xff, 0x53, 0xc5, 0x3c, 0x0c, 0x29, 0xb9, 0x70,
0x17, 0x8b, 0xd1, 0x5d, 0xa8, 0x78, 0x64, 0x9a, 0xd8, 0xa5, 0x5d, 0x6b, 0xaf, 0xb9, 0xbf, 0xd3,
0x17, 0x66, 0xf6, 0x95, 0x99, 0xfd, 0x33, 0x6e, 0xa6, 0xcb, 0x99, 0xd0, 0x77, 0xa1, 0xed, 0x8d,
0x46, 0x38, 0xa6, 0x67, 0x78, 0x44, 0x30, 0x4d, 0xec, 0xf2, 0xae, 0xb5, 0x57, 0x77, 0xcd, 0x41,
0xb4, 0x07, 0xb7, 0xc4, 0x80, 0x8b, 0x93, 0x28, 0x25, 0x23, 0x9c, 0xd8, 0x15, 0xce, 0xb7, 0x3c,
0xdc, 0x7b, 0x0c, 0x1d, 0x53, 0x33, 0xd4, 0x85, 0xf2, 0x39, 0xbe, 0x90, 0x10, 0xb0, 0x4f, 0xf4,
0x11, 0x54, 0xe7, 0x5e, 0x90, 0x62, 0xae, 0x61, 0xc3, 0x15, 0xc4, 0xa3, 0xd2, 0x8f, 0x2d, 0xe7,
0xef, 0x16, 0x6c, 0x69, 0x96, 0x4a, 0x1c, 0x73, 0x3a, 0x5a, 0x2b, 0x74, 0x4c, 0xd2, 0x38, 0x8e,
0x08, 0x4d, 0x4e, 0x09, 0x9e, 0xfb, 0xf8, 0x3d, 0xdf, 0xbf, 0xee, 0x2e, 0x0f, 0x17, 0x59, 0x53,
0x2e, 0xb4, 0x66, 0x21, 0xf9, 0x65, 0x4a, 0xe3, 0x94, 0x2a, 0xab, 0xcd, 0x41, 0xe7, 0x6f, 0x16,
0x7c, 0x9c, 0x69, 0x3d, 0x24, 0x24, 0x22, 0x2f, 0xfc, 0x24, 0xf1, 0xc3, 0xe9, 0x73, 0x7c, 0x91,
0xa0, 0x9f, 0x40, 0x73, 0xb6, 0x20, 0xa5, 0x6b, 0xef, 0x15, 0xb9, 0x76, 0x79, 0x69, 0x7f, 0xf1,
0xed, 0xea, 0x7b, 0xf4, 0x9e, 0x02, 0x2c, 0xa6, 0x10, 0x82, 0x4a, 0xe8, 0xcd, 0xb0, 0x44, 0x98,
0x7f, 0xa3, 0x5d, 0x68, 0x8e, 0x71, 0x32, 0x22, 0x7e, 0x4c, 0x59, 0xb4, 0x0a, 0xa0, 0xf5, 0x21,
0xe7, 0x2f, 0x16, 0xb4, 0x8f, 0xc3, 0x79, 0x74, 0x9e, 0x45, 0x60, 0x17, 0xca, 0x34, 0x3a, 0x57,
0x8e, 0xa2, 0xd1, 0xf9, 0xf5, 0x22, 0xa9, 0x07, 0x75, 0x95, 0x96, 0x1c, 0xce, 0x86, 0x9b, 0xd1,
0x7a, 0xe2, 0x54, 0xf8, 0x94, 0x22, 0x8b, 0x7c, 0x51, 0x2d, 0xf4, 0x85, 0x33, 0x87, 0x8e, 0xd2,
0x57, 0xc6, 0xc5, 0x3d, 0xa8, 0x11, 0x4c, 0x53, 0x22, 0xb2, 0xf1, 0x12, 0x05, 0x25, 0x1b, 0x7a,
0x00, 0xf5, 0x89, 0xe7, 0x07, 0x29, 0xc1, 0xcc, 0xa6, 0x32, 0x5f, 0xa2, 0xf9, 0xe1, 0x2d, 0x1e,
0x9d, 0x1f, 0x89, 0x79, 0x37, 0x63, 0x74, 0xfe, 0x58, 0x85, 0xe6, 0xa1, 0x17, 0x04, 0x1f, 0x08,
0xa6, 0x57, 0x70, 0xcb, 0x23, 0xd3, 0x01, 0x8e, 0x71, 0x38, 0xc6, 0xe1, 0xc8, 0xe7, 0xc1, 0xc7,
0x54, 0xb9, 0xab, 0xab, 0xb2, 0x90, 0xd7, 0x3f, 0x30, 0xb9, 0x45, 0xba, 0x2f, 0xef, 0x61, 0xa0,
0x5f, 0x59, 0x8d, 0x7e, 0xd5, 0x44, 0xdf, 0x86, 0xcd, 0x98, 0x44, 0xbf, 0xc4, 0x23, 0x6a, 0xd7,
0xc4, 0x8c, 0x24, 0x59, 0x8e, 0x26, 0xd4, 0x1b, 0x9d, 0xdb, 0x9b, 0x22, 0x47, 0x39, 0x81, 0x1e,
0x41, 0x6d, 0xc4, 0xa3, 0xd5, 0xae, 0x73, 0x9d, 0x9d, 0x15, 0x3a, 0x8b, 0x90, 0x16, 0xaa, 0xca,
0x15, 0xe8, 0x0e, 0x74, 0xc5, 0x97, 0x48, 0x58, 0x9e, 0x0c, 0x8d, 0xdd, 0xf2, 0x5e, 0xc3, 0xcd,
0x8d, 0xb3, 0xca, 0x39, 0x26, 0x17, 0x6e, 0x1a, 0xda, 0xc0, 0x83, 0x41, 0x52, 0xdc, 0x4a, 0x8f,
0x78, 0x41, 0x80, 0x03, 0xbb, 0xc9, 0x2b, 0x70, 0x46, 0xb3, 0x48, 0x9a, 0x45, 0xa1, 0x4f, 0x23,
0x32, 0x0c, 0xc7, 0x71, 0xe4, 0x87, 0xd4, 0x6e, 0x71, 0xdd, 0x97, 0x87, 0x7b, 0x77, 0xe0, 0xa3,
0x03, 0x32, 0x4d, 0x67, 0x38, 0xa4, 0x06, 0x86, 0x08, 0x2a, 0x29, 0x09, 0x45, 0x8a, 0x36, 0x5c,
0xfe, 0xdd, 0x8b, 0x38, 0x6f, 0xce, 0x01, 0x05, 0x55, 0xed, 0x40, 0xaf, 0x6a, 0x97, 0xba, 0x33,
0x27, 0x59, 0x2b, 0x81, 0xbd, 0x87, 0xd0, 0xd4, 0xd0, 0xbb, 0x56, 0xf5, 0xfc, 0x4f, 0x09, 0x5a,
0x42, 0xd4, 0x4d, 0x13, 0xe4, 0x35, 0x20, 0xf1, 0x65, 0xc4, 0x67, 0x29, 0x5f, 0xb2, 0x34, 0x29,
0x7d, 0x37, 0xb7, 0x42, 0x38, 0xbe, 0x60, 0x2b, 0x23, 0x03, 0xcb, 0x6b, 0x66, 0x60, 0x6f, 0x0f,
0x50, 0x5e, 0x46, 0xa1, 0xb7, 0xde, 0xc1, 0xce, 0x0a, 0x6d, 0x0a, 0x80, 0xfc, 0xdc, 0x74, 0xd8,
0x9d, 0xf5, 0xed, 0xd3, 0x41, 0xff, 0x15, 0xb4, 0xb8, 0xda, 0x5a, 0x79, 0x50, 0x80, 0x37, 0x5c,
0xf6, 0xc9, 0xca, 0x43, 0x14, 0x8c, 0xaf, 0x2e, 0x0f, 0x8c, 0x89, 0x31, 0x87, 0xf8, 0xbd, 0x38,
0x90, 0x2e, 0x63, 0x66, 0x4c, 0x4e, 0x0a, 0x6d, 0x29, 0x7b, 0xe1, 0x70, 0x3f, 0xe4, 0x07, 0xd5,
0x55, 0x0e, 0x17, 0x6c, 0x37, 0xab, 0x88, 0x4f, 0xa5, 0xc9, 0x72, 0x46, 0xd6, 0x9e, 0x18, 0x13,
0xaa, 0xf0, 0xcd, 0x68, 0x96, 0xc9, 0x04, 0x7b, 0x49, 0x76, 0x06, 0x49, 0xca, 0xf9, 0xab, 0x05,
0xcd, 0x81, 0x3f, 0x99, 0x28, 0xd8, 0x3a, 0x50, 0xf2, 0xc7, 0x72, 0x75, 0xc9, 0x1f, 0x2b, 0x18,
0x4b, 0x79, 0x18, 0xcb, 0xd7, 0x81, 0xb1, 0xb2, 0x06, 0x8c, 0xec, 0x94, 0xf7, 0xa7, 0x61, 0x44,
0xf0, 0xe1, 0x5b, 0x2f, 0x9c, 0xf2, 0x13, 0x88, 0x85, 0x94, 0x39, 0xe8, 0xfc, 0xc3, 0x82, 0xd6,
0xa9, 0x34, 0x8b, 0x69, 0x8e, 0xee, 0x43, 0xe5, 0xdc, 0x0f, 0x85, 0xd2, 0x9d, 0xfd, 0xdb, 0x1a,
0x6e, 0x3a, 0x5b, 0xff, 0xb9, 0x1f, 0x8e, 0x5d, 0xce, 0x89, 0x6e, 0x43, 0x83, 0xe3, 0xce, 0xc6,
0x65, 0x73, 0xb2, 0x18, 0x70, 0xbe, 0x86, 0x0a, 0xe3, 0x45, 0x9b, 0x50, 0x3e, 0x18, 0x0c, 0xba,
0x1b, 0xe8, 0x16, 0x34, 0x0f, 0x06, 0x83, 0xd7, 0xee, 0xf0, 0xf4, 0xcb, 0x83, 0xc3, 0x61, 0xd7,
0x42, 0x00, 0xb5, 0xc1, 0xf0, 0xcb, 0xe1, 0x57, 0xc3, 0x6e, 0x09, 0x21, 0xe8, 0x88, 0xef, 0x6c,
0xbe, 0xcc, 0xe6, 0x5f, 0x9d, 0x0e, 0x0e, 0xbe, 0x1a, 0x76, 0x2b, 0x6c, 0x5e, 0x7c, 0x67, 0xf3,
0x55, 0xe7, 0x5f, 0x65, 0x68, 0x09, 0xd0, 0x65, 0xbc, 0xf4, 0xa0, 0x4e, 0x70, 0x1c, 0x78, 0x23,
0xac, 0xf2, 0x28, 0xa3, 0xd9, 0xd9, 0x90, 0x50, 0xd1, 0x8e, 0x96, 0xf8, 0x94, 0x22, 0xd1, 0x7d,
0xf8, 0xd6, 0x18, 0x07, 0x98, 0xe2, 0xa7, 0x78, 0x12, 0xb1, 0x3e, 0x8d, 0xaf, 0x90, 0x3d, 0x54,
0xd1, 0x14, 0xfa, 0x0c, 0x36, 0x47, 0x12, 0xdb, 0x0a, 0x47, 0xeb, 0x3b, 0x1a, 0x5a, 0xba, 0x46,
0x9c, 0x90, 0x88, 0xbb, 0x6a, 0x0d, 0x2b, 0x79, 0x63, 0x7f, 0x32, 0x51, 0x8e, 0x11, 0x04, 0x7a,
0x01, 0xad, 0x31, 0xa6, 0x9e, 0x1f, 0xe0, 0x31, 0x07, 0xb4, 0xc6, 0xe3, 0xf7, 0xfb, 0x2b, 0x77,
0xd6, 0x78, 0x45, 0x81, 0x32, 0x96, 0xb3, 0xf3, 0xe3, 0xad, 0x97, 0xe8, 0x5c, 0xfc, 0xec, 0xab,
0xbb, 0xcb, 0xc3, 0xbd, 0x9f, 0xc3, 0x56, 0x6e, 0xb3, 0x82, 0xfa, 0xf2, 0xa9, 0x59, 0x5f, 0x76,
0x56, 0x04, 0x88, 0x5e, 0x4c, 0x3e, 0x13, 0x49, 0x21, 0x01, 0x40, 0x5d, 0x68, 0x0d, 0x8e, 0x8f,
0x8e, 0x5e, 0xbf, 0x3a, 0x79, 0x7e, 0xf2, 0xf2, 0x67, 0x27, 0xdd, 0x0d, 0xd4, 0x86, 0x06, 0x1f,
0x39, 0x79, 0x79, 0xc2, 0x02, 0x42, 0x91, 0x67, 0x2f, 0x5f, 0x0c, 0xbb, 0x25, 0xe7, 0xb7, 0x16,
0xb4, 0x0f, 0x09, 0xf6, 0x28, 0x5e, 0x5d, 0x8d, 0x7e, 0x04, 0x20, 0x93, 0x53, 0x94, 0xf6, 0x4b,
0xf3, 0x43, 0x63, 0x65, 0xf1, 0x40, 0xfd, 0x19, 0x8e, 0x52, 0xca, 0x3d, 0x6d, 0xb9, 0x8a, 0x14,
0x5d, 0x84, 0xe8, 0xb8, 0x45, 0x7f, 0xac, 0x48, 0xe7, 0x17, 0xd0, 0x51, 0xfa, 0xc8, 0x88, 0x5b,
0xce, 0xf3, 0x9b, 0xaa, 0xe3, 0xfc, 0xde, 0x82, 0xa6, 0x8b, 0xbd, 0xf1, 0xfa, 0x05, 0xc4, 0x14,
0x55, 0x5e, 0xdf, 0xf2, 0x45, 0x55, 0xad, 0xac, 0x55, 0x55, 0x9d, 0xdf, 0x58, 0xd0, 0x12, 0xba,
0x7d, 0x60, 0xab, 0x35, 0x55, 0xca, 0xeb, 0xa9, 0xf2, 0x6f, 0x0b, 0xda, 0xaf, 0xe2, 0xb1, 0x16,
0x12, 0xdf, 0x64, 0xa5, 0xd5, 0x62, 0xa8, 0x6a, 0xc6, 0x50, 0xae, 0x06, 0xd7, 0x0a, 0x6a, 0xb0,
0x1e, 0x69, 0x9b, 0x66, 0xa4, 0x1d, 0x43, 0x47, 0x99, 0x29, 0x31, 0x37, 0x31, 0xb6, 0xd6, 0x8f,
0xac, 0x5f, 0x5b, 0xd0, 0x1e, 0xf0, 0x22, 0xf6, 0x7f, 0x88, 0x2d, 0x0d, 0x91, 0x8a, 0x81, 0x88,
0xf3, 0x87, 0x4d, 0xfe, 0x4a, 0x20, 0x1e, 0x25, 0xb4, 0x17, 0x08, 0xd5, 0xb0, 0x5b, 0x2b, 0x1a,
0xf6, 0x92, 0xde, 0xb0, 0x3f, 0xc9, 0x1a, 0x76, 0xd1, 0x6d, 0x7d, 0xcf, 0xbc, 0x77, 0x1a, 0x9b,
0x17, 0x76, 0xed, 0x8b, 0x4e, 0xbc, 0xb2, 0xb2, 0x13, 0xaf, 0x5e, 0xdd, 0x89, 0xd7, 0x0a, 0x3b,
0x71, 0xd6, 0xc3, 0xd1, 0x8b, 0x18, 0xcb, 0x4b, 0x06, 0xff, 0xce, 0xae, 0xb3, 0x75, 0xed, 0x3a,
0xbb, 0x0d, 0xb5, 0xd8, 0x23, 0x38, 0xa4, 0x76, 0x43, 0x74, 0x11, 0x82, 0xd2, 0xd2, 0x01, 0xd6,
0xeb, 0x77, 0xbe, 0x86, 0x2d, 0x71, 0xe0, 0xea, 0xfd, 0x6d, 0x93, 0x43, 0xb3, 0x7f, 0x19, 0x34,
0xc7, 0xcb, 0x8b, 0x04, 0x4a, 0xf9, 0xcd, 0xa4, 0x87, 0x28, 0xf3, 0x50, 0x4b, 0x85, 0x28, 0x27,
0xd1, 0x17, 0xd0, 0x50, 0x57, 0xb2, 0xc4, 0x6e, 0x17, 0xbd, 0xf0, 0x98, 0x32, 0x4f, 0x15, 0xb3,
0x7c, 0xe1, 0xc9, 0x16, 0x33, 0x19, 0x5e, 0xe0, 0x7b, 0x09, 0x4e, 0xec, 0x8e, 0x38, 0x9a, 0x25,
0x89, 0x1c, 0x76, 0x26, 0x6a, 0xa6, 0xdd, 0xe2, 0xd3, 0xc6, 0x58, 0xe1, 0x45, 0xac, 0x5b, 0x7c,
0x11, 0x63, 0x57, 0xa5, 0xec, 0xac, 0xba, 0xaa, 0xf9, 0xbe, 0xf9, 0xcd, 0xa5, 0x37, 0x87, 0xed,
0x62, 0x84, 0x0b, 0x76, 0x39, 0x32, 0x8f, 0xd5, 0xfb, 0x57, 0x40, 0x98, 0xd3, 0x5d, 0x97, 0xfb,
0x18, 0x3a, 0x26, 0xca, 0xd7, 0xba, 0x6f, 0xfd, 0xb3, 0xc4, 0x5f, 0xab, 0x94, 0x48, 0x59, 0x77,
0xf2, 0x47, 0xee, 0xa7, 0x3c, 0x35, 0x29, 0xbe, 0xaa, 0xd0, 0x0b, 0x2e, 0xe4, 0xc1, 0x16, 0xff,
0x28, 0x78, 0x23, 0x78, 0x50, 0x6c, 0xac, 0xec, 0x70, 0xce, 0x96, 0x57, 0xc9, 0x20, 0xcd, 0xed,
0x76, 0x2d, 0xb7, 0xbe, 0x87, 0xed, 0xe2, 0x8d, 0x0b, 0xb0, 0x7a, 0x66, 0xfa, 0xe6, 0x87, 0x97,
0xaa, 0x7b, 0x85, 0x73, 0x9c, 0x3f, 0x5b, 0xb0, 0xc3, 0x9f, 0xc4, 0xd4, 0x1b, 0xd0, 0x71, 0xe8,
0xd3, 0x23, 0xde, 0x76, 0x7d, 0xb8, 0x03, 0xd5, 0x86, 0x4d, 0x71, 0x23, 0x11, 0x10, 0x37, 0x5c,
0x45, 0x5e, 0xfb, 0xd4, 0xdf, 0xff, 0x53, 0x1d, 0xba, 0x4a, 0x55, 0x15, 0x55, 0x2c, 0xe9, 0xb3,
0x87, 0x61, 0xf4, 0x89, 0x86, 0xc7, 0xf2, 0xe3, 0x72, 0xef, 0x76, 0xf1, 0xa4, 0x00, 0xcb, 0xd9,
0x40, 0x4f, 0xa1, 0xc9, 0x6f, 0x5d, 0x22, 0xc7, 0x50, 0xee, 0x9e, 0xa6, 0xf6, 0xb1, 0xf3, 0x13,
0xd9, 0x1e, 0x4f, 0x00, 0x78, 0x7f, 0x29, 0x6b, 0x7b, 0xae, 0x55, 0x16, 0x3b, 0xec, 0xac, 0x68,
0xa1, 0x9d, 0x0d, 0x66, 0x4e, 0xf6, 0x5c, 0x69, 0x98, 0xb3, 0xfc, 0x3e, 0x6d, 0x98, 0x93, 0x7b,
0xd2, 0xe5, 0xaa, 0xd4, 0xc4, 0x73, 0x1e, 0xd2, 0x15, 0x36, 0x5e, 0x24, 0x7b, 0x1f, 0x17, 0xcc,
0x64, 0x1b, 0x3c, 0x83, 0xd6, 0x19, 0x25, 0xd8, 0x9b, 0xfd, 0x4f, 0xdb, 0xdc, 0xb7, 0xd0, 0x43,
0xa8, 0xb0, 0xfb, 0xbe, 0x01, 0x87, 0xf6, 0x62, 0x63, 0xc0, 0xa1, 0x3f, 0x0c, 0x38, 0x1b, 0xe8,
0x31, 0x54, 0x39, 0xc4, 0x37, 0xf3, 0xc6, 0x43, 0xa8, 0xf0, 0x9b, 0xc7, 0x0d, 0xfc, 0xf0, 0x04,
0x6a, 0xa2, 0xb1, 0x36, 0xcc, 0x36, 0x7a, 0x7f, 0xc3, 0x6c, 0xb3, 0x0b, 0x17, 0xb2, 0x59, 0x87,
0x6a, 0xc8, 0xd6, 0xda, 0x69, 0x43, 0xb6, 0xde, 0xca, 0x0a, 0xd9, 0xa2, 0xd5, 0x32, 0x64, 0x1b,
0x4d, 0xa6, 0x21, 0xdb, 0xec, 0xcb, 0x38, 0x6a, 0x35, 0xd1, 0x5f, 0x19, 0x1b, 0x18, 0x2d, 0x57,
0x6f, 0x3b, 0x97, 0x6d, 0xc3, 0x59, 0x4c, 0x2f, 0xb2, 0x10, 0x14, 0xb5, 0x64, 0x39, 0x04, 0x8d,
0xea, 0xbf, 0x1c, 0x82, 0x66, 0xf9, 0x71, 0x36, 0xd0, 0x23, 0xa8, 0x1d, 0x7a, 0xe1, 0x08, 0x33,
0xd7, 0x17, 0x4a, 0xbb, 0x44, 0x8b, 0xcf, 0xa1, 0xfd, 0x0c, 0xd3, 0x53, 0xfe, 0xb3, 0xe9, 0x38,
0x9c, 0x44, 0x2b, 0xb7, 0xf8, 0xb6, 0x7e, 0xed, 0xcb, 0xd8, 0x9d, 0x8d, 0x37, 0x35, 0xce, 0xf8,
0xe0, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x90, 0x39, 0x3d, 0x3f, 0xcd, 0x1a, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View file

@ -90,6 +90,7 @@ message ConfigureResponse {
bool acceptSecrets = 1; // when true, the engine should pass secrets as strongly typed values to the provider.
bool supportsPreview = 2; // when true, the engine should invoke create and update with preview=true during previews.
bool acceptResources = 3; // when true, the engine should pass resources as strongly typed values to the provider.
bool acceptOutputs = 4; // when true, the engine should pass output values to the provider.
}
// ConfigureErrorMissingKeys is sent as a Detail on an error returned from `ResourceProvider.Configure`.

File diff suppressed because one or more lines are too long