Skip to content

[Backport 8.0] Add implicit operators to container variants #6846

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ public sealed partial class CompletionSuggester
[JsonInclude]
[JsonPropertyName("skip_duplicates")]
public bool? SkipDuplicates { get; set; }

public static implicit operator FieldSuggester(CompletionSuggester completionSuggester) => FieldSuggester.Completion(completionSuggester);
}

public sealed partial class CompletionSuggesterDescriptor<TDocument> : SerializableDescriptor<CompletionSuggesterDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public sealed partial class LaplaceSmoothingModel
[JsonInclude]
[JsonPropertyName("alpha")]
public double Alpha { get; set; }

public static implicit operator SmoothingModelContainer(LaplaceSmoothingModel laplaceSmoothingModel) => SmoothingModelContainer.Laplace(laplaceSmoothingModel);
}

public sealed partial class LaplaceSmoothingModelDescriptor : SerializableDescriptor<LaplaceSmoothingModelDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public sealed partial class LinearInterpolationSmoothingModel
[JsonInclude]
[JsonPropertyName("unigram_lambda")]
public double UnigramLambda { get; set; }

public static implicit operator SmoothingModelContainer(LinearInterpolationSmoothingModel linearInterpolationSmoothingModel) => SmoothingModelContainer.LinearInterpolation(linearInterpolationSmoothingModel);
}

public sealed partial class LinearInterpolationSmoothingModelDescriptor : SerializableDescriptor<LinearInterpolationSmoothingModelDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ public sealed partial class PhraseSuggester
[JsonInclude]
[JsonPropertyName("token_limit")]
public int? TokenLimit { get; set; }

public static implicit operator FieldSuggester(PhraseSuggester phraseSuggester) => FieldSuggester.Phrase(phraseSuggester);
}

public sealed partial class PhraseSuggesterDescriptor<TDocument> : SerializableDescriptor<PhraseSuggesterDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public sealed partial class StupidBackoffSmoothingModel
[JsonInclude]
[JsonPropertyName("discount")]
public double Discount { get; set; }

public static implicit operator SmoothingModelContainer(StupidBackoffSmoothingModel stupidBackoffSmoothingModel) => SmoothingModelContainer.StupidBackoff(stupidBackoffSmoothingModel);
}

public sealed partial class StupidBackoffSmoothingModelDescriptor : SerializableDescriptor<StupidBackoffSmoothingModelDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ public sealed partial class TermSuggester
[JsonInclude]
[JsonPropertyName("text")]
public string? Text { get; set; }

public static implicit operator FieldSuggester(TermSuggester termSuggester) => FieldSuggester.Term(termSuggester);
}

public sealed partial class TermSuggesterDescriptor<TDocument> : SerializableDescriptor<TermSuggesterDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public sealed partial class FillMaskInferenceOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.TokenizationConfigContainer? Tokenization { get; set; }

public static implicit operator InferenceConfigCreateContainer(FillMaskInferenceOptions fillMaskInferenceOptions) => InferenceConfigCreateContainer.FillMask(fillMaskInferenceOptions);
}

public sealed partial class FillMaskInferenceOptionsDescriptor : SerializableDescriptor<FillMaskInferenceOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public sealed partial class FillMaskInferenceUpdateOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.NlpTokenizationUpdateOptions? Tokenization { get; set; }

public static implicit operator InferenceConfigUpdateContainer(FillMaskInferenceUpdateOptions fillMaskInferenceUpdateOptions) => InferenceConfigUpdateContainer.FillMask(fillMaskInferenceUpdateOptions);
}

public sealed partial class FillMaskInferenceUpdateOptionsDescriptor : SerializableDescriptor<FillMaskInferenceUpdateOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public sealed partial class NerInferenceOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.TokenizationConfigContainer? Tokenization { get; set; }

public static implicit operator InferenceConfigCreateContainer(NerInferenceOptions nerInferenceOptions) => InferenceConfigCreateContainer.Ner(nerInferenceOptions);
}

public sealed partial class NerInferenceOptionsDescriptor : SerializableDescriptor<NerInferenceOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public sealed partial class NerInferenceUpdateOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.NlpTokenizationUpdateOptions? Tokenization { get; set; }

public static implicit operator InferenceConfigUpdateContainer(NerInferenceUpdateOptions nerInferenceUpdateOptions) => InferenceConfigUpdateContainer.Ner(nerInferenceUpdateOptions);
}

public sealed partial class NerInferenceUpdateOptionsDescriptor : SerializableDescriptor<NerInferenceUpdateOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ public sealed partial class NlpRobertaTokenizationConfig
[JsonInclude]
[JsonPropertyName("with_special_tokens")]
public bool? WithSpecialTokens { get; set; }

