This is an automated email from the ASF dual-hosted git repository.

xtsong pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


    from ade583cf804 [FLINK-32870][network] Tiered storage supports reading 
multiple small buffers by reading and slicing one large buffer
     new 798a20a2c94 [FLINK-32978][flink-core] Deprecate 
RichFunction#open(Configuration parameters)
     new e9353319ad6 [FLINK-32978][flink-core] Migrate the usage of 
RichFunction#open(Configuration parameters) to RichFunction#open(OpenContext 
openContext)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../docs/dev/datastream/operators/asyncio.md       |  2 +-
 .../dev/datastream/operators/process_function.md   |  2 +-
 docs/content.zh/docs/dev/table/data_stream_api.md  |  2 +-
 docs/content.zh/docs/dev/table/sourcesSinks.md     |  2 +-
 docs/content.zh/docs/libs/state_processor_api.md   |  6 +--
 docs/content.zh/docs/try-flink/datastream.md       |  6 +--
 .../docs/dev/datastream/operators/asyncio.md       |  2 +-
 .../dev/datastream/operators/process_function.md   |  2 +-
 docs/content/docs/dev/table/data_stream_api.md     |  2 +-
 docs/content/docs/dev/table/sourcesSinks.md        |  2 +-
 docs/content/docs/libs/state_processor_api.md      |  6 +--
 docs/content/docs/try-flink/datastream.md          |  6 +--
 .../f7a4e6fa-e7de-48c9-a61e-c13e83f0c72e           |  8 +--
 .../source/reader/CoordinatedSourceITCase.java     |  4 +-
 .../batch/compact/BatchPartitionCommitterSink.java |  4 +-
 .../compact/BatchPartitionCommitterSinkTest.java   |  4 +-
 .../hive/factories/TestLockTableSinkFactory.java   |  4 +-
 .../mapred/HadoopMapFunction.java                  |  8 +--
 .../mapred/HadoopReduceCombineFunction.java        |  8 +--
 .../mapred/HadoopReduceFunction.java               |  8 +--
 .../flink/api/common/aggregators/Aggregator.java   |  2 +-
 .../api/common/functions/AbstractRichFunction.java |  4 +-
 .../api/common/functions/DefaultOpenContext.java   | 10 ++--
 .../flink/api/common/functions/OpenContext.java    | 12 ++---
 .../common/functions/RichAggregateFunction.java    |  3 +-
 .../api/common/functions/RichCoGroupFunction.java  |  3 +-
 .../api/common/functions/RichCrossFunction.java    |  3 +-
 .../api/common/functions/RichFilterFunction.java   |  3 +-
 .../api/common/functions/RichFlatJoinFunction.java |  3 +-
 .../api/common/functions/RichFlatMapFunction.java  |  3 +-
 .../flink/api/common/functions/RichFunction.java   | 55 +++++++++++++++++++
 .../common/functions/RichGroupCombineFunction.java |  3 +-
 .../common/functions/RichGroupReduceFunction.java  |  3 +-
 .../api/common/functions/RichJoinFunction.java     |  3 +-
 .../api/common/functions/RichMapFunction.java      |  3 +-
 .../common/functions/RichMapPartitionFunction.java |  3 +-
 .../api/common/functions/RichReduceFunction.java   |  3 +-
 .../api/common/functions/util/FunctionUtils.java   |  6 +--
 .../common/operators/base/BulkIterationBase.java   |  4 +-
 .../common/operators/base/CoGroupOperatorBase.java |  3 +-
 .../operators/base/CoGroupRawOperatorBase.java     |  3 +-
 .../common/operators/base/CrossOperatorBase.java   |  3 +-
 .../common/operators/base/FilterOperatorBase.java  |  3 +-
 .../common/operators/base/FlatMapOperatorBase.java |  3 +-
 .../operators/base/GroupCombineOperatorBase.java   |  3 +-
 .../operators/base/GroupReduceOperatorBase.java    |  3 +-
 .../operators/base/InnerJoinOperatorBase.java      |  3 +-
 .../api/common/operators/base/MapOperatorBase.java |  3 +-
 .../operators/base/MapPartitionOperatorBase.java   |  3 +-
 .../operators/base/OuterJoinOperatorBase.java      |  3 +-
 .../common/operators/base/ReduceOperatorBase.java  |  3 +-
 .../base/FlatMapOperatorCollectionTest.java        |  4 +-
 .../operators/base/InnerJoinOperatorBaseTest.java  |  4 +-
 .../api/common/operators/base/MapOperatorTest.java |  4 +-
 .../operators/base/OuterJoinOperatorBaseTest.java  |  4 +-
 .../operators/base/PartitionMapOperatorTest.java   |  4 +-
 .../api/java/typeutils/TypeExtractorTest.java      |  4 +-
 .../tests/BlockingIncrementingMapFunction.java     |  4 +-
 .../streaming/tests/SemanticsCheckMapper.java      |  4 +-
 .../streaming/tests/SlidingWindowCheckMapper.java  |  4 +-
 .../NettyShuffleMemoryControlTestProgram.java      |  4 +-
 .../tests/queryablestate/QsStateProducer.java      |  8 +--
 .../RocksDBStateMemoryControlTestProgram.java      |  8 +--
 .../apache/flink/test/StatefulStreamingJob.java    |  6 +--
 .../flink/examples/java/clustering/KMeans.java     |  4 +-
 .../apache/flink/examples/java/distcp/DistCp.java  |  4 +-
 .../relational/EmptyFieldsCountAccumulator.java    |  6 +--
 .../streaming/examples/async/AsyncIOExample.java   |  4 +-
 .../streaming/examples/gpu/MatrixVectorMul.java    |  4 +-
 .../examples/statemachine/StateMachineExample.java |  4 +-
 .../protobuf/table/TestProtobufSinkFunction.java   |  6 +--
 .../protobuf/table/TestProtobufSourceFunction.java |  6 +--
 .../hdfstests/ContinuousFileProcessingITCase.java  |  4 +-
 .../hdfstests/ContinuousFileProcessingTest.java    | 12 ++---
 .../api/java/operators/AggregateOperator.java      |  4 +-
 .../flink/api/java/operators/UdfOperator.java      |  5 +-
 .../RichCombineToGroupCombineWrapper.java          |  6 +--
 .../operators/translation/WrappingFunction.java    |  6 +--
 .../apache/flink/api/java/utils/DataSetUtils.java  | 10 ++--
 .../CollectionExecutionAccumulatorsTest.java       |  4 +-
 ...llectionExecutionWithBroadcastVariableTest.java |  6 +--
 .../base/CoGroupOperatorCollectionTest.java        |  4 +-
 .../operators/base/GroupReduceOperatorTest.java    |  4 +-
 .../common/operators/base/ReduceOperatorTest.java  |  4 +-
 ...HighAvailabilityRecoverFromSavepointITCase.java |  5 +-
 ...ernStreamScalaJavaAPIInteroperabilityTest.scala |  4 +-
 .../flink/cep/RichPatternFlatSelectFunction.java   |  4 +-
 .../flink/cep/RichPatternSelectFunction.java       |  4 +-
 .../adaptors/PatternFlatSelectAdapter.java         |  6 +--
 .../functions/adaptors/PatternSelectAdapter.java   |  6 +--
 .../adaptors/PatternTimeoutFlatSelectAdapter.java  |  8 +--
 .../adaptors/PatternTimeoutSelectAdapter.java      |  8 +--
 .../main/java/org/apache/flink/cep/nfa/NFA.java    |  3 +-
 .../RichCompositeIterativeCondition.java           |  8 +--
 .../pattern/conditions/RichIterativeCondition.java | 12 +++--
 .../test/java/org/apache/flink/cep/CEPITCase.java  |  5 +-
 .../flink/cep/operator/CepRuntimeContextTest.java  |  5 +-
 .../api/functions/KeyedStateBootstrapFunction.java |  4 +-
 .../api/functions/KeyedStateReaderFunction.java    |  3 +-
 .../api/input/operator/StateReaderOperator.java    |  4 +-
 .../window/EvictingWindowReaderFunction.java       |  6 +--
 .../output/BoundedOneInputStreamTaskRunner.java    |  6 +--
 .../api/output/OperatorSubtaskStateReducer.java    |  6 +--
 .../api/DataSetSavepointReaderITTestBase.java      |  4 +-
 .../DataSetSavepointReaderKeyedStateITCase.java    | 11 +++-
 .../flink/state/api/SavepointDeepCopyTest.java     | 11 +++-
 .../flink/state/api/SavepointReaderITTestBase.java |  4 +-
 .../state/api/SavepointReaderKeyedStateITCase.java | 11 +++-
 .../flink/state/api/SavepointWriterITCase.java     | 12 ++---
 .../api/SavepointWriterUidModificationITCase.java  |  6 +--
 .../flink/state/api/WritableSavepointITCase.java   | 12 ++---
 .../state/api/input/KeyedStateInputFormatTest.java | 37 ++++++++++---
 .../output/KeyedStateBootstrapOperatorTest.java    |  6 +--
 .../flink/state/api/utils/WaitingSource.java       |  7 +--
 .../flink/python/util/PythonConnectorUtils.java    |  6 +--
 .../runtime/arrow/sources/ArrowSourceFunction.java |  4 +-
 .../util/PartitionCustomTestMapFunction.java       |  4 +-
 .../table/utils/TestCollectionTableFactory.java    |  4 +-
 .../itcases/AbstractQueryableStateTestBase.java    | 18 +++----
 .../apache/flink/runtime/operators/BatchTask.java  |  8 +--
 .../operators/sort/CombiningSpillingBehaviour.java |  3 +-
 .../sort/CombiningExternalSorterITCase.java        |  6 +--
 .../runtime/operators/sort/ExternalSorterTest.java |  4 +-
 .../testutils/BinaryOperatorTestBase.java          |  3 +-
 .../operators/testutils/DriverTestBase.java        |  3 +-
 .../operators/testutils/UnaryOperatorTestBase.java |  3 +-
 .../scala/operators/ScalaAggregateOperator.java    |  4 +-
 .../RocksIncrementalCheckpointRescalingTest.java   |  6 +--
 .../streaming/api/checkpoint/ListCheckpointed.java |  4 +-
 .../api/functions/KeyedProcessFunction.java        |  5 +-
 .../streaming/api/functions/ProcessFunction.java   |  5 +-
 .../api/functions/async/RichAsyncFunction.java     |  4 +-
 .../functions/sink/OutputFormatSinkFunction.java   |  5 +-
 .../api/functions/sink/PrintSinkFunction.java      |  6 +--
 .../api/functions/sink/SocketClientSink.java       |  6 +--
 .../source/ContinuousFileMonitoringFunction.java   |  7 +--
 .../source/FromSplittableIteratorFunction.java     |  4 +-
 .../source/InputFormatSourceFunction.java          |  5 +-
 .../MultipleIdsMessageAcknowledgingSourceBase.java |  6 +--
 .../source/RichParallelSourceFunction.java         |  5 +-
 .../api/functions/source/RichSourceFunction.java   |  5 +-
 .../source/datagen/DataGeneratorSource.java        |  6 +--
 .../ReduceApplyProcessAllWindowFunction.java       |  6 +--
 .../ReduceApplyProcessWindowFunction.java          |  6 +--
 .../functions/windowing/RichWindowFunction.java    |  4 +-
 .../api/operators/AbstractUdfStreamOperator.java   |  3 +-
 .../api/operators/collect/CollectSinkFunction.java |  4 +-
 .../flink/streaming/experimental/CollectSink.java  |  6 +--
 .../InternalAggregateProcessAllWindowFunction.java |  6 +--
 .../InternalIterableProcessAllWindowFunction.java  |  6 +--
 ...nternalSingleValueProcessAllWindowFunction.java |  6 +--
 .../api/functions/PrintSinkFunctionTest.java       | 12 ++---
 .../api/functions/sink/SocketClientSinkTest.java   | 10 ++--
 .../source/InputFormatSourceFunctionTest.java      |  3 +-
 .../AbstractUdfStreamOperatorLifecycleTest.java    |  7 +--
 .../streaming/api/operators/StreamFilterTest.java  |  6 +--
 .../streaming/api/operators/StreamFlatMapTest.java |  6 +--
 .../operators/StreamGroupedReduceOperatorTest.java |  6 +--
 .../streaming/api/operators/StreamMapTest.java     |  6 +--
 .../api/operators/async/AsyncWaitOperatorTest.java | 12 ++---
 .../api/operators/co/CoStreamFlatMapTest.java      |  6 +--
 .../api/operators/co/CoStreamMapTest.java          |  6 +--
 .../utils/CollectSinkFunctionTestWrapper.java      |  6 +--
 .../functions/InternalWindowFunctionTest.java      | 63 +++++++++++-----------
 .../windowing/EvictingWindowOperatorTest.java      |  6 +--
 .../windowing/WindowOperatorMigrationTest.java     |  6 +--
 .../operators/windowing/WindowOperatorTest.java    |  6 +--
 .../runtime/tasks/OneInputStreamTaskTest.java      |  5 +-
 .../runtime/tasks/SourceStreamTaskTest.java        |  8 +--
 .../streaming/runtime/tasks/StreamTaskTest.java    |  3 +-
 .../runtime/tasks/TwoInputStreamTaskTest.java      |  6 +--
 .../flink/streaming/util/SourceFunctionUtil.java   |  4 +-
 .../async/ScalaRichAsyncFunctionWrapper.scala      |  6 +--
 .../util/ScalaProcessWindowFunctionWrapper.scala   | 14 ++---
 .../api/scala/AsyncDataStreamITCase.scala          |  7 +--
 .../CheckingIdentityRichAllWindowFunction.scala    |  6 +--
 ...ckingIdentityRichProcessAllWindowFunction.scala |  6 +--
 ...CheckingIdentityRichProcessWindowFunction.scala |  6 +--
 .../CheckingIdentityRichWindowFunction.scala       |  6 +--
 .../print/table/PrintTableSinkFactory.java         |  6 +--
 .../table/planner/codegen/ExpressionReducer.scala  |  2 +-
 .../table/planner/codegen/MatchCodeGenerator.scala |  4 +-
 .../table/planner/plan/utils/PartitionPruner.scala |  4 +-
 .../factories/TestSupportsStagingTableFactory.java |  6 +--
 .../factories/TestUpdateDeleteTableFactory.java    |  6 +--
 .../runtime/stream/sql/DataStreamJavaITCase.java   |  3 +-
 .../codegen/WatermarkGeneratorCodeGenTest.scala    |  3 +-
 .../utils/TestCollectionTableFactory.scala         |  3 +-
 .../batch/sql/PartitionableSinkITCase.scala        |  3 +-
 .../functions/DefaultExpressionEvaluator.java      |  4 +-
 .../GeneratedWatermarkGeneratorSupplier.java       |  4 +-
 .../operators/aggregate/GroupAggFunction.java      |  6 +--
 .../operators/aggregate/GroupTableAggFunction.java |  6 +--
 .../deduplicate/DeduplicateFunctionBase.java       |  6 +--
 .../ProcTimeDeduplicateKeepLastRowFunction.java    |  6 +--
 .../runtime/operators/join/HashJoinOperator.java   |  4 +-
 .../operators/join/SortMergeJoinFunction.java      |  4 +-
 .../join/interval/IntervalJoinFunction.java        |  6 +--
 .../operators/join/interval/TimeIntervalJoin.java  |  7 +--
 .../join/lookup/AsyncLookupJoinRunner.java         | 14 ++---
 .../join/lookup/AsyncLookupJoinWithCalcRunner.java |  8 +--
 .../join/lookup/KeyedLookupJoinWrapper.java        |  9 ++--
 .../operators/join/lookup/LookupJoinRunner.java    | 12 ++---
 .../join/lookup/LookupJoinWithCalcRunner.java      |  8 +--
 .../join/stream/AbstractStreamingJoinOperator.java |  4 +-
 .../temporal/TemporalProcessTimeJoinOperator.java  |  4 +-
 .../join/temporal/TemporalRowTimeJoinOperator.java |  4 +-
 .../operators/join/window/WindowJoinOperator.java  |  4 +-
 .../operators/match/IterativeConditionRunner.java  |  6 +--
 .../match/PatternProcessFunctionRunner.java        |  6 +--
 .../AbstractRowTimeUnboundedPrecedingOver.java     |  4 +-
 .../ProcTimeRangeBoundedPrecedingFunction.java     |  4 +-
 .../over/ProcTimeRowsBoundedPrecedingFunction.java |  4 +-
 .../over/ProcTimeUnboundedPrecedingFunction.java   |  4 +-
 .../over/RowTimeRangeBoundedPrecedingFunction.java |  4 +-
 .../over/RowTimeRowsBoundedPrecedingFunction.java  |  4 +-
 .../operators/rank/AbstractTopNFunction.java       |  6 +--
 .../operators/rank/AppendOnlyFirstNFunction.java   |  6 +--
 .../operators/rank/AppendOnlyTopNFunction.java     |  6 +--
 .../runtime/operators/rank/FastTop1Function.java   |  6 +--
 .../operators/rank/RetractableTopNFunction.java    |  6 +--
 .../operators/rank/UpdatableTopNFunction.java      |  6 +--
 .../wmassigners/WatermarkAssignerOperator.java     |  4 +-
 .../operators/join/AsyncLookupJoinHarnessTest.java | 11 ++--
 .../operators/join/KeyedLookupJoinHarnessTest.java |  4 +-
 .../wmassigners/WatermarkAssignerOperatorTest.java |  6 +--
 .../streaming/runtime/util/TestListResultSink.java |  6 +--
 .../state/benchmark/RescalingBenchmarkTest.java    |  6 +--
 .../operators/lifecycle/graph/TestEventSource.java |  6 +--
 .../test/accumulators/AccumulatorErrorITCase.java  |  9 ++--
 .../flink/test/accumulators/AccumulatorITCase.java |  6 +--
 .../accumulators/AccumulatorIterativeITCase.java   |  4 +-
 .../test/accumulators/AccumulatorLiveITCase.java   |  3 +-
 .../broadcastvars/BroadcastBranchingITCase.java    |  4 +-
 .../test/broadcastvars/BroadcastUnionITCase.java   |  4 +-
 .../BroadcastVarInitializationITCase.java          |  4 +-
 .../flink/test/cancelling/JoinCancelingITCase.java |  4 +-
 .../flink/test/cancelling/MapCancelingITCase.java  |  4 +-
 .../ApproximateLocalRecoveryDownstreamITCase.java  |  3 +-
 .../checkpointing/ChangelogRecoveryITCaseBase.java |  3 +-
 .../CheckpointAfterAllTasksFinishedITCase.java     |  5 +-
 .../checkpointing/CoStreamCheckpointingITCase.java |  4 +-
 .../ContinuousFileProcessingCheckpointITCase.java  |  4 +-
 .../EventTimeAllWindowCheckpointingITCase.java     |  9 ++--
 .../EventTimeWindowCheckpointingITCase.java        | 11 ++--
 .../KeyedStateCheckpointingITCase.java             |  5 +-
 .../test/checkpointing/ManualCheckpointITCase.java |  4 +-
 .../ProcessingTimeWindowCheckpointingITCase.java   |  5 +-
 .../test/checkpointing/RegionFailoverITCase.java   |  5 +-
 .../test/checkpointing/SavepointFormatITCase.java  |  3 +-
 .../flink/test/checkpointing/SavepointITCase.java  |  7 +--
 .../checkpointing/StateCheckpointedITCase.java     |  4 +-
 .../StatefulJobSnapshotMigrationITCase.java        |  6 +--
 .../StatefulJobWBroadcastStateMigrationITCase.java | 18 +++----
 .../StreamCheckpointNotifierITCase.java            |  4 +-
 .../checkpointing/StreamCheckpointingITCase.java   |  6 +--
 .../UdfStreamOperatorCheckpointingITCase.java      |  4 +-
 .../checkpointing/UnalignedCheckpointITCase.java   |  6 +--
 .../UnalignedCheckpointRescaleITCase.java          |  8 +--
 .../checkpointing/UnalignedCheckpointTestBase.java |  5 +-
 .../utils/AccumulatingIntegerSink.java             |  6 +--
 .../utils/CancellingIntegerSource.java             |  6 +--
 .../test/checkpointing/utils/FailingSource.java    |  4 +-
 .../checkpointing/utils/MigrationTestUtils.java    |  6 +--
 .../test/checkpointing/utils/ValidatingSink.java   |  4 +-
 .../jar/CheckpointingCustomKvStateProgram.java     |  4 +-
 .../classloading/jar/CustomKvStateProgram.java     |  4 +-
 .../flink/test/classloading/jar/KMeansForTest.java |  4 +-
 .../distributedcache/DistributedCacheTest.java     |  4 +-
 .../BulkIterationWithAllReducerITCase.java         |  4 +-
 .../test/iterative/DanglingPageRankITCase.java     |  5 +-
 .../aggregators/AggregatorConvergenceITCase.java   |  6 +--
 .../iterative/aggregators/AggregatorsITCase.java   | 16 +++---
 .../flink/test/misc/MiscellaneousIssuesITCase.java |  4 +-
 .../apache/flink/test/operators/CoGroupITCase.java |  4 +-
 .../apache/flink/test/operators/CrossITCase.java   |  4 +-
 .../apache/flink/test/operators/FilterITCase.java  |  6 +--
 .../apache/flink/test/operators/FlatMapITCase.java |  4 +-
 .../flink/test/operators/GroupReduceITCase.java    |  3 +-
 .../apache/flink/test/operators/JoinITCase.java    |  4 +-
 .../org/apache/flink/test/operators/MapITCase.java |  9 +---
 .../flink/test/operators/OuterJoinITCase.java      |  4 +-
 .../apache/flink/test/operators/ReduceITCase.java  |  4 +-
 .../optimizer/examples/KMeansSingleStepTest.java   |  4 +-
 .../flink/test/recovery/FastFailuresITCase.java    |  4 +-
 ...nagerProcessFailureStreamingRecoveryITCase.java |  3 +-
 .../flink/test/runtime/BatchShuffleITCaseBase.java |  3 +-
 .../flink/test/scheduling/ReactiveModeITCase.java  |  3 +-
 .../TaskManagerWideRocksDbMemorySharingITCase.java |  5 +-
 .../state/operator/restore/keyed/KeyedJob.java     |  3 +-
 .../streaming/api/StreamingOperatorsITCase.java    |  6 +--
 .../api/datastream/GetOperatorUniqueIDTest.java    |  6 +--
 .../ReinterpretDataStreamAsKeyedStreamITCase.java  | 14 ++---
 .../streaming/runtime/BroadcastStateITCase.java    | 10 ++--
 .../runtime/ChainedRuntimeContextITCase.java       |  6 +--
 .../streaming/runtime/GlobalAggregateITCase.java   |  6 +--
 .../test/streaming/runtime/PartitionerITCase.java  |  6 +--
 .../runtime/SortingBoundedInputITCase.java         |  5 +-
 .../test/streaming/runtime/StateBackendITCase.java |  6 +--
 .../runtime/StreamTaskSelectiveReadingITCase.java  |  4 +-
 .../runtime/util/ReceiveCheckNoOpSink.java         |  4 +-
 .../StatefulJobSavepointMigrationITCase.scala      |  8 +--
 ...StatefulJobWBroadcastStateMigrationITCase.scala |  8 +--
 .../flink/api/scala/operators/CoGroupITCase.scala  |  4 +-
 .../flink/api/scala/operators/CrossITCase.scala    |  4 +-
 .../flink/api/scala/operators/FilterITCase.scala   |  4 +-
 .../flink/api/scala/operators/FlatMapITCase.scala  |  4 +-
 .../api/scala/operators/GroupReduceITCase.scala    |  2 +-
 .../flink/api/scala/operators/JoinITCase.scala     |  4 +-
 .../flink/api/scala/operators/MapITCase.scala      | 31 +----------
 .../api/scala/operators/OuterJoinITCase.scala      |  6 +--
 .../flink/api/scala/operators/ReduceITCase.scala   |  4 +-
 .../flink/yarn/testjob/YarnTestArchiveJob.java     |  3 +-
 .../flink/yarn/testjob/YarnTestCacheJob.java       |  4 +-
 314 files changed, 987 insertions(+), 852 deletions(-)
 copy 
flink-connectors/flink-connector-base/src/main/java/org/apache/flink/connector/base/sink/writer/strategy/ResultInfo.java
 => 
flink-core/src/main/java/org/apache/flink/api/common/functions/DefaultOpenContext.java
 (78%)
 copy 
flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/TwoInputStreamOperatorFactory.java
 => 
flink-core/src/main/java/org/apache/flink/api/common/functions/OpenContext.java 
(71%)

Reply via email to