From a32a521a80813595ff60d939c004be190998accd Mon Sep 17 00:00:00 2001 From: Junbo Liang <68558268+junbo75@users.noreply.github.com> Date: Tue, 20 Jul 2021 13:39:54 -0700 Subject: [PATCH] Update automation tests for the AWS gems to reduce the run time (#2148) Simplify the automation tests to reduce the time they cost on Jenkins --- .../aws_metrics_automation_test.py | 213 +- .../aws_metrics/aws_metrics_custom_thread.py | 29 + .../Windows/aws_metrics/aws_metrics_utils.py | 6 +- .../PythonTests/AWS/Windows/cdk/cdk_utils.py | 56 +- ....py => aws_client_auth_automation_test.py} | 50 +- .../client_auth/test_anonymous_credentials.py | 77 - .../core/test_aws_resource_interaction.py | 188 +- .../resource_mappings/resource_mappings.py | 36 - .../Gem/PythonTests/AWS/conftest.py | 65 +- .../Levels/AWS/ClientAuth/ClientAuth.ly | 4 +- .../ConitoAnonymousAuthorization.scriptcanvas | 2020 ++-- .../AWS/ClientAuth/LevelData/Environment.xml | 1 - .../AWS/ClientAuth/LevelData/TimeOfDay.xml | 1 - .../Levels/AWS/ClientAuth/filelist.xml | 2 +- .../Levels/AWS/ClientAuth/level.pak | 4 +- .../ClientAuthPasswordSignIn.ly | 4 +- .../PasswordSignIn.scriptcanvas | 8462 ++++++++--------- .../AWS/ClientAuthPasswordSignIn/filelist.xml | 2 +- .../AWS/ClientAuthPasswordSignIn/level.pak | 4 +- .../ClientAuthPasswordSignUp.ly | 4 +- .../PasswordSignUp.scriptcanvas | 3100 +++--- .../AWS/ClientAuthPasswordSignUp/filelist.xml | 2 +- .../AWS/ClientAuthPasswordSignUp/level.pak | 4 +- .../Levels/AWS/Metrics/Script/Metrics.lua | 10 +- .../ScriptCanvas/dynamodbdemo.scriptcanvas | 3755 ++++---- .../ScriptCanvas/lambdademo.scriptcanvas | 2167 +++-- .../ScriptCanvas/s3demo.scriptcanvas | 6141 ++++++------ 27 files changed, 13115 insertions(+), 13292 deletions(-) create mode 100644 AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_custom_thread.py rename AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/{test_password_signin.py => aws_client_auth_automation_test.py} (65%) delete mode 100644 AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/test_anonymous_credentials.py delete mode 100644 AutomatedTesting/Levels/AWS/ClientAuth/LevelData/Environment.xml delete mode 100644 AutomatedTesting/Levels/AWS/ClientAuth/LevelData/TimeOfDay.xml diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py index cc864a095e..cd8858e7f2 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py @@ -8,58 +8,43 @@ SPDX-License-Identifier: Apache-2.0 OR MIT import logging import os import pytest -import time import typing from datetime import datetime import ly_test_tools.log.log_monitor # fixture imports -from AWS.Windows.resource_mappings.resource_mappings import resource_mappings from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor from .aws_metrics_utils import aws_metrics_utils +from .aws_metrics_custom_thread import AWSMetricsThread AWS_METRICS_FEATURE_NAME = 'AWSMetrics' GAME_LOG_NAME = 'Game.log' +CONTEXT_VARIABLE = ['-c', 'batch_processing=true'] logger = logging.getLogger(__name__) -def setup(launcher: ly_test_tools.launchers.Launcher, - cdk: pytest.fixture, - asset_processor: asset_processor, - resource_mappings: resource_mappings, - context_variable: str = '') -> typing.Tuple[ly_test_tools.log.log_monitor.LogMonitor, str, str]: +def setup(launcher: pytest.fixture, + asset_processor: pytest.fixture) -> pytest.fixture: """ - Set up the CDK application and start the log monitor. + Set up the resource mapping configuration and start the log monitor. :param launcher: Client launcher for running the test level. - :param cdk: CDK application for deploying the AWS resources. :param asset_processor: asset_processor fixture. - :param resource_mappings: resource_mappings fixture. - :param context_variable: context_variable for enable optional CDK feature. :return log monitor object, metrics file path and the metrics stack name. """ - logger.info(f'Cdk stack names:\n{cdk.list()}') - stacks = cdk.deploy(context_variable=context_variable) - resource_mappings.populate_output_keys(stacks) - asset_processor.start() asset_processor.wait_for_idle() - metrics_file_path = os.path.join(launcher.workspace.paths.project(), 'user', - AWS_METRICS_FEATURE_NAME, 'metrics.json') - remove_file(metrics_file_path) - file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), GAME_LOG_NAME) - remove_file(file_to_monitor) # Initialize the log monitor. log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor) - return log_monitor, metrics_file_path, stacks[0] + return log_monitor -def monitor_metrics_submission(log_monitor: ly_test_tools.log.log_monitor.LogMonitor) -> None: +def monitor_metrics_submission(log_monitor: pytest.fixture) -> None: """ Monitor the messages and notifications for submitting metrics. :param log_monitor: Log monitor to check the log messages. @@ -67,6 +52,7 @@ def monitor_metrics_submission(log_monitor: ly_test_tools.log.log_monitor.LogMon expected_lines = [ '(Script) - Submitted metrics without buffer.', '(Script) - Submitted metrics with buffer.', + '(Script) - Flushed the buffered metrics.', '(Script) - Metrics is sent successfully.' ] @@ -87,87 +73,132 @@ def monitor_metrics_submission(log_monitor: ly_test_tools.log.log_monitor.LogMon f'unexpected_lines values: {unexpected_lines}') -def remove_file(file_path: str) -> None: +def query_metrics_from_s3(aws_metrics_utils: pytest.fixture, stack_name: str) -> None: """ - Remove a local file and its directory. - :param file_path: Path to the local file. + Verify that the metrics events are delivered to the S3 bucket and can be queried. + aws_metrics_utils: aws_metrics_utils fixture. + stack_name: name of the CloudFormation stack. """ - if os.path.exists(file_path): - os.remove(file_path) + analytics_bucket_name = aws_metrics_utils.get_analytics_bucket_name(stack_name) + aws_metrics_utils.verify_s3_delivery(analytics_bucket_name) + logger.info('Metrics are sent to S3.') - file_dir = os.path.dirname(file_path) - if os.path.exists(file_dir) and len(os.listdir(file_dir)) == 0: - os.rmdir(file_dir) + aws_metrics_utils.run_glue_crawler(f'{stack_name}-EventsCrawler') + aws_metrics_utils.run_named_queries(f'{stack_name}-AthenaWorkGroup') + logger.info('Query metrics from S3 successfully.') + # Empty the S3 bucket. S3 buckets can only be deleted successfully when it doesn't contain any object. + aws_metrics_utils.empty_batch_analytics_bucket(analytics_bucket_name) + + +def verify_operational_metrics(aws_metrics_utils: pytest.fixture, stack_name: str, start_time: datetime) -> None: + """ + Verify that operational health metrics are delivered to CloudWatch. + aws_metrics_utils: aws_metrics_utils fixture. + stack_name: name of the CloudFormation stack. + start_time: Time when the game launcher starts. + """ + aws_metrics_utils.verify_cloud_watch_delivery( + 'AWS/Lambda', + 'Invocations', + [{'Name': 'FunctionName', + 'Value': f'{stack_name}-AnalyticsProcessingLambdaName'}], + start_time) + logger.info('AnalyticsProcessingLambda metrics are sent to CloudWatch.') + + aws_metrics_utils.verify_cloud_watch_delivery( + 'AWS/Lambda', + 'Invocations', + [{'Name': 'FunctionName', + 'Value': f'{stack_name}-EventsProcessingLambda'}], + start_time) + logger.info('EventsProcessingLambda metrics are sent to CloudWatch.') + + +def start_kinesis_analytics_application(aws_metrics_utils: pytest.fixture, stack_name: str) -> None: + """ + Start the Kinesis analytics application for real-time analytics. + aws_metrics_utils: aws_metrics_utils fixture. + stack_name: name of the CloudFormation stack. + """ + analytics_application_name = f'{stack_name}-AnalyticsApplication' + aws_metrics_utils.start_kinesis_data_analytics_application(analytics_application_name) @pytest.mark.SUITE_periodic @pytest.mark.usefixtures('automatic_process_killer') @pytest.mark.parametrize('project', ['AutomatedTesting']) @pytest.mark.parametrize('level', ['AWS/Metrics']) @pytest.mark.parametrize('feature_name', [AWS_METRICS_FEATURE_NAME]) +@pytest.mark.usefixtures('resource_mappings') @pytest.mark.parametrize('resource_mappings_filename', ['default_aws_resource_mappings.json']) +@pytest.mark.usefixtures('aws_credentials') @pytest.mark.parametrize('profile_name', ['AWSAutomationTest']) @pytest.mark.parametrize('region_name', ['us-west-2']) @pytest.mark.parametrize('assume_role_arn', ['arn:aws:iam::645075835648:role/o3de-automation-tests']) +@pytest.mark.usefixtures('cdk') @pytest.mark.parametrize('session_name', ['o3de-Automation-session']) +@pytest.mark.parametrize('deployment_params', [CONTEXT_VARIABLE]) class TestAWSMetricsWindows(object): - def test_realtime_analytics_metrics_sent_to_cloudwatch(self, - level: str, - launcher: ly_test_tools.launchers.Launcher, - asset_processor: pytest.fixture, - workspace: pytest.fixture, - aws_utils: pytest.fixture, - aws_credentials: pytest.fixture, - resource_mappings: pytest.fixture, - cdk: pytest.fixture, - aws_metrics_utils: aws_metrics_utils, - ): - """ - Tests that the submitted metrics are sent to CloudWatch for real-time analytics. - """ - log_monitor, metrics_file_path, stack_name = setup(launcher, cdk, asset_processor, resource_mappings) + """ + Test class to verify the real-time and batch analytics for metrics. + """ - # Start the Kinesis Data Analytics application for real-time analytics. - analytics_application_name = f'{stack_name}-AnalyticsApplication' - aws_metrics_utils.start_kinesis_data_analytics_application(analytics_application_name) + @pytest.mark.parametrize('destroy_stacks_on_teardown', [False]) + def test_realtime_and_batch_analytics(self, + level: str, + launcher: pytest.fixture, + asset_processor: pytest.fixture, + workspace: pytest.fixture, + aws_utils: pytest.fixture, + cdk: pytest.fixture, + aws_metrics_utils: pytest.fixture): + """ + Verify that the metrics events are sent to CloudWatch and S3 for analytics. + """ + # Start Kinesis analytics application on a separate thread to avoid blocking the test. + kinesis_analytics_application_thread = AWSMetricsThread(target=start_kinesis_analytics_application, + args=(aws_metrics_utils, cdk.stacks[0])) + kinesis_analytics_application_thread.start() + log_monitor = setup(launcher, asset_processor) + # Kinesis analytics application needs to be in the running state before we start the game launcher. + kinesis_analytics_application_thread.join() launcher.args = ['+LoadLevel', level] launcher.args.extend(['-rhi=null']) - + start_time = datetime.utcnow() with launcher.start(launch_ap=False): - start_time = datetime.utcnow() monitor_metrics_submission(log_monitor) - # Verify that operational health metrics are delivered to CloudWatch. - aws_metrics_utils.verify_cloud_watch_delivery( - 'AWS/Lambda', - 'Invocations', - [{'Name': 'FunctionName', - 'Value': f'{stack_name}-AnalyticsProcessingLambdaName'}], - start_time) - logger.info('Operational health metrics sent to CloudWatch.') + # Verify that real-time analytics metrics are delivered to CloudWatch. aws_metrics_utils.verify_cloud_watch_delivery( AWS_METRICS_FEATURE_NAME, 'TotalLogins', [], start_time) - logger.info('Real-time metrics sent to CloudWatch.') + logger.info('Real-time metrics are sent to CloudWatch.') - # Stop the Kinesis Data Analytics application. - aws_metrics_utils.stop_kinesis_data_analytics_application(analytics_application_name) + # Run time-consuming verifications on separate threads to avoid blocking the test. + verification_threads = list() + verification_threads.append( + AWSMetricsThread(target=query_metrics_from_s3, args=(aws_metrics_utils, cdk.stacks[0]))) + verification_threads.append( + AWSMetricsThread(target=verify_operational_metrics, args=(aws_metrics_utils, cdk.stacks[0], start_time))) + for thread in verification_threads: + thread.start() + for thread in verification_threads: + thread.join() + @pytest.mark.parametrize('destroy_stacks_on_teardown', [True]) def test_unauthorized_user_request_rejected(self, level: str, - launcher: ly_test_tools.launchers.Launcher, - cdk: pytest.fixture, - aws_credentials: pytest.fixture, + launcher: pytest.fixture, asset_processor: pytest.fixture, - resource_mappings: pytest.fixture, workspace: pytest.fixture): """ - Tests that unauthorized users cannot send metrics events to the AWS backed backend. + Verify that unauthorized users cannot send metrics events to the AWS backed backend. """ - log_monitor, metrics_file_path, stack_name = setup(launcher, cdk, asset_processor, resource_mappings) + log_monitor = setup(launcher, asset_processor) + # Set invalid AWS credentials. launcher.args = ['+LoadLevel', level, '+cl_awsAccessKey', 'AKIAIOSFODNN7EXAMPLE', '+cl_awsSecretKey', 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'] @@ -180,51 +211,3 @@ class TestAWSMetricsWindows(object): halt_on_unexpected=True) assert result, 'Metrics events are sent successfully by unauthorized user' logger.info('Unauthorized user is rejected to send metrics.') - - def test_batch_analytics_metrics_delivered_to_s3(self, - level: str, - launcher: ly_test_tools.launchers.Launcher, - cdk: pytest.fixture, - aws_credentials: pytest.fixture, - asset_processor: pytest.fixture, - resource_mappings: pytest.fixture, - aws_utils: pytest.fixture, - aws_metrics_utils: aws_metrics_utils, - workspace: pytest.fixture): - """ - Tests that the submitted metrics are sent to the data lake for batch analytics. - """ - log_monitor, metrics_file_path, stack_name = setup(launcher, cdk, asset_processor, resource_mappings, - context_variable='batch_processing=true') - - analytics_bucket_name = aws_metrics_utils.get_analytics_bucket_name(stack_name) - - launcher.args = ['+LoadLevel', level] - launcher.args.extend(['-rhi=null']) - - with launcher.start(launch_ap=False): - start_time = datetime.utcnow() - monitor_metrics_submission(log_monitor) - # Verify that operational health metrics are delivered to CloudWatch. - aws_metrics_utils.verify_cloud_watch_delivery( - 'AWS/Lambda', - 'Invocations', - [{'Name': 'FunctionName', - 'Value': f'{stack_name}-EventsProcessingLambda'}], - start_time) - logger.info('Operational health metrics sent to CloudWatch.') - - aws_metrics_utils.verify_s3_delivery(analytics_bucket_name) - logger.info('Metrics sent to S3.') - - # Run the glue crawler to populate the AWS Glue Data Catalog with tables. - aws_metrics_utils.run_glue_crawler(f'{stack_name}-EventsCrawler') - # Run named queries on the table to verify the batch analytics. - aws_metrics_utils.run_named_queries(f'{stack_name}-AthenaWorkGroup') - logger.info('Query metrics from S3 successfully.') - - # Kinesis Data Firehose buffers incoming data before it delivers it to Amazon S3. Sleep for the - # default interval (60s) to make sure that all the metrics are sent to the bucket before cleanup. - time.sleep(60) - # Empty the S3 bucket. S3 buckets can only be deleted successfully when it doesn't contain any object. - aws_metrics_utils.empty_s3_bucket(analytics_bucket_name) diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_custom_thread.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_custom_thread.py new file mode 100644 index 0000000000..1bba9c3e39 --- /dev/null +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_custom_thread.py @@ -0,0 +1,29 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + +from threading import Thread + + +class AWSMetricsThread(Thread): + """ + Custom thread for raising assertion errors on the main thread. + """ + def __init__(self, **kwargs): + super().__init__(**kwargs) + self._error = None + + def run(self) -> None: + try: + super().run() + except AssertionError as e: + self._error = e + + def join(self, **kwargs) -> None: + super().join(**kwargs) + + if self._error: + raise AssertionError(self._error) diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_utils.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_utils.py index 59773d401c..97cd563651 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_utils.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_utils.py @@ -13,7 +13,6 @@ import typing from datetime import datetime from botocore.exceptions import WaiterError -from AWS.common.aws_utils import AwsUtils from .aws_metrics_waiters import KinesisAnalyticsApplicationUpdatedWaiter, \ CloudWatchMetricsDeliveredWaiter, DataLakeMetricsDeliveredWaiter, GlueCrawlerReadyWaiter @@ -29,7 +28,7 @@ class AWSMetricsUtils: Provide utils functions for the AWSMetrics gem to interact with the deployed resources. """ - def __init__(self, aws_utils: AwsUtils): + def __init__(self, aws_utils: pytest.fixture): self._aws_util = aws_utils def start_kinesis_data_analytics_application(self, application_name: str) -> None: @@ -199,14 +198,13 @@ class AWSMetricsUtils: assert state == 'SUCCEEDED', f'Failed to run the named query {named_query.get("Name", {})}' - def empty_s3_bucket(self, bucket_name: str) -> None: + def empty_batch_analytics_bucket(self, bucket_name: str) -> None: """ Empty the S3 bucket following: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/migrations3.html :param bucket_name: Name of the S3 bucket. """ - s3 = self._aws_util.resource('s3') bucket = s3.Bucket(bucket_name) diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/cdk/cdk_utils.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/cdk/cdk_utils.py index 4c4a9716d2..3643c3bb36 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/cdk/cdk_utils.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/cdk/cdk_utils.py @@ -72,15 +72,14 @@ class Cdk: f'\nError:{error.stderr}') def setup(self, cdk_path: str, project: str, account_id: str, - workspace: pytest.fixture, session: boto3.session.Session, bootstrap_required: bool): + workspace: pytest.fixture, session: boto3.session.Session): """ :param cdk_path: Path where cdk app.py is stored. :param project: Project name used for cdk project name env variable. :param account_id: AWS account id to use with cdk application. :param workspace: ly_test_tools workspace fixture. - :param workspace: bootstrap_required deploys bootstrap stack. + :param session: Current boto3 session, provides credentials and region. """ - self._cdk_env = os.environ.copy() unique_id = uuid.uuid4().hex[-4:] self._cdk_env['O3DE_AWS_PROJECT_NAME'] = project[:4] + unique_id if len(project) > 4 else project + unique_id @@ -104,8 +103,7 @@ class Cdk: logger.info(f'Installing cdk python dependencies: {output}') - if bootstrap_required: - self.bootstrap() + self.bootstrap() def bootstrap(self) -> None: """ @@ -124,15 +122,19 @@ class Cdk: logger.warning(f'Failed creating Bootstrap stack {BOOTSTRAP_STACK_NAME} not found. ' f'\nError:{clientError["Error"]["Message"]}') - def list(self) -> List[str]: + def list(self, deployment_params: List[str] = None) -> List[str]: """ - lists cdk stack names - :return List of cdk stack names + lists cdk stack names. + :param deployment_params: Deployment parameters like --all can be passed in this way. + :return List of cdk stack names. """ if not self._cdk_path: return [] list_cdk_application_cmd = ['cdk', 'list'] + if deployment_params: + list_cdk_application_cmd.extend(deployment_params) + output = process_utils.check_output( list_cdk_application_cmd, cwd=self._cdk_path, @@ -141,36 +143,36 @@ class Cdk: return output.splitlines() - def synthesize(self) -> None: + def synthesize(self, deployment_params: List[str] = None) -> None: """ - Synthesizes all cdk stacks + Synthesizes all cdk stacks. + :param deployment_params: Deployment parameters like --all can be passed in this way. """ if not self._cdk_path: return - list_cdk_application_cmd = ['cdk', 'synth'] + synth_cdk_application_cmd = ['cdk', 'synth'] + if deployment_params: + synth_cdk_application_cmd.extend(deployment_params) process_utils.check_output( - list_cdk_application_cmd, + synth_cdk_application_cmd, cwd=self._cdk_path, env=self._cdk_env, shell=True) - def deploy(self, context_variable: str = '', additonal_params: List[str] = None) -> List[str]: + def deploy(self, deployment_params: List[str] = None) -> List[str]: """ Deploys all the CDK stacks. - :param context_variable: Context variable for enabling optional features. - :param additonal_params: Additonal parameters like --all can be passed in this way. + :param deployment_params: Deployment parameters like --all can be passed in this way. :return List of deployed stack arns. """ if not self._cdk_path: return [] deploy_cdk_application_cmd = ['cdk', 'deploy', '--require-approval', 'never'] - if additonal_params: - deploy_cdk_application_cmd.extend(additonal_params) - if context_variable: - deploy_cdk_application_cmd.extend(['-c', f'{context_variable}']) + if deployment_params: + deploy_cdk_application_cmd.extend(deployment_params) output = process_utils.check_output( deploy_cdk_application_cmd, @@ -178,21 +180,23 @@ class Cdk: env=self._cdk_env, shell=True) - stacks = [] for line in output.splitlines(): line_sections = line.split('/') assert len(line_sections), 3 - stacks.append(line.split('/')[-2]) + self._stacks.append(line.split('/')[-2]) - return stacks + return self._stacks - def destroy(self) -> None: + def destroy(self, deployment_params: List[str] = None) -> None: """ Destroys the cdk application. + :param deployment_params: Deployment parameters like --all can be passed in this way. """ logger.info(f'CDK Path {self._cdk_path}') - destroy_cdk_application_cmd = ['cdk', 'destroy', '--all', '-f'] + destroy_cdk_application_cmd = ['cdk', 'destroy', '-f'] + if deployment_params: + destroy_cdk_application_cmd.extend(deployment_params) try: process_utils.check_output( @@ -238,3 +242,7 @@ class Cdk: # self._session.client('cloudformation').delete_stack( # StackName=BOOTSTRAP_STACK_NAME # ) + + @property + def stacks(self): + return self._stacks diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/test_password_signin.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/aws_client_auth_automation_test.py similarity index 65% rename from AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/test_password_signin.py rename to AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/aws_client_auth_automation_test.py index db0e17fa89..bdd1eea469 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/test_password_signin.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/aws_client_auth_automation_test.py @@ -10,10 +10,7 @@ import logging import ly_test_tools.log.log_monitor # fixture imports -from AWS.Windows.resource_mappings.resource_mappings import resource_mappings -from AWS.Windows.cdk.cdk_utils import Cdk -from AWS.common.aws_utils import AwsUtils -from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor as asset_processor +from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor AWS_PROJECT_NAME = 'AWS-AutomationTest' AWS_CLIENT_AUTH_FEATURE_NAME = 'AWSClientAuth' @@ -37,11 +34,47 @@ logger = logging.getLogger(__name__) @pytest.mark.parametrize('region_name', ['us-west-2']) @pytest.mark.parametrize('assume_role_arn', ['arn:aws:iam::645075835648:role/o3de-automation-tests']) @pytest.mark.parametrize('session_name', ['o3de-Automation-session']) -class TestAWSClientAuthPasswordSignIn(object): +@pytest.mark.usefixtures('cdk') +@pytest.mark.parametrize('deployment_params', [[]]) +class TestAWSClientAuthWindows(object): """ - Test class to verify AWS Cognito IDP Password sign in and Cognito Identity pool authenticated authorization. + Test class to verify AWS Client Auth gem features on Windows. """ + @pytest.mark.parametrize('level', ['AWS/ClientAuth']) + @pytest.mark.parametrize('destroy_stacks_on_teardown', [False]) + def test_anonymous_credentials(self, + level: str, + launcher: pytest.fixture, + resource_mappings: pytest.fixture, + workspace: pytest.fixture, + asset_processor: pytest.fixture + ): + """ + Test to verify AWS Cognito Identity pool anonymous authorization. + + Setup: Deploys cdk and updates resource mapping file. + Tests: Getting credentials when no credentials are configured + Verification: Log monitor looks for success credentials log. + """ + asset_processor.start() + asset_processor.wait_for_idle() + + file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), GAME_LOG_NAME) + log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor) + + launcher.args = ['+LoadLevel', level] + launcher.args.extend(['-rhi=null']) + + with launcher.start(launch_ap=False): + result = log_monitor.monitor_log_for_lines( + expected_lines=['(Script) - Success anonymous credentials'], + unexpected_lines=['(Script) - Fail anonymous credentials'], + halt_on_unexpected=True, + ) + assert result, 'Anonymous credentials fetched successfully.' + + @pytest.mark.parametrize('destroy_stacks_on_teardown', [True]) def test_password_signin_credentials(self, launcher: pytest.fixture, cdk: pytest.fixture, @@ -51,13 +84,12 @@ class TestAWSClientAuthPasswordSignIn(object): aws_utils: pytest.fixture ): """ + Test to verify AWS Cognito IDP Password sign in and Cognito Identity pool authenticated authorization. + Setup: Deploys cdk and updates resource mapping file. Tests: Sign up new test user, admin confirm the user, sign in and get aws credentials. Verification: Log monitor looks for success credentials log. """ - logger.info(f'Cdk stack names:\n{cdk.list()}') - stacks = cdk.deploy() - resource_mappings.populate_output_keys(stacks) asset_processor.start() asset_processor.wait_for_idle() diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/test_anonymous_credentials.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/test_anonymous_credentials.py deleted file mode 100644 index 379096c2a8..0000000000 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/client_auth/test_anonymous_credentials.py +++ /dev/null @@ -1,77 +0,0 @@ -""" -Copyright (c) Contributors to the Open 3D Engine Project. -For complete copyright and license terms please see the LICENSE at the root of this distribution. - -SPDX-License-Identifier: Apache-2.0 OR MIT -""" -import pytest -import os -import logging -import ly_test_tools.log.log_monitor - -# fixture imports -from AWS.Windows.resource_mappings.resource_mappings import resource_mappings -from AWS.Windows.cdk.cdk_utils import Cdk -from AWS.common.aws_utils import AwsUtils -from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor as asset_processor - -AWS_PROJECT_NAME = 'AWS-AutomationTest' -AWS_CLIENT_AUTH_FEATURE_NAME = 'AWSClientAuth' -AWS_CLIENT_AUTH_DEFAULT_PROFILE_NAME = 'default' - -GAME_LOG_NAME = 'Game.log' - -logger = logging.getLogger(__name__) - - -@pytest.mark.SUITE_periodic -@pytest.mark.usefixtures('automatic_process_killer') -@pytest.mark.usefixtures('asset_processor') -@pytest.mark.usefixtures('workspace') -@pytest.mark.parametrize('project', ['AutomatedTesting']) -@pytest.mark.parametrize('level', ['AWS/ClientAuth']) -@pytest.mark.usefixtures('cdk') -@pytest.mark.parametrize('feature_name', [AWS_CLIENT_AUTH_FEATURE_NAME]) -@pytest.mark.usefixtures('resource_mappings') -@pytest.mark.parametrize('resource_mappings_filename', ['default_aws_resource_mappings.json']) -@pytest.mark.usefixtures('aws_utils') -@pytest.mark.parametrize('region_name', ['us-west-2']) -@pytest.mark.parametrize('assume_role_arn', ['arn:aws:iam::645075835648:role/o3de-automation-tests']) -@pytest.mark.parametrize('session_name', ['o3de-Automation-session']) -class TestAWSClientAuthAnonymousCredentials(object): - """ - Test class to verify AWS Cognito Identity pool anonymous authorization. - """ - - def test_anonymous_credentials(self, - level: str, - launcher: pytest.fixture, - cdk: pytest.fixture, - resource_mappings: pytest.fixture, - workspace: pytest.fixture, - asset_processor: pytest.fixture - ): - """ - Setup: Deploys cdk and updates resource mapping file. - Tests: Getting AWS credentials for no signed in user. - Verification: Log monitor looks for success credentials log. - """ - logger.info(f'Cdk stack names:\n{cdk.list()}') - stacks = cdk.deploy() - resource_mappings.populate_output_keys(stacks) - asset_processor.start() - asset_processor.wait_for_idle() - - file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), GAME_LOG_NAME) - log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor) - - launcher.args = ['+LoadLevel', level] - launcher.args.extend(['-rhi=null']) - - with launcher.start(launch_ap=False): - result = log_monitor.monitor_log_for_lines( - expected_lines=['(Script) - Success anonymous credentials'], - unexpected_lines=['(Script) - Fail anonymous credentials'], - halt_on_unexpected=True, - ) - assert result, 'Anonymous credentials fetched successfully.' diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/core/test_aws_resource_interaction.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/core/test_aws_resource_interaction.py index 8fc4706d3c..55f06660e8 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/core/test_aws_resource_interaction.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/core/test_aws_resource_interaction.py @@ -7,7 +7,8 @@ SPDX-License-Identifier: Apache-2.0 OR MIT import os import logging -import time +import typing +import shutil import pytest import ly_test_tools @@ -16,7 +17,6 @@ import ly_test_tools.environment.process_utils as process_utils import ly_test_tools.o3de.asset_processor_utils as asset_processor_utils from botocore.exceptions import ClientError -from AWS.Windows.resource_mappings.resource_mappings import resource_mappings from assetpipeline.ap_fixtures.asset_processor_fixture import asset_processor AWS_CORE_FEATURE_NAME = 'AWSCore' @@ -29,18 +29,49 @@ GAME_LOG_NAME = 'Game.log' logger = logging.getLogger(__name__) -def setup(launcher: pytest.fixture, cdk: pytest.fixture, resource_mappings: pytest.fixture, asset_processor: pytest.fixture): +def setup(launcher: pytest.fixture, asset_processor: pytest.fixture) -> typing.Tuple[pytest.fixture, str]: + """ + Set up the resource mapping configuration and start the log monitor. + :param launcher: Client launcher for running the test level. + :param asset_processor: asset_processor fixture. + :return log monitor object, metrics file path and the metrics stack name. + """ + # Create the temporary directory for downloading test file from S3. + user_dir = os.path.join(launcher.workspace.paths.project(), 'user') + s3_download_dir = os.path.join(user_dir, 's3_download') + if not os.path.exists(s3_download_dir): + os.makedirs(s3_download_dir) + asset_processor_utils.kill_asset_processor() - logger.info(f'Cdk stack names:\n{cdk.list()}') - stacks = cdk.deploy(additonal_params=['--all']) - resource_mappings.populate_output_keys(stacks) asset_processor.start() asset_processor.wait_for_idle() file_to_monitor = os.path.join(launcher.workspace.paths.project_log(), GAME_LOG_NAME) log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=file_to_monitor) - return log_monitor + return log_monitor, s3_download_dir + + +def write_test_data_to_dynamodb_table(resource_mappings: pytest.fixture, aws_utils: pytest.fixture) -> None: + """ + Write test data to the DynamoDB table created by the CDK application. + :param resource_mappings: resource_mappings fixture. + :param aws_utils: aws_utils fixture. + """ + table_name = resource_mappings.get_resource_name_id("AWSCore.ExampleDynamoTableOutput") + try: + aws_utils.client('dynamodb').put_item( + TableName=table_name, + Item={ + 'id': { + 'S': 'Item1' + } + } + ) + logger.info(f'Loaded data into table {table_name}') + except ClientError: + logger.exception(f'Failed to load data into table {table_name}') + raise @pytest.mark.SUITE_periodic @@ -58,130 +89,57 @@ def setup(launcher: pytest.fixture, cdk: pytest.fixture, resource_mappings: pyte @pytest.mark.parametrize('resource_mappings_filename', [AWS_RESOURCE_MAPPING_FILE_NAME]) @pytest.mark.usefixtures('aws_credentials') @pytest.mark.parametrize('profile_name', ['AWSAutomationTest']) +@pytest.mark.usefixtures('cdk') +@pytest.mark.parametrize('deployment_params', [['--all']]) +@pytest.mark.parametrize('destroy_stacks_on_teardown', [True]) class TestAWSCoreAWSResourceInteraction(object): """ - Test class to verify AWSCore can downloading a file from S3. + Test class to verify the scripting behavior for the AWSCore gem. """ - def test_download_from_s3(self, - level: str, - launcher: pytest.fixture, - cdk: pytest.fixture, - workspace: pytest.fixture, - asset_processor: pytest.fixture, - resource_mappings: pytest.fixture - ): + + @pytest.mark.parametrize('expected_lines', [ + ['(Script) - [S3] Head object request is done', + '(Script) - [S3] Head object success: Object example.txt is found.', + '(Script) - [S3] Get object success: Object example.txt is downloaded.', + '(Script) - [Lambda] Completed Invoke', + '(Script) - [Lambda] Invoke success: {"statusCode": 200, "body": {}}', + '(Script) - [DynamoDB] Results finished']]) + @pytest.mark.parametrize('unexpected_lines', [ + ['(Script) - [S3] Head object error: No response body.', + '(Script) - [S3] Get object error: Request validation failed, output file directory doesn\'t exist.', + '(Script) - Request validation failed, output file miss full path.', + '(Script) - ']]) + def test_scripting_behavior(self, + level: str, + launcher: pytest.fixture, + workspace: pytest.fixture, + asset_processor: pytest.fixture, + resource_mappings: pytest.fixture, + aws_utils: pytest.fixture, + expected_lines: typing.List[str], + unexpected_lines: typing.List[str]): """ Setup: Deploys cdk and updates resource mapping file. - Tests: Getting AWS credentials for no signed in user. - Verification: Log monitor looks for success download. The existence and contents of the file are also verified. + Tests: Interact with AWS S3, DynamoDB and Lambda services. + Verification: Script canvas nodes can communicate with AWS services successfully. """ - log_monitor = setup(launcher, cdk, resource_mappings, asset_processor) + log_monitor, s3_download_dir = setup(launcher, asset_processor) + write_test_data_to_dynamodb_table(resource_mappings, aws_utils) launcher.args = ['+LoadLevel', level] launcher.args.extend(['-rhi=null']) - user_dir = os.path.join(workspace.paths.project(), 'user') - download_dir = os.path.join(user_dir, 's3_download') - if not os.path.exists(download_dir): - os.makedirs(download_dir) - with launcher.start(launch_ap=False): result = log_monitor.monitor_log_for_lines( - expected_lines=['(Script) - [S3] Head object request is done', - '(Script) - [S3] Head object success: Object example.txt is found.', - '(Script) - [S3] Get object success: Object example.txt is downloaded.'], - unexpected_lines=['(Script) - [S3] Head object error: No response body.', - '(Script) - [S3] Get object error: Request validation failed, output file directory doesn\'t exist.'], + expected_lines=expected_lines, + unexpected_lines=unexpected_lines, halt_on_unexpected=True ) assert result, "Expected lines weren't found." - download_path = os.path.join(download_dir, 'output.txt') - - file_was_downloaded = os.path.exists(download_path) + assert os.path.exists(os.path.join(s3_download_dir, 'output.txt')), \ + 'The expected file wasn\'t successfully downloaded.' # clean up the file directories. - if file_was_downloaded: - os.remove(download_path) - os.rmdir(download_dir) - - assert file_was_downloaded, 'The expected file wasn\'t successfully downloaded' - - def test_invoke_lambda(self, - level: str, - launcher: pytest.fixture, - cdk: pytest.fixture, - resource_mappings: pytest.fixture, - workspace: pytest.fixture, - asset_processor: pytest.fixture - ): - """ - Setup: Deploys the CDK. - Tests: Runs the test level. - Verification: Searches the logs for the expected output from the example lambda. - """ - - log_monitor = setup(launcher, cdk, resource_mappings, asset_processor) - - launcher.args = ['+LoadLevel', level] - launcher.args.extend(['-rhi=null']) - - with launcher.start(launch_ap=False): - result = log_monitor.monitor_log_for_lines( - expected_lines=['(Script) - [Lambda] Completed Invoke', - '(Script) - [Lambda] Invoke success: {"statusCode": 200, "body": {}}'], - unexpected_lines=['(Script) - Request validation failed, output file miss full path.', - '(Script) - '], - halt_on_unexpected=True - ) - - assert result - - def test_get_dynamodb_value(self, - level: str, - launcher: pytest.fixture, - cdk: pytest.fixture, - resource_mappings: pytest.fixture, - workspace: pytest.fixture, - asset_processor: pytest.fixture, - aws_utils: pytest.fixture, - ): - """ - Setup: Deploys the CDK application - Test: Runs a launcher with a level that loads a scriptcanvas that pulls a DynamoDB table value. - Verification: The value is output in the logs and verified by the test. - """ - - def write_test_table_data(): - client = aws_utils.client('dynamodb') - table_name = resource_mappings.get_resource_name_id("AWSCore.ExampleDynamoTableOutput") - try: - client.put_item( - TableName=table_name, - Item={ - 'id': { - 'S': 'Item1' - } - } - ) - logger.info(f'Loaded data into table {table_name}') - except ClientError: - logger.exception(f'Failed to load data into table {table_name}') - raise - - log_monitor = setup(launcher, cdk, resource_mappings, asset_processor) - write_test_table_data() - - launcher.args = ['+LoadLevel', level] - launcher.args.extend(['-rhi=null']) - - with launcher.start(launch_ap=False): - result = log_monitor.monitor_log_for_lines( - expected_lines=['(Script) - [DynamoDB] Results finished'], - unexpected_lines=['(Script) - Request validation failed, output file miss full path.', - '(Script) - '], - halt_on_unexpected=True - ) - - assert result + shutil.rmtree(s3_download_dir) diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/resource_mappings/resource_mappings.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/resource_mappings/resource_mappings.py index 6a3ac49129..fd679de99d 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/resource_mappings/resource_mappings.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/resource_mappings/resource_mappings.py @@ -6,7 +6,6 @@ SPDX-License-Identifier: Apache-2.0 OR MIT """ import os -from os.path import abspath import pytest import json import logging @@ -107,38 +106,3 @@ class ResourceMappings: def get_resource_name_id(self, resource_key: str): return self._resource_mappings[AWS_RESOURCE_MAPPINGS_KEY][resource_key]['Name/ID'] - - -@pytest.fixture(scope='function') -def resource_mappings( - request: pytest.fixture, - project: str, - feature_name: str, - resource_mappings_filename: str, - workspace: pytest.fixture, - aws_utils: pytest.fixture) -> ResourceMappings: - """ - Fixture for setting up resource mappings file. - :param request: _pytest.fixtures.SubRequest class that handles getting - a pytest fixture from a pytest function/fixture. - :param project: Project to find resource mapping file. - :param feature_name: AWS Gem name that is prepended to resource mapping keys. - :param resource_mappings_filename: Name of resource mapping file. - :param workspace: ly_test_tools workspace fixture. - :param aws_utils: AWS utils fixture. - :return: ResourceMappings class object. - """ - - path = f'{workspace.paths.engine_root()}/{project}/Config/{resource_mappings_filename}' - logger.info(f'Resource mapping path : {path}') - logger.info(f'Resource mapping resolved path : {abspath(path)}') - resource_mappings_obj = ResourceMappings(abspath(path), aws_utils.assume_session().region_name, feature_name, - aws_utils.assume_account_id(), workspace, - aws_utils.client('cloudformation')) - - def teardown(): - resource_mappings_obj.clear_output_keys() - - request.addfinalizer(teardown) - - return resource_mappings_obj diff --git a/AutomatedTesting/Gem/PythonTests/AWS/conftest.py b/AutomatedTesting/Gem/PythonTests/AWS/conftest.py index 06a6fe3a72..6ad495ab66 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/conftest.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/conftest.py @@ -4,11 +4,15 @@ For complete copyright and license terms please see the LICENSE at the root of t SPDX-License-Identifier: Apache-2.0 OR MIT """ -import pytest import logging +from os.path import abspath +import pytest +import typing + from AWS.common.aws_utils import AwsUtils from AWS.common.aws_credentials import AwsCredentials from AWS.Windows.cdk.cdk_utils import Cdk +from AWS.Windows.resource_mappings.resource_mappings import ResourceMappings logger = logging.getLogger(__name__) @@ -42,6 +46,41 @@ def aws_utils( pytest.cdk_obj = None +@pytest.fixture(scope='function') +def resource_mappings( + request: pytest.fixture, + project: str, + feature_name: str, + resource_mappings_filename: str, + workspace: pytest.fixture, + aws_utils: pytest.fixture) -> ResourceMappings: + """ + Fixture for setting up resource mappings file. + :param request: _pytest.fixtures.SubRequest class that handles getting + a pytest fixture from a pytest function/fixture. + :param project: Project to find resource mapping file. + :param feature_name: AWS Gem name that is prepended to resource mapping keys. + :param resource_mappings_filename: Name of resource mapping file. + :param workspace: ly_test_tools workspace fixture. + :param aws_utils: AWS utils fixture. + :return: ResourceMappings class object. + """ + + path = f'{workspace.paths.engine_root()}/{project}/Config/{resource_mappings_filename}' + logger.info(f'Resource mapping path : {path}') + logger.info(f'Resource mapping resolved path : {abspath(path)}') + resource_mappings_obj = ResourceMappings(abspath(path), aws_utils.assume_session().region_name, feature_name, + aws_utils.assume_account_id(), workspace, + aws_utils.client('cloudformation')) + + def teardown(): + resource_mappings_obj.clear_output_keys() + + request.addfinalizer(teardown) + + return resource_mappings_obj + + @pytest.fixture(scope='function') def cdk( request: pytest.fixture, @@ -49,8 +88,9 @@ def cdk( feature_name: str, workspace: pytest.fixture, aws_utils: pytest.fixture, - bootstrap_required: bool = True, - destroy_stacks_on_teardown: bool = True) -> Cdk: + resource_mappings: pytest.fixture, + deployment_params: typing.List[str], + destroy_stacks_on_teardown: bool) -> Cdk: """ Fixture for setting up a Cdk :param request: _pytest.fixtures.SubRequest class that handles getting @@ -59,8 +99,8 @@ def cdk( :param feature_name: Feature gem name to expect cdk folder in. :param workspace: ly_test_tools workspace fixture. :param aws_utils: aws_utils fixture. - :param bootstrap_required: Whether the bootstrap stack needs to be created to - provision resources the AWS CDK needs to perform the deployment. + :param resource_mappings: resource_mappings fixture. + :param deployment_params: Parameters for the CDK application deployment. :param destroy_stacks_on_teardown: option to control calling destroy ot the end of test. :return Cdk class object. """ @@ -70,22 +110,27 @@ def cdk( if pytest.cdk_obj is None: pytest.cdk_obj = Cdk() + pytest.cdk_obj.setup(cdk_path, project, aws_utils.assume_account_id(), workspace, aws_utils.assume_session()) + + stacks = pytest.cdk_obj.deploy(deployment_params=deployment_params) + + logger.info(f'Cdk stack names:\n{stacks}') + resource_mappings.populate_output_keys(stacks) - pytest.cdk_obj.setup(cdk_path, project, aws_utils.assume_account_id(), workspace, aws_utils.assume_session(), - bootstrap_required) def teardown(): if destroy_stacks_on_teardown: - pytest.cdk_obj.destroy() + pytest.cdk_obj.destroy(deployment_params=deployment_params) # Enable after https://github.com/aws/aws-cdk/issues/986 is fixed. # Until then clean the bootstrap bucket manually. - # cdk_obj.remove_bootstrap_stack() + # pytest.cdk_obj.remove_bootstrap_stack() + + pytest.cdk_obj = None request.addfinalizer(teardown) return pytest.cdk_obj - @pytest.fixture(scope='function') def aws_credentials(request: pytest.fixture, aws_utils: pytest.fixture, profile_name: str): """ diff --git a/AutomatedTesting/Levels/AWS/ClientAuth/ClientAuth.ly b/AutomatedTesting/Levels/AWS/ClientAuth/ClientAuth.ly index af8a7f5c8e..b4a2d6cb3a 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuth/ClientAuth.ly +++ b/AutomatedTesting/Levels/AWS/ClientAuth/ClientAuth.ly @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0f4d4e0155feaa76c80a14128000a0fd9570ab76e79f4847eaef9006324a4d2 -size 9084 +oid sha256:19f2c4454bb395cdc0a36d1e45e6a384bbd23037af1a2fb93e088ecfa0f10e5b +size 9343 diff --git a/AutomatedTesting/Levels/AWS/ClientAuth/ConitoAnonymousAuthorization.scriptcanvas b/AutomatedTesting/Levels/AWS/ClientAuth/ConitoAnonymousAuthorization.scriptcanvas index a2bbdfce39..6cbd951fae 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuth/ConitoAnonymousAuthorization.scriptcanvas +++ b/AutomatedTesting/Levels/AWS/ClientAuth/ConitoAnonymousAuthorization.scriptcanvas @@ -3,12 +3,12 @@ - + - + @@ -16,783 +16,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1210,21 +434,21 @@ - + - + - + @@ -1262,7 +486,7 @@ - + @@ -1300,7 +524,7 @@ - + @@ -1338,7 +562,7 @@ - + @@ -1376,7 +600,7 @@ - + @@ -1414,7 +638,7 @@ - + @@ -1423,11 +647,6 @@ - - - - - @@ -1457,7 +676,7 @@ - + @@ -1495,7 +714,7 @@ - + @@ -1533,7 +752,7 @@ - + @@ -1571,7 +790,7 @@ - + @@ -1607,16 +826,18 @@ - + - - - + + + + + @@ -1635,14 +856,14 @@ - + - + @@ -1659,14 +880,14 @@ - + - + @@ -1681,12 +902,681 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1790,42 +1680,118 @@ - - - + - + - - - - - - - + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -1835,7 +1801,7 @@ - + @@ -1843,7 +1809,7 @@ - + @@ -1856,7 +1822,7 @@ - + @@ -1866,7 +1832,7 @@ - + @@ -1874,7 +1840,7 @@ - + @@ -1887,7 +1853,7 @@ - + @@ -1897,7 +1863,7 @@ - + @@ -1905,7 +1871,7 @@ - + @@ -1916,15 +1882,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + @@ -1932,88 +1928,41 @@ - + - - + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + @@ -2021,7 +1970,7 @@ - + @@ -2047,7 +1996,7 @@ - + @@ -2068,49 +2017,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2120,8 +2027,8 @@ - - + + @@ -2131,10 +2038,72 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2153,11 +2122,25 @@ + + + + + + + + + - - - - + + + + + + + + + @@ -2168,9 +2151,17 @@ - - - + + + + + + + + + + + @@ -2178,41 +2169,46 @@ - + - - - - - - - - - - - + + + - + + + + + + + + + + + + + + + + + + + + - - - - - - - + @@ -2220,41 +2216,41 @@ - + - - - - + + + - - - - + + + - + - - - + + + + - - - + + + + @@ -2264,14 +2260,6 @@ - - - - - - - - @@ -2280,6 +2268,14 @@ + + + + + + + + @@ -2304,22 +2300,24 @@ - + - - - - - - - - - + + + + + + + + + + + diff --git a/AutomatedTesting/Levels/AWS/ClientAuth/LevelData/Environment.xml b/AutomatedTesting/Levels/AWS/ClientAuth/LevelData/Environment.xml deleted file mode 100644 index d4e3d33551..0000000000 --- a/AutomatedTesting/Levels/AWS/ClientAuth/LevelData/Environment.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/AutomatedTesting/Levels/AWS/ClientAuth/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AWS/ClientAuth/LevelData/TimeOfDay.xml deleted file mode 100644 index d827d4da29..0000000000 --- a/AutomatedTesting/Levels/AWS/ClientAuth/LevelData/TimeOfDay.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/AutomatedTesting/Levels/AWS/ClientAuth/filelist.xml b/AutomatedTesting/Levels/AWS/ClientAuth/filelist.xml index 56c3f1efd4..6b5b5a8727 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuth/filelist.xml +++ b/AutomatedTesting/Levels/AWS/ClientAuth/filelist.xml @@ -1,6 +1,6 @@ - + diff --git a/AutomatedTesting/Levels/AWS/ClientAuth/level.pak b/AutomatedTesting/Levels/AWS/ClientAuth/level.pak index 8da6f7f7d6..bd791070e9 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuth/level.pak +++ b/AutomatedTesting/Levels/AWS/ClientAuth/level.pak @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da041115014f11696d5878d5c21247c17b8d694fa9674e30692259261a7223a2 -size 3792 +oid sha256:8a674e05824e5ceec13a0487b318923568710bc8269e5be84adad59c495a7ceb +size 3610 diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/ClientAuthPasswordSignIn.ly b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/ClientAuthPasswordSignIn.ly index 24fe4f2482..40d9ad619c 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/ClientAuthPasswordSignIn.ly +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/ClientAuthPasswordSignIn.ly @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43b1a23b62fe2ffa05545ac99524f40b6fff49d6e35925b9d6138c00d8082e86 -size 9073 +oid sha256:a1c0b621525b8e88c3775ea4c60c2197d1e1b060ace9bad9d6efcb0532817e44 +size 9356 diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/PasswordSignIn.scriptcanvas b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/PasswordSignIn.scriptcanvas index 1a135f3e2c..1847f1f0ec 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/PasswordSignIn.scriptcanvas +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/PasswordSignIn.scriptcanvas @@ -3,34 +3,34 @@ - + - + - + - + - + - + @@ -68,7 +68,7 @@ - + @@ -106,7 +106,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -220,1007 +220,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1258,7 +258,7 @@ - + @@ -1296,7 +296,7 @@ - + @@ -1334,7 +334,7 @@ - + @@ -1372,7 +372,7 @@ - + @@ -1410,7 +410,7 @@ - + @@ -1448,7 +448,7 @@ - + @@ -1486,7 +486,7 @@ - + @@ -1524,7 +524,7 @@ - + @@ -1562,7 +562,7 @@ - + @@ -1600,7 +600,7 @@ - + @@ -1638,7 +638,7 @@ - + @@ -1676,7 +676,7 @@ - + @@ -1714,7 +714,7 @@ - + @@ -1752,7 +752,7 @@ - + @@ -1790,7 +790,7 @@ - + @@ -1828,7 +828,7 @@ - + @@ -1866,7 +866,7 @@ - + @@ -1904,7 +904,7 @@ - + @@ -1942,7 +942,7 @@ - + @@ -1980,7 +980,7 @@ - + @@ -2018,7 +1018,7 @@ - + @@ -2056,7 +1056,7 @@ - + @@ -2094,7 +1094,7 @@ - + @@ -2132,7 +1132,7 @@ - + @@ -2181,20 +1181,20 @@ - + - + - + - + @@ -2211,14 +1211,14 @@ - + - + @@ -2235,14 +1235,14 @@ - + - + @@ -2259,14 +1259,14 @@ - + - + @@ -2283,14 +1283,14 @@ - + - + @@ -2307,14 +1307,14 @@ - + - + @@ -2331,14 +1331,14 @@ - + - + @@ -2355,14 +1355,14 @@ - + - + @@ -2379,7 +1379,7 @@ - + @@ -2399,14 +1399,14 @@ - + - + @@ -2423,14 +1423,14 @@ - + - + @@ -2447,14 +1447,14 @@ - + - + @@ -2474,21 +1474,59 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2526,7 +1564,7 @@ - + @@ -2564,7 +1602,2981 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2619,105 +4631,472 @@ - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2725,7 +5104,7 @@ - + @@ -2733,14 +5112,14 @@ - + - + @@ -2778,7 +5157,7 @@ - + @@ -2831,645 +5210,21 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + @@ -3507,7 +5262,7 @@ - + @@ -3562,1883 +5317,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -5446,14 +5325,14 @@ - + - + @@ -5491,7 +5370,7 @@ - + @@ -5529,11 +5408,117 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5546,245 +5531,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -5794,28 +5562,245 @@ - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5829,9 +5814,8 @@ - - + @@ -5839,7 +5823,91 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5850,7 +5918,7 @@ - + @@ -5858,14 +5926,14 @@ - + - + @@ -5886,7 +5954,138 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5905,14 +6104,14 @@ - + - + @@ -5933,29 +6132,40 @@ - + - - + + - + + + + + + - - + + + + + + + + - + - + @@ -5964,18 +6174,12 @@ - - - - - - - + @@ -5983,7 +6187,7 @@ - + @@ -6003,7 +6207,7 @@ - + @@ -6017,7 +6221,7 @@ - + @@ -6025,7 +6229,7 @@ - + @@ -6043,15 +6247,15 @@ - - - + + + - - - + + + @@ -6059,7 +6263,7 @@ - + @@ -6067,7 +6271,7 @@ - + @@ -6085,15 +6289,15 @@ - - - + + + - - - + + + @@ -6101,46 +6305,20 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - + @@ -6148,96 +6326,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -6256,14 +6345,14 @@ - + - + @@ -6284,7 +6373,7 @@ - + @@ -6292,7 +6381,49 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6312,7 +6443,7 @@ - + @@ -6324,167 +6455,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - + @@ -6492,11 +6472,11 @@ - + - + @@ -6508,17 +6488,21 @@ - - + + - + + + + + @@ -6526,29 +6510,31 @@ - + - + - + - - - - - - - + + + + + + + + + @@ -6565,9 +6551,9 @@ - + - + diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/filelist.xml b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/filelist.xml index f3e20f9b63..ce3f3f3407 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/filelist.xml +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/filelist.xml @@ -1,6 +1,6 @@ - + diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/level.pak b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/level.pak index 49349b01e1..1af55520b6 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/level.pak +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignIn/level.pak @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a58292341785cb260dc0ccf346259e35e2817ee48fc401a21ab528f6afb97b52 -size 3551 +oid sha256:f318a1787069385de291660f79e350cea2ca2c3ef3b5e0576686066bd9c49395 +size 3667 diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/ClientAuthPasswordSignUp.ly b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/ClientAuthPasswordSignUp.ly index 3500584d99..b3f66ff34a 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/ClientAuthPasswordSignUp.ly +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/ClientAuthPasswordSignUp.ly @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3d5121b26608b02747e245071ccff29ac57358cb6349ec9495a7a003ac12467 -size 8942 +oid sha256:afc5d665128738e6bea09e78a16ee38acc923a8ecefff90d987858ce72c395fa +size 9360 diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/PasswordSignUp.scriptcanvas b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/PasswordSignUp.scriptcanvas index 632d27d5b0..f630d4aba3 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/PasswordSignUp.scriptcanvas +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/PasswordSignUp.scriptcanvas @@ -3,12 +3,12 @@ - + - + @@ -16,7 +16,1249 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1266,364 +2508,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2871,905 +3756,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -3779,7 +3770,7 @@ - + @@ -3787,7 +3778,7 @@ - + @@ -3800,7 +3791,7 @@ - + @@ -3810,7 +3801,7 @@ - + @@ -3818,7 +3809,7 @@ - + @@ -3831,7 +3822,7 @@ - + @@ -3841,7 +3832,7 @@ - + @@ -3849,7 +3840,7 @@ - + @@ -3862,7 +3853,7 @@ - + @@ -3872,7 +3863,7 @@ - + @@ -3880,7 +3871,7 @@ - + @@ -3893,25 +3884,25 @@ - + - + - + - + - + @@ -3928,9 +3919,8 @@ - - + @@ -3938,113 +3928,22 @@ - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4052,123 +3951,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4177,10 +3959,25 @@ - - + + - + + + + + + + + + + + + + + + + @@ -4189,6 +3986,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4200,7 +4143,7 @@ - + @@ -4221,56 +4164,33 @@ - + - - + + - - - - - - - - - - - - - - - - - - - - - + + + + + + - + - - - - - - - - - - - - + + + + @@ -4281,12 +4201,20 @@ - - - - + + + + + + + + + + + + @@ -4294,7 +4222,7 @@ - + @@ -4302,7 +4230,69 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4313,11 +4303,11 @@ - + - + @@ -4328,18 +4318,18 @@ - - - - - - - - + + + + + + + + @@ -4356,20 +4346,22 @@ - + - - - - - - - + + + + + + + + + diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/filelist.xml b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/filelist.xml index a9b73a9fb3..6565342dd4 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/filelist.xml +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/filelist.xml @@ -1,6 +1,6 @@ - + diff --git a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/level.pak b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/level.pak index 85d3c59f9b..781de219f7 100644 --- a/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/level.pak +++ b/AutomatedTesting/Levels/AWS/ClientAuthPasswordSignUp/level.pak @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:605391d415b828b100bada11d108099520c0b6a020f17588887b610475805d90 -size 3546 +oid sha256:87882b64688a77815d93c6973929fa21b89dc6c13d4866c710124ce2cd0f411e +size 3652 diff --git a/AutomatedTesting/Levels/AWS/Metrics/Script/Metrics.lua b/AutomatedTesting/Levels/AWS/Metrics/Script/Metrics.lua index c7f86313f9..bbf6bad8c5 100644 --- a/AutomatedTesting/Levels/AWS/Metrics/Script/Metrics.lua +++ b/AutomatedTesting/Levels/AWS/Metrics/Script/Metrics.lua @@ -30,9 +30,6 @@ function metrics:OnSendMetricsFailure(requestId, errorMessage) end function metrics:OnDeactivate() - AWSMetricsRequestBus.Broadcast.FlushMetrics() - Debug.Log("Stop generating new test events and flushed the buffered metrics.") - self.tickBusHandler:Disconnect() self.metricsNotificationHandler:Disconnect() end @@ -40,7 +37,7 @@ end function metrics:OnTick(deltaTime, timePoint) self.tickTime = self.tickTime + deltaTime - if self.tickTime > 2.0 then + if self.tickTime > 5.0 then defaultAttribute = AWSMetrics_MetricsAttribute() defaultAttribute:SetName("event_name") defaultAttribute:SetStrValue("login") @@ -57,6 +54,9 @@ function metrics:OnTick(deltaTime, timePoint) if self.numSubmittedMetricsEvents % 2 == 0 then if AWSMetricsRequestBus.Broadcast.SubmitMetrics(attributeList.attributes, 0, "lua", false) then Debug.Log("Submitted metrics without buffer.") + + AWSMetricsRequestBus.Broadcast.FlushMetrics() + Debug.Log("Flushed the buffered metrics.") else Debug.Log("Failed to Submit metrics without buffer.") end @@ -67,7 +67,7 @@ function metrics:OnTick(deltaTime, timePoint) Debug.Log("Failed to Submit metrics with buffer.") end end - + self.numSubmittedMetricsEvents = self.numSubmittedMetricsEvents + 1 self.tickTime = 0 end diff --git a/AutomatedTesting/ScriptCanvas/dynamodbdemo.scriptcanvas b/AutomatedTesting/ScriptCanvas/dynamodbdemo.scriptcanvas index 52654666f8..286ac12551 100644 --- a/AutomatedTesting/ScriptCanvas/dynamodbdemo.scriptcanvas +++ b/AutomatedTesting/ScriptCanvas/dynamodbdemo.scriptcanvas @@ -3,12 +3,12 @@ - + - + @@ -16,1214 +16,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1641,7 +434,7 @@ - + @@ -1664,11 +457,7 @@ - - - - - + @@ -1707,11 +496,7 @@ - - - - - + @@ -1868,178 +653,141 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2047,113 +795,66 @@ - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + - + - + @@ -2176,11 +877,7 @@ - - - - - + @@ -2318,7 +1015,1176 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2422,11 +2288,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2436,7 +2408,7 @@ - + @@ -2444,7 +2416,7 @@ - + @@ -2457,7 +2429,7 @@ - + @@ -2467,7 +2439,7 @@ - + @@ -2475,7 +2447,7 @@ - + @@ -2488,7 +2460,7 @@ - + @@ -2498,7 +2470,7 @@ - + @@ -2506,7 +2478,7 @@ - + @@ -2519,7 +2491,7 @@ - + @@ -2529,7 +2501,7 @@ - + @@ -2537,7 +2509,7 @@ - + @@ -2550,7 +2522,7 @@ - + @@ -2560,7 +2532,7 @@ - + @@ -2568,7 +2540,7 @@ - + @@ -2581,7 +2553,7 @@ - + @@ -2591,7 +2563,7 @@ - + @@ -2599,7 +2571,7 @@ - + @@ -2612,7 +2584,7 @@ - + @@ -2622,7 +2594,7 @@ - + @@ -2630,7 +2602,7 @@ - + @@ -2643,38 +2615,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2684,7 +2625,7 @@ - + @@ -2692,7 +2633,7 @@ - + @@ -2705,7 +2646,7 @@ - + @@ -2715,7 +2656,7 @@ - + @@ -2723,7 +2664,7 @@ - + @@ -2736,7 +2677,7 @@ - + @@ -2746,7 +2687,7 @@ - + @@ -2754,7 +2695,7 @@ - + @@ -2767,7 +2708,7 @@ - + @@ -2777,7 +2718,7 @@ - + @@ -2785,7 +2726,7 @@ - + @@ -2798,7 +2739,7 @@ - + @@ -2808,7 +2749,7 @@ - + @@ -2816,7 +2757,7 @@ - + @@ -2827,15 +2768,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + @@ -2843,96 +2814,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2945,135 +2827,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -3083,10 +2837,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -3100,7 +2898,175 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3113,7 +3079,7 @@ - + @@ -3134,7 +3100,7 @@ - + @@ -3142,77 +3108,22 @@ - + - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -3223,12 +3134,47 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3247,54 +3193,32 @@ - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -3302,14 +3226,14 @@ - + - + @@ -3322,7 +3246,54 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3338,18 +3309,6 @@ - - - - - - - - - - - - @@ -3362,6 +3321,18 @@ + + + + + + + + + + + + diff --git a/AutomatedTesting/ScriptCanvas/lambdademo.scriptcanvas b/AutomatedTesting/ScriptCanvas/lambdademo.scriptcanvas index d1ad940ccf..ec4b161711 100644 --- a/AutomatedTesting/ScriptCanvas/lambdademo.scriptcanvas +++ b/AutomatedTesting/ScriptCanvas/lambdademo.scriptcanvas @@ -3,12 +3,12 @@ - + - + @@ -16,7 +16,7 @@ - + @@ -434,7 +434,7 @@ - + @@ -483,49 +483,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -565,46 +522,16 @@ - - - - - - - - - - - - - - - - + - + - - - - - - - - + - - - - - - - - - - + + @@ -613,632 +540,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1656,7 +958,7 @@ - + @@ -1705,6 +1007,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1744,58 +1085,666 @@ - + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1805,7 +1754,7 @@ - + @@ -1813,7 +1762,7 @@ - + @@ -1826,7 +1775,7 @@ - + @@ -1836,7 +1785,7 @@ - + @@ -1844,7 +1793,7 @@ - + @@ -1857,7 +1806,7 @@ - + @@ -1867,7 +1816,7 @@ - + @@ -1875,7 +1824,7 @@ - + @@ -1888,7 +1837,7 @@ - + @@ -1898,7 +1847,7 @@ - + @@ -1906,7 +1855,7 @@ - + @@ -1919,7 +1868,7 @@ - + @@ -1929,7 +1878,7 @@ - + @@ -1937,7 +1886,7 @@ - + @@ -1950,7 +1899,7 @@ - + @@ -1960,7 +1909,7 @@ - + @@ -1968,7 +1917,7 @@ - + @@ -1979,15 +1928,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + @@ -1995,329 +1974,10 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2336,12 +1996,158 @@ + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2351,8 +2157,8 @@ - - + + @@ -2360,26 +2166,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + diff --git a/AutomatedTesting/ScriptCanvas/s3demo.scriptcanvas b/AutomatedTesting/ScriptCanvas/s3demo.scriptcanvas index c87c647d60..925cc9da26 100644 --- a/AutomatedTesting/ScriptCanvas/s3demo.scriptcanvas +++ b/AutomatedTesting/ScriptCanvas/s3demo.scriptcanvas @@ -3,12 +3,12 @@ - + - + @@ -16,2340 +16,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2967,7 +634,333 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3073,7 +1066,7 @@ - + @@ -3081,14 +1074,14 @@ - + - + @@ -3126,7 +1119,46 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3161,16 +1193,46 @@ - + + + + + + + + + + + + + + + + - + - + + + + + + + + - + + + + + + + + + + - @@ -3179,172 +1241,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -3962,7 +1859,1189 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4024,11 +3103,7 @@ - - - - - + @@ -4139,11 +3214,896 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -4153,7 +4113,7 @@ - + @@ -4161,7 +4121,7 @@ - + @@ -4174,7 +4134,7 @@ - + @@ -4184,7 +4144,7 @@ - + @@ -4192,7 +4152,7 @@ - + @@ -4205,7 +4165,7 @@ - + @@ -4215,7 +4175,7 @@ - + @@ -4223,7 +4183,7 @@ - + @@ -4236,7 +4196,7 @@ - + @@ -4246,7 +4206,7 @@ - + @@ -4254,7 +4214,7 @@ - + @@ -4267,7 +4227,7 @@ - + @@ -4277,7 +4237,7 @@ - + @@ -4285,7 +4245,7 @@ - + @@ -4298,7 +4258,7 @@ - + @@ -4308,7 +4268,7 @@ - + @@ -4316,7 +4276,7 @@ - + @@ -4329,7 +4289,7 @@ - + @@ -4339,7 +4299,7 @@ - + @@ -4347,7 +4307,7 @@ - + @@ -4360,7 +4320,7 @@ - + @@ -4370,7 +4330,7 @@ - + @@ -4378,7 +4338,7 @@ - + @@ -4391,38 +4351,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -4432,7 +4361,7 @@ - + @@ -4440,7 +4369,7 @@ - + @@ -4453,7 +4382,7 @@ - + @@ -4463,7 +4392,7 @@ - + @@ -4471,7 +4400,7 @@ - + @@ -4484,7 +4413,7 @@ - + @@ -4494,7 +4423,7 @@ - + @@ -4502,7 +4431,7 @@ - + @@ -4515,7 +4444,7 @@ - + @@ -4525,7 +4454,7 @@ - + @@ -4533,7 +4462,7 @@ - + @@ -4544,15 +4473,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + @@ -4560,7 +4519,7 @@ - + @@ -4568,301 +4527,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -4879,6 +4544,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -4888,30 +4574,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - + @@ -4922,15 +4585,17 @@ - - - + + + + - - - + + + + @@ -4938,33 +4603,41 @@ - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + @@ -4974,28 +4647,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -5004,148 +4655,41 @@ - - + + - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5164,11 +4708,19 @@ + + + + + + + + + - - - - + + + @@ -5178,6 +4730,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5187,20 +4889,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + @@ -5212,7 +5163,7 @@ - + @@ -5220,11 +5171,19 @@ - + - + + + + + + + + +