public static implicit operator TokenizationConfigContainer(NlpRobertaTokenizationConfig nlpRobertaTokenizationConfig) => TokenizationConfigContainer.Roberta(nlpRobertaTokenizationConfig);
}

public sealed partial class NlpRobertaTokenizationConfigDescriptor : SerializableDescriptor<NlpRobertaTokenizationConfigDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public sealed partial class PassThroughInferenceOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.TokenizationConfigContainer? Tokenization { get; set; }

public static implicit operator InferenceConfigCreateContainer(PassThroughInferenceOptions passThroughInferenceOptions) => InferenceConfigCreateContainer.PassThrough(passThroughInferenceOptions);
}

public sealed partial class PassThroughInferenceOptionsDescriptor : SerializableDescriptor<PassThroughInferenceOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public sealed partial class PassThroughInferenceUpdateOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.NlpTokenizationUpdateOptions? Tokenization { get; set; }

public static implicit operator InferenceConfigUpdateContainer(PassThroughInferenceUpdateOptions passThroughInferenceUpdateOptions) => InferenceConfigUpdateContainer.PassThrough(passThroughInferenceUpdateOptions);
}

public sealed partial class PassThroughInferenceUpdateOptionsDescriptor : SerializableDescriptor<PassThroughInferenceUpdateOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public sealed partial class QuestionAnsweringInferenceOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.TokenizationConfigContainer? Tokenization { get; set; }

public static implicit operator InferenceConfigCreateContainer(QuestionAnsweringInferenceOptions questionAnsweringInferenceOptions) => InferenceConfigCreateContainer.QuestionAnswering(questionAnsweringInferenceOptions);
}

public sealed partial class QuestionAnsweringInferenceOptionsDescriptor : SerializableDescriptor<QuestionAnsweringInferenceOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ public sealed partial class QuestionAnsweringInferenceUpdateOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.NlpTokenizationUpdateOptions? Tokenization { get; set; }

public static implicit operator InferenceConfigUpdateContainer(QuestionAnsweringInferenceUpdateOptions questionAnsweringInferenceUpdateOptions) => InferenceConfigUpdateContainer.QuestionAnswering(questionAnsweringInferenceUpdateOptions);
}

public sealed partial class QuestionAnsweringInferenceUpdateOptionsDescriptor : SerializableDescriptor<QuestionAnsweringInferenceUpdateOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public sealed partial class TextClassificationInferenceOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.TokenizationConfigContainer? Tokenization { get; set; }

public static implicit operator InferenceConfigCreateContainer(TextClassificationInferenceOptions textClassificationInferenceOptions) => InferenceConfigCreateContainer.TextClassification(textClassificationInferenceOptions);
}

public sealed partial class TextClassificationInferenceOptionsDescriptor : SerializableDescriptor<TextClassificationInferenceOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public sealed partial class TextClassificationInferenceUpdateOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.NlpTokenizationUpdateOptions? Tokenization { get; set; }

public static implicit operator InferenceConfigUpdateContainer(TextClassificationInferenceUpdateOptions textClassificationInferenceUpdateOptions) => InferenceConfigUpdateContainer.TextClassification(textClassificationInferenceUpdateOptions);
}

public sealed partial class TextClassificationInferenceUpdateOptionsDescriptor : SerializableDescriptor<TextClassificationInferenceUpdateOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public sealed partial class TextEmbeddingInferenceOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.TokenizationConfigContainer? Tokenization { get; set; }

public static implicit operator InferenceConfigCreateContainer(TextEmbeddingInferenceOptions textEmbeddingInferenceOptions) => InferenceConfigCreateContainer.TextEmbedding(textEmbeddingInferenceOptions);
}

public sealed partial class TextEmbeddingInferenceOptionsDescriptor : SerializableDescriptor<TextEmbeddingInferenceOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public sealed partial class TextEmbeddingInferenceUpdateOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.NlpTokenizationUpdateOptions? Tokenization { get; set; }

public static implicit operator InferenceConfigUpdateContainer(TextEmbeddingInferenceUpdateOptions textEmbeddingInferenceUpdateOptions) => InferenceConfigUpdateContainer.TextEmbedding(textEmbeddingInferenceUpdateOptions);
}

public sealed partial class TextEmbeddingInferenceUpdateOptionsDescriptor : SerializableDescriptor<TextEmbeddingInferenceUpdateOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ public sealed partial class ZeroShotClassificationInferenceOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.TokenizationConfigContainer? Tokenization { get; set; }

public static implicit operator InferenceConfigCreateContainer(ZeroShotClassificationInferenceOptions zeroShotClassificationInferenceOptions) => InferenceConfigCreateContainer.ZeroShotClassification(zeroShotClassificationInferenceOptions);
}

public sealed partial class ZeroShotClassificationInferenceOptionsDescriptor : SerializableDescriptor<ZeroShotClassificationInferenceOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public sealed partial class ZeroShotClassificationInferenceUpdateOptions
[JsonInclude]
[JsonPropertyName("tokenization")]
public Elastic.Clients.Elasticsearch.Ml.NlpTokenizationUpdateOptions? Tokenization { get; set; }

public static implicit operator InferenceConfigUpdateContainer(ZeroShotClassificationInferenceUpdateOptions zeroShotClassificationInferenceUpdateOptions) => InferenceConfigUpdateContainer.ZeroShotClassification(zeroShotClassificationInferenceUpdateOptions);
}

public sealed partial class ZeroShotClassificationInferenceUpdateOptionsDescriptor : SerializableDescriptor<ZeroShotClassificationInferenceUpdateOptionsDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ public sealed partial class BoolQuery : Query
[JsonInclude]
[JsonPropertyName("should")]
public IList<Elastic.Clients.Elasticsearch.QueryDsl.QueryContainer>? Should { get; set; }

public static implicit operator QueryContainer(BoolQuery boolQuery) => QueryContainer.Bool(boolQuery);
}

public sealed partial class BoolQueryDescriptor<TDocument> : SerializableDescriptor<BoolQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ public sealed partial class BoostingQuery : Query
[JsonInclude]
[JsonPropertyName("positive")]
public Elastic.Clients.Elasticsearch.QueryDsl.QueryContainer Positive { get; set; }

public static implicit operator QueryContainer(BoostingQuery boostingQuery) => QueryContainer.Boosting(boostingQuery);
}

public sealed partial class BoostingQueryDescriptor<TDocument> : SerializableDescriptor<BoostingQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ public sealed partial class CombinedFieldsQuery : Query
[JsonInclude]
[JsonPropertyName("zero_terms_query")]
public Elastic.Clients.Elasticsearch.QueryDsl.CombinedFieldsZeroTerms? ZeroTermsQuery { get; set; }

public static implicit operator QueryContainer(CombinedFieldsQuery combinedFieldsQuery) => QueryContainer.CombinedFields(combinedFieldsQuery);
}

public sealed partial class CombinedFieldsQueryDescriptor<TDocument> : SerializableDescriptor<CombinedFieldsQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public sealed partial class ConstantScoreQuery : Query
[JsonInclude]
[JsonPropertyName("filter")]
public Elastic.Clients.Elasticsearch.QueryDsl.QueryContainer Filter { get; set; }

public static implicit operator QueryContainer(ConstantScoreQuery constantScoreQuery) => QueryContainer.ConstantScore(constantScoreQuery);
}

public sealed partial class ConstantScoreQueryDescriptor<TDocument> : SerializableDescriptor<ConstantScoreQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,8 @@ public DateRangeQuery(Field field)
public Elastic.Clients.Elasticsearch.DateMath? To { get; set; }

public Elastic.Clients.Elasticsearch.Field Field { get; set; }

public static implicit operator QueryContainer(DateRangeQuery dateRangeQuery) => QueryContainer.Range(new RangeQuery(dateRangeQuery));
}

public sealed partial class DateRangeQueryDescriptor<TDocument> : SerializableDescriptor<DateRangeQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public sealed partial class DisMaxQuery : Query
[JsonInclude]
[JsonPropertyName("tie_breaker")]
public double? TieBreaker { get; set; }

public static implicit operator QueryContainer(DisMaxQuery disMaxQuery) => QueryContainer.DisMax(disMaxQuery);
}

public sealed partial class DisMaxQueryDescriptor<TDocument> : SerializableDescriptor<DisMaxQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public sealed partial class ExistsQuery : Query
[JsonInclude]
[JsonPropertyName("field")]
public Elastic.Clients.Elasticsearch.Field Field { get; set; }

public static implicit operator QueryContainer(ExistsQuery existsQuery) => QueryContainer.Exists(existsQuery);
}

public sealed partial class ExistsQueryDescriptor<TDocument> : SerializableDescriptor<ExistsQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public sealed partial class FieldValueFactorScoreFunction
[JsonInclude]
[JsonPropertyName("modifier")]
public Elastic.Clients.Elasticsearch.QueryDsl.FieldValueFactorModifier? Modifier { get; set; }

public static implicit operator FunctionScoreContainer(FieldValueFactorScoreFunction fieldValueFactorScoreFunction) => FunctionScoreContainer.FieldValueFactor(fieldValueFactorScoreFunction);
}

public sealed partial class FieldValueFactorScoreFunctionDescriptor<TDocument> : SerializableDescriptor<FieldValueFactorScoreFunctionDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ public sealed partial class FunctionScoreQuery : Query
[JsonInclude]
[JsonPropertyName("score_mode")]
public Elastic.Clients.Elasticsearch.QueryDsl.FunctionScoreMode? ScoreMode { get; set; }

public static implicit operator QueryContainer(FunctionScoreQuery functionScoreQuery) => QueryContainer.FunctionScore(functionScoreQuery);
}

public sealed partial class FunctionScoreQueryDescriptor<TDocument> : SerializableDescriptor<FunctionScoreQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,8 @@ public FuzzyQuery(Field field)
public object Value { get; set; }

public Elastic.Clients.Elasticsearch.Field Field { get; set; }

public static implicit operator QueryContainer(FuzzyQuery fuzzyQuery) => QueryContainer.Fuzzy(fuzzyQuery);
}

public sealed partial class FuzzyQueryDescriptor<TDocument> : SerializableDescriptor<FuzzyQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ public sealed partial class HasChildQuery : Query
[JsonInclude]
[JsonPropertyName("type")]
public string Type { get; set; }

public static implicit operator QueryContainer(HasChildQuery hasChildQuery) => QueryContainer.HasChild(hasChildQuery);
}

public sealed partial class HasChildQueryDescriptor<TDocument> : SerializableDescriptor<HasChildQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ public sealed partial class HasParentQuery : Query
[JsonInclude]
[JsonPropertyName("score")]
public bool? Score { get; set; }

public static implicit operator QueryContainer(HasParentQuery hasParentQuery) => QueryContainer.HasParent(hasParentQuery);
}

public sealed partial class HasParentQueryDescriptor<TDocument> : SerializableDescriptor<HasParentQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public sealed partial class IdsQuery : Query
[JsonInclude]
[JsonPropertyName("values")]
public Elastic.Clients.Elasticsearch.Ids? Values { get; set; }

public static implicit operator QueryContainer(IdsQuery idsQuery) => QueryContainer.Ids(idsQuery);
}

public sealed partial class IdsQueryDescriptor : SerializableDescriptor<IdsQueryDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ internal IntervalsQuery(Field field, string variantName, object variant)
[JsonInclude]
[JsonPropertyName("field")]
public Elastic.Clients.Elasticsearch.Field Field { get; set; }

public static implicit operator QueryContainer(IntervalsQuery intervalsQuery) => QueryContainer.Intervals(intervalsQuery);
}

internal sealed class IntervalsQueryConverter : JsonConverter<IntervalsQuery>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public sealed partial class MatchAllQuery : Query
[JsonInclude]
[JsonPropertyName("boost")]
public float? Boost { get; set; }

public static implicit operator QueryContainer(MatchAllQuery matchAllQuery) => QueryContainer.MatchAll(matchAllQuery);
}

public sealed partial class MatchAllQueryDescriptor : SerializableDescriptor<MatchAllQueryDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,8 @@ public MatchBoolPrefixQuery(Field field)
public string Query { get; set; }

public Elastic.Clients.Elasticsearch.Field Field { get; set; }

public static implicit operator QueryContainer(MatchBoolPrefixQuery matchBoolPrefixQuery) => QueryContainer.MatchBoolPrefix(matchBoolPrefixQuery);
}

public sealed partial class MatchBoolPrefixQueryDescriptor<TDocument> : SerializableDescriptor<MatchBoolPrefixQueryDescriptor<TDocument>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public sealed partial class MatchNoneQuery : Query
[JsonInclude]
[JsonPropertyName("boost")]
public float? Boost { get; set; }

public static implicit operator QueryContainer(MatchNoneQuery matchNoneQuery) => QueryContainer.MatchNone(matchNoneQuery);
}

public sealed partial class MatchNoneQueryDescriptor : SerializableDescriptor<MatchNoneQueryDescriptor>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,8 @@ public MatchPhrasePrefixQuery(Field field)
public Elastic.Clients.Elasticsearch.QueryDsl.ZeroTermsQuery? ZeroTermsQuery { get; set; }

public Elastic.Clients.Elasticsearch.Field Field { get; set; }

public static implicit operator QueryContainer(MatchPhrasePrefixQuery matchPhrasePrefixQuery) => QueryContainer.MatchPhrasePrefix(matchPhrasePrefixQuery);
}

public sealed partial class MatchPhrasePrefixQueryDescriptor<TDocument> : SerializableDescriptor<MatchPhrasePrefixQueryDescriptor<TDocument>>
Expand Down
Loading