You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by GitBox <gi...@apache.org> on 2018/03/03 02:16:30 UTC

[GitHub] mrutkows closed pull request #760: WIP: rewrite deploymentreader_test.go

mrutkows closed pull request #760: WIP: rewrite deploymentreader_test.go 
URL: https://github.com/apache/incubator-openwhisk-wskdeploy/pull/760
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/deployers/deploymentreader.go b/deployers/deploymentreader.go
index dd15c8bc..4b331b3f 100644
--- a/deployers/deploymentreader.go
+++ b/deployers/deploymentreader.go
@@ -18,10 +18,10 @@
 package deployers
 
 import (
+	"fmt"
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
 	"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
-	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskenv"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
@@ -46,7 +46,6 @@ func (reader *DeploymentReader) HandleYaml() error {
 
 	deploymentParser := parsers.NewYAMLParser()
 	deployment, err := deploymentParser.ParseDeployment(dep.DeploymentPath)
-
 	reader.DeploymentDescriptor = deployment
 
 	return err
@@ -68,41 +67,58 @@ func (reader *DeploymentReader) BindAssets() error {
 	return nil
 }
 
-func (reader *DeploymentReader) bindPackageInputsAndAnnotations() error {
-
+func (reader *DeploymentReader) getPackageMap() map[string]parsers.Package {
 	packMap := make(map[string]parsers.Package)
 
-	if reader.DeploymentDescriptor.GetProject().Packages == nil {
-		if reader.DeploymentDescriptor.Packages != nil {
+	//fmt.Println(fmt.Sprintf("length[%s]=%v", "packages",len(reader.DeploymentDescriptor.Packages) ))
+	//fmt.Println(fmt.Sprintf("length[%s]=%v", "application",len(reader.DeploymentDescriptor.Application.Packages) ))
+	//fmt.Println(fmt.Sprintf("length[%s]=%v", "project.packages",len(reader.DeploymentDescriptor.GetProject().Packages) ))
+
+	// Create local packages list from Deployment file for us to iterate over
+	// either from top-level or under project schema
+	if len(reader.DeploymentDescriptor.GetProject().Packages) == 0 {
+
+		if len(reader.DeploymentDescriptor.Packages) > 0 {
+			wskprint.PrintOpenWhiskVerbose(true,
+				fmt.Sprintf("Deployment file [%s]: Found top-level packages",
+					reader.DeploymentDescriptor.Filepath,
+					reader.DeploymentDescriptor.Filepath))
 			for packName, depPacks := range reader.DeploymentDescriptor.Packages {
 				depPacks.Packagename = packName
 				packMap[packName] = depPacks
 			}
 		}
 	} else {
+		wskprint.PrintOpenWhiskVerbose(true,
+			fmt.Sprintf("Deployment file [%s]: Found packages under project [%s]",
+				reader.DeploymentDescriptor.Filepath, reader.DeploymentDescriptor.GetProject().Name))
 		for packName, depPacks := range reader.DeploymentDescriptor.GetProject().Packages {
 			depPacks.Packagename = packName
 			packMap[packName] = depPacks
 		}
 	}
 
+	return packMap
+}
+
+func (reader *DeploymentReader) bindPackageInputsAndAnnotations() error {
+
+	// retrieve "packages" list from depl. file; either at top-level or under "Project" schema
+	packMap := reader.getPackageMap()
+
 	for packName, pack := range packMap {
 
 		serviceDeployPack := reader.serviceDeployer.Deployment.Packages[packName]
 
 		if serviceDeployPack == nil {
-			warningString := wski18n.T(
-				wski18n.ID_ERR_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X,
-				map[string]interface{}{
-					wski18n.KEY_KEY:  wski18n.PACKAGE_NAME,
-					wski18n.KEY_NAME: packName})
-			wskprint.PrintlnOpenWhiskWarning(warningString)
+			displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_PACKAGE, packName)
 			break
 		}
 
-		keyValArr := make(whisk.KeyValueArr, 0)
-
 		if len(pack.Inputs) > 0 {
+
+			keyValArr := make(whisk.KeyValueArr, 0)
+
 			for name, input := range pack.Inputs {
 				var keyVal whisk.KeyValue
 
@@ -144,13 +160,7 @@ func (reader *DeploymentReader) bindPackageInputsAndAnnotations() error {
 					}
 				}
 				if !keyExistsInManifest {
-					warningString := wski18n.T(
-						wski18n.ID_ERR_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X,
-						map[string]interface{}{
-							wski18n.KEY_KEY:  parsers.YAML_KEY_ANNOTATION,
-							wski18n.KEY_NAME: name})
-					wskprint.PrintlnOpenWhiskWarning(warningString)
-					return wskderrors.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, warningString)
+					displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_ANNOTATION, name)
 				}
 			}
 		}
@@ -160,30 +170,15 @@ func (reader *DeploymentReader) bindPackageInputsAndAnnotations() error {
 
 func (reader *DeploymentReader) bindActionInputsAndAnnotations() error {
 
-	packMap := make(map[string]parsers.Package)
-
-	if reader.DeploymentDescriptor.GetProject().Packages == nil {
-		if reader.DeploymentDescriptor.Packages != nil {
-			for packName, depPacks := range reader.DeploymentDescriptor.Packages {
-				depPacks.Packagename = packName
-				packMap[packName] = depPacks
-			}
-		}
-		//else {
-		//		packMap[reader.DeploymentDescriptor.Package.Packagename] = reader.DeploymentDescriptor.Package
-		//	}
-	} else {
-		for packName, depPacks := range reader.DeploymentDescriptor.GetProject().Packages {
-			depPacks.Packagename = packName
-			packMap[packName] = depPacks
-		}
-	}
+	// retrieve "packages" list from depl. file; either at top-level or under "Project" schema
+	packMap := reader.getPackageMap()
 
 	for packName, pack := range packMap {
 
 		serviceDeployPack := reader.serviceDeployer.Deployment.Packages[packName]
 
 		if serviceDeployPack == nil {
+			displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_PACKAGE, packName)
 			break
 		}
 
@@ -214,6 +209,8 @@ func (reader *DeploymentReader) bindActionInputsAndAnnotations() error {
 						}
 					}
 					wskAction.Action.Parameters = keyValArr
+				} else {
+					displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_ACTION, actionName)
 				}
 			}
 
@@ -234,14 +231,11 @@ func (reader *DeploymentReader) bindActionInputsAndAnnotations() error {
 						}
 					}
 					if !keyExistsInManifest {
-						errMsg := wski18n.T(
-							wski18n.ID_ERR_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X,
-							map[string]interface{}{
-								wski18n.KEY_KEY:  parsers.YAML_KEY_ANNOTATION,
-								wski18n.KEY_NAME: name})
-						return wskderrors.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, errMsg)
+						displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_ANNOTATION, name)
 					}
 				}
+			} else {
+				displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_ACTION, actionName)
 			}
 		}
 	}
@@ -250,31 +244,27 @@ func (reader *DeploymentReader) bindActionInputsAndAnnotations() error {
 
 func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() error {
 
-	packMap := make(map[string]parsers.Package)
-
-	if reader.DeploymentDescriptor.GetProject().Packages == nil {
-		if reader.DeploymentDescriptor.Packages != nil {
-			for packName, depPacks := range reader.DeploymentDescriptor.Packages {
-				depPacks.Packagename = packName
-				packMap[packName] = depPacks
-			}
-		}
-	} else {
-		for packName, depPacks := range reader.DeploymentDescriptor.GetProject().Packages {
-			depPacks.Packagename = packName
-			packMap[packName] = depPacks
-		}
-	}
+	// retrieve "packages" list from depl. file; either at top-level or under "Project" schema
+	packMap := reader.getPackageMap()
 
+	// go through all packages in our local package map
 	for _, pack := range packMap {
 
+		//fmt.Println(utils.ConvertMapToJSONString("BEFORE: ["+pack.Packagename+"]", pack))
+
 		serviceDeployment := reader.serviceDeployer.Deployment
 
+		// for each Deployment file Trigger found in the current package
 		for triggerName, trigger := range pack.Triggers {
 
-			keyValArr := make(whisk.KeyValueArr, 0)
+			//fmt.Println(utils.ConvertMapToJSONString("BEFORE: ["+triggerName+"]", trigger))
 
+			// If the Deployment file trigger has Input values we will attempt to bind them
 			if len(trigger.Inputs) > 0 {
+
+				keyValArr := make(whisk.KeyValueArr, 0)
+
+				// Interpolate values before we bind
 				for name, input := range trigger.Inputs {
 					var keyVal whisk.KeyValue
 
@@ -284,6 +274,7 @@ func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() error {
 					keyValArr = append(keyValArr, keyVal)
 				}
 
+				// See if a matching Trigger (name) exists in manifest
 				if wskTrigger, exists := serviceDeployment.Triggers[triggerName]; exists {
 
 					depParams := make(map[string]whisk.KeyValue)
@@ -306,6 +297,8 @@ func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() error {
 						}
 					}
 					wskTrigger.Parameters = keyValArr
+				} else {
+					displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_TRIGGER, triggerName)
 				}
 			}
 
@@ -326,14 +319,11 @@ func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() error {
 						}
 					}
 					if !keyExistsInManifest {
-						errMsg := wski18n.T(
-							wski18n.ID_ERR_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X,
-							map[string]interface{}{
-								wski18n.KEY_KEY:  parsers.YAML_KEY_ANNOTATION,
-								wski18n.KEY_NAME: name})
-						return wskderrors.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, errMsg)
+						displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_ANNOTATION, name)
 					}
 				}
+			} else {
+				displayEntityNotFoundInDeploymentWarning(parsers.YAML_KEY_TRIGGER, triggerName)
 			}
 
 		}
@@ -341,3 +331,21 @@ func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() error {
 	}
 	return nil
 }
+
+func displayEntityNotFoundInDeploymentWarning(entityType string, entityName string) {
+	warnMsg := wski18n.T(
+		wski18n.ID_WARN_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X,
+		map[string]interface{}{
+			wski18n.KEY_KEY:  entityType,
+			wski18n.KEY_NAME: entityName})
+	wskprint.PrintOpenWhiskWarning(warnMsg)
+}
+
+func displayEntityFoundInDeploymentInfi(entityType string, entityName string) {
+	infoMsg := wski18n.T(
+		wski18n.ID_WARN_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X,
+		map[string]interface{}{
+			wski18n.KEY_KEY:  entityType,
+			wski18n.KEY_NAME: entityName})
+	wskprint.PrintOpenWhiskVerbose(utils.Flags.Verbose, infoMsg)
+}
diff --git a/deployers/deploymentreader_test.go b/deployers/deploymentreader_test.go
index d5312d1e..466654f4 100644
--- a/deployers/deploymentreader_test.go
+++ b/deployers/deploymentreader_test.go
@@ -20,8 +20,10 @@
 package deployers
 
 import (
+	"fmt"
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
 	"github.com/stretchr/testify/assert"
+	"os"
 	"reflect"
 	"testing"
 )
@@ -31,6 +33,16 @@ var dr *DeploymentReader
 var deployment_file = "../tests/usecases/github/deployment.yaml"
 var manifest_file = "../tests/usecases/github/manifest.yaml"
 
+const (
+	// local error messages
+	TEST_ERROR_DEPLOYMENT_PARSE_FAILURE        = "Deployment [%s]: Failed to parse."
+	TEST_ERROR_DEPLOYMENT_BIND_TRIGGER_FAILURE = "Deployment [%s]: Failed to bind Trigger."
+	TEST_ERROR_DEPLOYMENT_FIND_PROJECT         = "Deployment [%s]: Failed to find Project [%s]."
+	TEST_ERROR_DEPLOYMENT_FIND_PACKAGES        = "Deployment [%s]: Failed to find Packages for project [%s]."
+	TEST_ERROR_DEPLOYMENT_FIND_PACKAGE         = "Deployment [%s]: Failed to find Package [%s]."
+	TEST_ERROR_DEPLOYMENT_FIND_TRIGGER         = "Deployment [%s]: Failed to find Trigger [%s]."
+)
+
 func init() {
 	sd = NewServiceDeployer()
 	sd.DeploymentPath = deployment_file
@@ -45,27 +57,80 @@ func TestDeploymentReader_HandleYaml(t *testing.T) {
 	assert.NotNil(t, dr.DeploymentDescriptor.GetProject().Packages["GitHubCommits"], "DeploymentReader handle deployment yaml failed.")
 }
 
-// TODO(750) remove this unused test?
-func TestDeployerCheck(t *testing.T) {
-	sd := NewServiceDeployer()
-	sd.DeploymentPath = "../tests/usecases/badyaml/deployment.yaml"
-	sd.ManifestPath = "../tests/usecases/badyaml/manifest.yaml"
-	// The system will exit thus the test will fail.
-	// sd.Check()
+func createAnnotationArray(t *testing.T, kv whisk.KeyValue) whisk.KeyValueArr {
+	kva := make(whisk.KeyValueArr, 0)
+	kva = append(kva, kv)
+	return kva
 }
 
-func TestDeploymentReader_bindTrigger(t *testing.T) {
-	//init variables
+// Create a ServiceDeployer with a "dummy" DeploymentPlan (i.e., simulate a fake manifest parse)
+// load the deployment YAMl into dReader.DeploymentDescriptor
+// bind the deployment inputs and annotations to the named Trigger from Deployment to Manifest YAML
+func testLoadAndBindDeploymentYAML(t *testing.T, path string, triggerName string, kv whisk.KeyValue) (*ServiceDeployer, *DeploymentReader) {
+
 	sDeployer := NewServiceDeployer()
-	sDeployer.DeploymentPath = "../tests/dat/deployment-deploymentreader-test.yml"
-	sDeployer.Deployment.Triggers["locationUpdate"] = new(whisk.Trigger)
+	sDeployer.DeploymentPath = path
 
-	//parse deployment and bind triggers input and annotation
+	// Create Trigger for "bind" function to use (as a Manifest parse would have created)
+	sDeployer.Deployment.Triggers[triggerName] = new(whisk.Trigger)
+	sDeployer.Deployment.Triggers[triggerName].Annotations = createAnnotationArray(t, kv)
+
+	//parse deployment and bind triggers input and annotations
 	dReader := NewDeploymentReader(sDeployer)
-	dReader.HandleYaml()
-	dReader.bindTriggerInputsAndAnnotations()
+	err := dReader.HandleYaml()
+
+	// DEBUG() Uncomment to display initial DeploymentDescriptor (manifest, deployemnt befopre binding)
+	//fmt.Println(utils.ConvertMapToJSONString("BEFORE: dReader.DeploymentDescriptor", dReader.DeploymentDescriptor))
+	//fmt.Println(utils.ConvertMapToJSONString("BEFORE: sDeployer.Deployment", sDeployer.Deployment))
+
+	// test load of deployment YAML
+	if err != nil {
+		assert.Fail(t, fmt.Sprintf(TEST_ERROR_DEPLOYMENT_PARSE_FAILURE, sDeployer.DeploymentPath))
+	}
+
+	// Test that we can bind Triggers and Annotations
+	err = dReader.bindTriggerInputsAndAnnotations()
+
+	// test load of deployment YAML
+	if err != nil {
+		fmt.Println(err)
+		assert.Fail(t, fmt.Sprintf(TEST_ERROR_DEPLOYMENT_BIND_TRIGGER_FAILURE, sDeployer.DeploymentPath))
+	}
+
+	// DEBUG() Uncomment to display resultant DeploymentDescriptor (manifest + deployment file binding)
+	//fmt.Println(utils.ConvertMapToJSONString("AFTER: dReader.DeploymentDescriptor", dReader.DeploymentDescriptor))
+	//fmt.Println(utils.ConvertMapToJSONString("AFTER: sDeployer.Deployment", sDeployer.Deployment))
+
+	return sDeployer, dReader
+}
+
+func TestDeploymentReader_ProjectBindTrigger(t *testing.T) {
+
+	//init variables
+	TEST_DATA := "../tests/dat/deployment_deploymentreader_project_bind_trigger.yml"
+	TEST_TRIGGER := "locationUpdate"
+	TEST_PROJECT := "AppWithTriggerRule"
+	TEST_ANNOTATION_KEY := "bbb"
+	// Create an annotation (in manifest representation) with key we expect, with value that should be overwritten
+	TEST_ANNOTATION := whisk.KeyValue{TEST_ANNOTATION_KEY, "foo"}
+
+	// create ServicedEployer
+	sDeployer, dReader := testLoadAndBindDeploymentYAML(t, TEST_DATA, TEST_TRIGGER, TEST_ANNOTATION)
+
+	// test Project exists with expected name in Deployment file
+	projectNameDeploy := dReader.DeploymentDescriptor.GetProject().Name
+	if projectNameDeploy != TEST_PROJECT {
+		assert.Fail(t, fmt.Sprintf(TEST_ERROR_DEPLOYMENT_FIND_PROJECT, TEST_PROJECT))
+	}
+
+	// test that the Project has Packages
+	if len(dReader.DeploymentDescriptor.GetProject().Packages) == 0 {
+		assert.Fail(t, fmt.Sprintf(TEST_ERROR_DEPLOYMENT_FIND_PACKAGES, TEST_PROJECT))
+	}
+
+	trigger := sDeployer.Deployment.Triggers[TEST_TRIGGER]
 
-	trigger := sDeployer.Deployment.Triggers["locationUpdate"]
+	// test that Input values from dReader.DeploymentDescriptor wore "bound" onto sDeployer.Deployment
 	for _, param := range trigger.Parameters {
 		switch param.Key {
 		case "name":
@@ -77,9 +142,12 @@ func TestDeploymentReader_bindTrigger(t *testing.T) {
 
 		}
 	}
+
+	// test that Annotations from dReader.DeploymentDescriptor wore "bound" onto sDeployer.Deployment
 	for _, annos := range trigger.Annotations {
 		switch annos.Key {
-		case "bbb":
+		case TEST_ANNOTATION_KEY:
+			// Manifest's value should be overwritten
 			assert.Equal(t, "this is an annotation", annos.Value, "Failed to set annotations")
 		default:
 			assert.Fail(t, "Failed to get annotation key")
@@ -88,53 +156,66 @@ func TestDeploymentReader_bindTrigger(t *testing.T) {
 	}
 }
 
-func TestDeploymentReader_bindTrigger_packages(t *testing.T) {
+func TestDeploymentReader_PackagesBindTrigger(t *testing.T) {
 	//init variables
-	sDeployer := NewServiceDeployer()
-	sDeployer.DeploymentPath = "../tests/dat/deployment-deploymentreader-test-packages.yml"
-	sDeployer.Deployment.Triggers["locationUpdate"] = new(whisk.Trigger)
+	TEST_DATA := "../tests/dat/deployment_deploymentreader_packages_bind_trigger.yml"
+	//TEST_PACKAGE := "triggerrule"
+	TEST_TRIGGER := "locationUpdate"
+	TEST_ANOTATION_KEY := "bbb"
+	// Create an annotation (in manifest representation) with key we expect, with value that should be overwritten
+	TEST_ANNOTATION := whisk.KeyValue{TEST_ANOTATION_KEY, "bar"}
 
-	//parse deployment and bind triggers input and annotation
-	dReader := NewDeploymentReader(sDeployer)
-	dReader.HandleYaml()
-	dReader.bindTriggerInputsAndAnnotations()
+	fmt.Println("TEST: " + os.Getenv("PKGDIR"))
 
-	trigger := sDeployer.Deployment.Triggers["locationUpdate"]
-	for _, param := range trigger.Parameters {
-		switch param.Key {
-		case "name":
-			assert.Equal(t, "Bernie", param.Value, "Failed to set inputs")
-		case "place":
-			assert.Equal(t, "DC", param.Value, "Failed to set inputs")
-		default:
-			assert.Fail(t, "Failed to get inputs key")
+	sDeployer, _ := testLoadAndBindDeploymentYAML(t, TEST_DATA, TEST_TRIGGER, TEST_ANNOTATION)
+
+	// Test that
+	if trigger, ok := sDeployer.Deployment.Triggers[TEST_TRIGGER]; ok {
+
+		for _, param := range trigger.Parameters {
 
+			//dbg := utils.ConvertMapToJSONString("value", value)
+			//fmt.Println(dbg)
+			switch param.Key {
+			case "name":
+				assert.Equal(t, "Bernie", param.Value, "Failed to set inputs")
+			case "place":
+				assert.Equal(t, "DC", param.Value, "Failed to set inputs")
+			default:
+				assert.Fail(t, "Failed to get inputs key")
+
+			}
 		}
-	}
-	for _, annos := range trigger.Annotations {
-		switch annos.Key {
-		case "bbb":
-			assert.Equal(t, "this is an annotation", annos.Value, "Failed to set annotations")
-		default:
-			assert.Fail(t, "Failed to get annotation key")
+		for _, annos := range trigger.Annotations {
+			switch annos.Key {
+			case "bbb":
+				assert.Equal(t, "this is an annotation", annos.Value, "Failed to set annotations")
+			default:
+				assert.Fail(t, "Failed to get annotation key")
 
+			}
 		}
+	} else {
+		assert.Fail(t, fmt.Sprintf(TEST_ERROR_DEPLOYMENT_FIND_TRIGGER,
+			sDeployer.DeploymentPath,
+			TEST_TRIGGER))
 	}
 }
 
-// TODO(749) - rewrite test to remove "package"
-//func TestDeploymentReader_bindTrigger_package(t *testing.T) {
+// TODO() XXX this test need to be rewritten perhaps
+//func TestDeploymentReader_bindTrigger_packages_2(t *testing.T) {
 //	//init variables
 //	sDeployer := NewServiceDeployer()
-//	sDeployer.DeploymentPath = "../tests/dat/deployment-deploymentreader-test-package.yml"
+//	sDeployer.DeploymentPath = "../tests/dat/deployment_deploymentreader_packages_bind_trigger.yml"
 //	sDeployer.Deployment.Triggers["locationUpdate"] = new(whisk.Trigger)
 //
 //	//parse deployment and bind triggers input and annotation
 //	dReader := NewDeploymentReader(sDeployer)
 //	dReader.HandleYaml()
-//	dReader.bindTriggerInputsAndAnnotations()
 //
-//	assert.Equal(t, "triggerrule", dReader.DeploymentDescriptor.Package.Packagename)
+//	//fmt.Println(utils.ConvertMapToJSONString("BEFORE: dReader.DeploymentDescriptor", dReader.DeploymentDescriptor))
+//	dReader.bindTriggerInputsAndAnnotations()
+//	//fmt.Println(utils.ConvertMapToJSONString("AFTER: dReader.DeploymentDescriptor", dReader.DeploymentDescriptor))
 //	trigger := sDeployer.Deployment.Triggers["locationUpdate"]
 //	for _, param := range trigger.Parameters {
 //		switch param.Key {
diff --git a/deployers/servicedeployer.go b/deployers/servicedeployer.go
index 7e96df27..7c155193 100644
--- a/deployers/servicedeployer.go
+++ b/deployers/servicedeployer.go
@@ -138,7 +138,7 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() error {
 		// Project Name in manifest/deployment file is mandatory for managed deployments
 		if deployer.ProjectName == "" {
 			errmsg := wski18n.T(wski18n.ID_ERR_KEY_MISSING_X_key_X,
-				map[string]interface{}{wski18n.KEY_KEY: wski18n.PROJECT_NAME})
+				map[string]interface{}{wski18n.KEY_KEY: wski18n.NAME_PROJECT})
 
 			return wskderrors.NewYAMLFileFormatError(manifest.Filepath, errmsg)
 		}
diff --git a/parsers/yamlparser.go b/parsers/yamlparser.go
index a9f68065..dd6ae2ea 100644
--- a/parsers/yamlparser.go
+++ b/parsers/yamlparser.go
@@ -26,7 +26,7 @@ import (
 // DO NOT translate
 const (
 	YAML_KEY_ACTION      = "action"
-	YAML_KEY_ANNOTATION  = "annotoation"
+	YAML_KEY_ANNOTATION  = "annotation"
 	YAML_KEY_API         = "api"
 	YAML_KEY_FEED        = "feed"
 	YAML_KEY_MANIFEST    = "manifest"
diff --git a/tests/dat/deployment-deploymentreader-test-package.yml b/tests/dat/deployment-deploymentreader-test-package.yml
deleted file mode 100644
index 15c5d4e9..00000000
--- a/tests/dat/deployment-deploymentreader-test-package.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more contributor
-# license agreements.  See the NOTICE file distributed with this work for additional
-# information regarding copyright ownership.  The ASF licenses this file to you
-# under the Apache License, Version 2.0 (the # "License"); you may not use this
-# file except in compliance with the License.  You may obtain a copy of the License
-# at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software distributed
-# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-# CONDITIONS OF ANY KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations under the License.
-#
-
-package:
-      name: triggerrule
-      actions:
-        greeting:
-          inputs:
-            name: Amy
-            place: Paris
-          annotations:
-            aaa: this is an annotation
-      triggers:
-        locationUpdate:
-          inputs:
-            name: Bernie
-            place: DC
-          annotations:
-            bbb: this is an annotation
diff --git a/tests/dat/deployment-deploymentreader-test-packages.yml b/tests/dat/deployment_deploymentreader_packages_bind_trigger.yml
similarity index 69%
rename from tests/dat/deployment-deploymentreader-test-packages.yml
rename to tests/dat/deployment_deploymentreader_packages_bind_trigger.yml
index 6c76f03a..31749b0c 100644
--- a/tests/dat/deployment-deploymentreader-test-packages.yml
+++ b/tests/dat/deployment_deploymentreader_packages_bind_trigger.yml
@@ -15,18 +15,18 @@
 #
 
 packages:
-    triggerrule:
-      actions:
-        greeting:
-          inputs:
-            name: Amy
-            place: Paris
-          annotations:
-            aaa: this is an annotation
-      triggers:
-        locationUpdate:
-          inputs:
-            name: Bernie
-            place: DC
-          annotations:
-            bbb: this is an annotation
+  triggerrule:
+    actions:
+      greeting:
+        inputs:
+          name: Amy
+          place: Paris
+        annotations:
+          aaa: this is an annotation
+    triggers:
+      locationUpdate:
+        inputs:
+          name: Bernie
+          place: DC
+        annotations:
+          bbb: this is an annotation
diff --git a/tests/dat/deployment-deploymentreader-test.yml b/tests/dat/deployment_deploymentreader_project_bind_trigger.yml
similarity index 98%
rename from tests/dat/deployment-deploymentreader-test.yml
rename to tests/dat/deployment_deploymentreader_project_bind_trigger.yml
index fb651349..54d6fdfe 100644
--- a/tests/dat/deployment-deploymentreader-test.yml
+++ b/tests/dat/deployment_deploymentreader_project_bind_trigger.yml
@@ -14,7 +14,7 @@
 # specific language governing permissions and limitations under the License.
 #
 
-application:
+project:
   name: AppWithTriggerRule
   packages:
     triggerrule:
diff --git a/tests/src/integration/validate-action-annotations/deployment-with-invalid-annotations.yaml b/tests/src/integration/validate-action-annotations/deployment-with-invalid-annotations.yaml
deleted file mode 100644
index cd3168b5..00000000
--- a/tests/src/integration/validate-action-annotations/deployment-with-invalid-annotations.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more contributor
-# license agreements.  See the NOTICE file distributed with this work for additional
-# information regarding copyright ownership.  The ASF licenses this file to you
-# under the Apache License, Version 2.0 (the # "License"); you may not use this
-# file except in compliance with the License.  You may obtain a copy of the License
-# at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software distributed
-# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-# CONDITIONS OF ANY KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations under the License.
-#
-
-project:
-    name: TestActionAnnotations
-    packages:
-        packageActionAnnotations:
-            actions:
-                helloworld:
-                    inputs:
-                        name: Amy
-                        place: New York
-                    annotations:
-                        action_annotation_5: this is annotation 5
-                        action_annotation_6: this is annotation 6
-        packageActionAnnotationsWithWebAction:
-            actions:
-                helloworld:
-                    inputs:
-                        name: Amy
-                        place: New York
-                    annotations:
-                        action_annotation_5: this is annotation 5
-                        action_annotation_6: this is annotation 6
-                        web-export: true
diff --git a/tests/src/integration/validate-action-annotations/validate-action-annotations_test.go b/tests/src/integration/validate-action-annotations/validate-action-annotations_test.go
index 78f86fb4..842c4e8e 100644
--- a/tests/src/integration/validate-action-annotations/validate-action-annotations_test.go
+++ b/tests/src/integration/validate-action-annotations/validate-action-annotations_test.go
@@ -37,11 +37,3 @@ func TestActionAnnotations(t *testing.T) {
 	_, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
 	assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
 }
-
-func TestInvalidActionAnnotations(t *testing.T) {
-	manifestPath := os.Getenv("GOPATH") + path + "manifest.yaml"
-	deploymentPath := os.Getenv("GOPATH") + path + "deployment-with-invalid-annotations.yaml"
-	wskdeploy := common.NewWskdeploy()
-	_, err := wskdeploy.Deploy(manifestPath, deploymentPath)
-	assert.NotNil(t, err, "Failed to validate invalid annotations in deployment file")
-}
diff --git a/utils/conversion.go b/utils/conversion.go
index e6c1e345..30d49e4e 100644
--- a/utils/conversion.go
+++ b/utils/conversion.go
@@ -57,7 +57,6 @@ func PrintTypeInfo(name string, value interface{}) {
 }
 
 func ConvertMapToJSONString(name string, mapIn interface{}) string {
-	PrintTypeInfo(name, mapIn)
 	strMapOut, _ := json.MarshalIndent(mapIn, "", "  ")
-	return string(strMapOut)
+	return fmt.Sprintf("%s: %s", name, string(strMapOut))
 }
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
index 564ef274..3949a336 100644
--- a/wski18n/i18n_ids.go
+++ b/wski18n/i18n_ids.go
@@ -29,18 +29,18 @@ const (
 	DEPLOYMENT         = "deployment"
 	CONFIGURATION      = "Configuration"
 	MANIFEST           = "manifest"
-	NAME_ACTION        = "Action Name"
-	NAME_FEED          = "Feed Name"
-	NAME_RULE          = "Rule Name"
-	NAME_RUNTIME       = "Runtime Name"
-	NAME_TRIGGER       = "Trigger Name"
+	NAME_ACTION        = "action Name"
+	NAME_FEED          = "feed Name"
+	NAME_PACKAGE       = "package name"
+	NAME_PROJECT       = "project name"
+	NAME_RULE          = "rule Name"
+	NAME_RUNTIME       = "runtime Name"
+	NAME_TRIGGER       = "trigger Name"
 	NAMESPACES         = "Namespaces"
 	PACKAGE_BINDING    = "package binding"
 	PACKAGE_LICENSE    = "package license"
-	PACKAGE_NAME       = "package name"
 	PACKAGE_VERSION    = "package version"
 	PACKAGES           = "Packages"
-	PROJECT_NAME       = "project name"
 	REGISTRY           = "registry"
 	REGISTRY_URL       = "registry URL"
 	REPOSITORY         = "repository"
@@ -61,15 +61,15 @@ const (
 	ID_MSG_PREFIX_WARNING = "msg_prefix_warning" // "Warning"
 
 	// Cobra command descriptions
-	ID_CMD_DESC_LONG_PUBLISH      = "msg_cmd_desc_long_publish"
-	ID_CMD_DESC_LONG_REPORT       = "msg_cmd_desc_long_report"
-	ID_CMD_DESC_LONG_ROOT         = "msg_cmd_desc_long_root"
-	ID_CMD_DESC_SHORT_ADD         = "msg_cmd_desc_short_add"
-	ID_CMD_DESC_SHORT_ADD_X_key_X = "msg_cmd_desc_short_add_entity"
-	ID_CMD_DESC_SHORT_PUBLISH     = "msg_cmd_desc_short_publish"
-	ID_CMD_DESC_SHORT_REPORT      = "msg_cmd_desc_short_report"
-	ID_CMD_DESC_SHORT_ROOT        = "msg_cmd_desc_short_root"
-	ID_CMD_DESC_SHORT_VERSION     = "msg_cmd_desc_short_version"
+	//ID_CMD_DESC_LONG_PUBLISH      = "msg_cmd_desc_long_publish"
+	ID_CMD_DESC_LONG_REPORT = "msg_cmd_desc_long_report"
+	ID_CMD_DESC_LONG_ROOT   = "msg_cmd_desc_long_root"
+	//ID_CMD_DESC_SHORT_ADD         = "msg_cmd_desc_short_add"
+	//ID_CMD_DESC_SHORT_ADD_X_key_X = "msg_cmd_desc_short_add_entity"
+	//ID_CMD_DESC_SHORT_PUBLISH     = "msg_cmd_desc_short_publish"
+	ID_CMD_DESC_SHORT_REPORT  = "msg_cmd_desc_short_report"
+	ID_CMD_DESC_SHORT_ROOT    = "msg_cmd_desc_short_root"
+	ID_CMD_DESC_SHORT_VERSION = "msg_cmd_desc_short_version"
 
 	// Cobra Flag messages
 	ID_CMD_FLAG_API_HOST    = "msg_cmd_flag_api_host"
@@ -143,7 +143,6 @@ const (
 
 	// Errors
 	ID_ERR_DEPENDENCY_UNKNOWN_TYPE                               = "msg_err_dependency_unknown_type"
-	ID_ERR_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X              = "msg_err_deployment_name_not_found"
 	ID_ERR_ENTITY_CREATE_X_key_X_err_X_code_X                    = "msg_err_entity_create"
 	ID_ERR_ENTITY_DELETE_X_key_X_err_X_code_X                    = "msg_err_entity_delete"
 	ID_ERR_FEED_INVOKE_X_err_X_code_X                            = "msg_err_feed_invoke"
@@ -178,6 +177,7 @@ const (
 	ID_WARN_WHISK_PROPS_DEPRECATED                            = "msg_warn_whisk_properties"
 	ID_WARN_ENTITY_NAME_EXISTS_X_key_X_name_X                 = "msg_warn_entity_name_exists"
 	ID_WARN_PACKAGES_NOT_FOUND_X_path_X                       = "msg_warn_packages_not_found"
+	ID_WARN_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X          = "msg_warn_deployment_name_not_found"
 
 	// Verbose (Debug/Trace) messages
 	ID_DEBUG_KEY_VERIFY_X_name_X_key_X     = "msg_dbg_key_verify"
@@ -220,12 +220,8 @@ const (
 
 // Used to unit test that translations exist with these IDs
 var I18N_ID_SET = [](string){
-	ID_CMD_DESC_LONG_PUBLISH,
 	ID_CMD_DESC_LONG_REPORT,
 	ID_CMD_DESC_LONG_ROOT,
-	ID_CMD_DESC_SHORT_ADD,
-	ID_CMD_DESC_SHORT_ADD_X_key_X,
-	ID_CMD_DESC_SHORT_PUBLISH,
 	ID_CMD_DESC_SHORT_REPORT,
 	ID_CMD_DESC_SHORT_ROOT,
 	ID_CMD_DESC_SHORT_VERSION,
@@ -250,7 +246,6 @@ var I18N_ID_SET = [](string){
 	ID_DEBUG_PROJECT_SEARCH_X_path_X_key_X,
 	ID_DEBUG_UNDEPLOYING_USING,
 	ID_ERR_DEPENDENCY_UNKNOWN_TYPE,
-	ID_ERR_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X,
 	ID_ERR_ENTITY_CREATE_X_key_X_err_X_code_X,
 	ID_ERR_ENTITY_DELETE_X_key_X_err_X_code_X,
 	ID_ERR_JSON_MISSING_KEY_CMD,
@@ -316,4 +311,5 @@ var I18N_ID_SET = [](string){
 	ID_WARN_PACKAGES_NOT_FOUND_X_path_X,
 	ID_WARN_RUNTIME_CHANGED_X_runtime_X_action_X,
 	ID_WARN_WHISK_PROPS_DEPRECATED,
+	ID_WARN_DEPLOYMENT_NAME_NOT_FOUND_X_key_X_name_X,
 }
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index 9d3620dc..3908e0ed 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -97,7 +97,7 @@ func wski18nResourcesDe_deAllJson() (*asset, error) {
 	return a, nil
 }
 
-var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x1a\x6b\x8f\x1b\xb7\xf1\xbb\x7f\xc5\xc0\x28\xe0\x04\x38\xcb\x4e\x8a\x02\x85\x81\x43\xe1\xd6\x6e\x72\x4d\xec\x33\xee\xec\x04\x81\x73\x58\x53\xcb\x91\xc4\x68\x97\x5c\x90\xdc\x93\x95\x83\xfa\xdb\x8b\xe1\x63\x77\xa5\x3b\xee\x52\x72\x82\xe6\x4b\xe4\xe3\x70\xde\x9c\xe7\x7e\x7c\x04\x70\xf7\x08\x00\xe0\xb1\xe0\x8f\x5f\xc0\xe3\xda\x2c\x8b\x46\xe3\x42\x7c\x2e\x50\x6b\xa5\x1f\x9f\xf9\x53\xab\x99\x34\x15\xb3\x42\x49\x02\x7b\xed\xce\x1e\x01\xec\xce\x46\x30\x08\xb9\x50\x09\x04\x17\x74\x34\x75\xdf\xb4\x65\x89\xc6\x24\x50\x5c\x87\xd3\x29\x2c\x1b\xa6\xa5\x90\xcb\x04\x96\x9f\xc3\x69\x12\x4b\x59\xf3\x82\xa3\x29\x8b\x4a\xc9\x65\xd1\xb4\xf3\x4a\x98\x55\x02\xd9\x3b\x7f\x0a\x0c\x1a\x56\xae\xd9\x12\xc1\x2a\xb0\x2b\x04\x8d\x4b\x61\xac\xde\x82\x41\x0b\x42\xc2\x7f\x9f\xcd\x36\x66\xdd\x68\xd5\x98\x59\x2e\x69\x8d\x8d\xd2\x36\x41\xf9\xca\x1d\x1a\x50\x12\x38\x36\x95\xda\x22\x07\x94\x56\x58\x81\x06\xbe\x12\x33\x9c\x9d\xc1\x3b\xcf\x93\x39\x83\x97\x25\xdd\x33\x67\xf0\x5e\x8b\xe5\x12\xb5\x39\x83\xab\xb6\xa2\x13\xb4\xe5\xec\x6b\x60\x06\x36\x58\x55\xf4\x7f\x8d\x25\x4a\xeb\x6e\xdc\x3a\x6a\x86\xf8\x27\x99\x4c\x83\xa5\x58\x08\xe4\x20\x59\x8d\xa6\x61\x25\xe6\xcb\xa2\x54\x4a\x92\x97\x60\x95\xaa\x48\x71\x5e\x90\x33\x68\xa5\xff\x05\x4c\x72\x30\x5b\x59\x82\x6a\x50\x6e\x56\xc2\xac\xa3\x9e\x0d\xb4\x46\xc8\x25\x30\xa8\x99\x14\x0b\x34\xd6\x01\xab\x86\xb0\xb2\x2a\xa0\xaa\x49\x92\x85\xa8\x3a\xf0\x5f\x5e\xbe\xf9\x31\x87\x67\xb3\x52\xda\x9e\x62\x7b\xd6\x59\x3e\x9f\xcc\xa8\x9d\xdf\x69\x75\x2b\x38\x1a\x60\x60\xda\xba\x66\x7a\x0b\x1e\x1e\xd4\x02\x36\x2b\x66\x9f\x18\x98\x23\x0e\xbc\xe0\xcb\xac\x15\x58\x9a\x34\x17\xf9\xb5\x55\xb0\xc2\xaa\x09\xa4\x61\xab\x5a\x9d\x65\x29\xb2\x48\x3e\x2f\x8c\xf3\x14\x2b\x9c\x03\x93\xc0\x9c\x73\x9f\xc1\x02\x91\x9f\x81\xf5\x1e\x0e\x4a\x83\x6e\xab\xee\x41\x46\xe2\xc7\x90\x2d\xdc\x83\xda\x8e\x51\x7f\xc6\x24\xdc\xdd\xcd\xd6\xb8\xdd\xed\x0e\x49\x39\x39\xb3\xe9\xdd\xa2\x36\x84\x39\xe5\x06\x42\x5a\x87\x3d\xc0\x81\x6c\xeb\x39\x89\xb9\x80\x8d\x59\x7b\x0b\x8c\xd3\x5a\x54\x6c\x59\xb0\x46\x14\x2b\x65\x52\xc6\xf5\x96\x7b\xf9\xee\x02\x3e\x7d\x7f\x79\xfd\xfe\x53\x26\xc6\x71\xde\x07\x48\x7f\x7a\x7d\x75\x7d\x71\xf9\x36\x0b\x6f\x6b\x57\xc5\x1a\x53\xda\xa7\x63\xa5\xc5\xef\xee\x0f\xf0\xe9\x87\xd7\xbf\xe4\x20\x2d\x51\xdb\xc2\x99\xe5\x61\xac\x0d\xb3\x2b\x52\x29\x29\x7a\x46\xc0\x19\x36\xf4\x88\x95\x5c\x88\x54\xca\xf1\x87\x0e\x15\x7c\xc5\x71\xc1\xda\xca\x82\x30\xf0\x97\xef\x2f\xdf\xbc\xee\x13\xc3\xd7\x39\x5a\xa9\x2a\xb5\x29\x02\x8e\x54\xa2\x74\x40\xd0\x01\x4d\x63\xed\xa3\xe5\x98\x5e\xba\x08\xdd\x85\xd5\x0c\xd4\x42\x5a\xd4\xf4\x42\x6f\x53\x3a\xf7\xdc\x0e\xe0\xa0\xd1\xaa\x6e\xb2\x18\x5f\xe3\x36\xdb\x9c\x6b\xdc\xe6\x32\xed\xb5\x5c\x33\xc9\x96\x98\x0a\x3e\x9e\xed\x46\xab\xdf\xb0\xb4\x7d\xea\xb5\x0a\xe6\x14\x02\xf4\x1a\x39\x44\x0c\xd3\x14\xbb\xf0\x34\xae\xff\x23\x42\x8b\x43\xdb\x85\xfe\x04\xde\xfe\x7c\x1a\x57\x10\x75\x82\x43\x83\xfa\x16\x75\x85\xc6\x44\xdd\x64\xa0\x36\x56\x8b\x24\x66\xaf\xe8\xd6\xa0\x26\x97\x16\x12\x39\xe8\x56\x5a\x51\x77\xb1\x30\x83\x82\x55\xcb\x65\x85\x05\xa5\xab\x04\x99\xf7\x0e\x02\xbe\xa7\x84\x56\xa3\x31\x6c\x99\xef\x29\xb7\xa8\xe7\xca\xa4\x94\x1c\x4e\x41\xb5\xb6\x69\xc7\xd4\xe1\xc2\x44\x51\x0b\x43\x09\xd3\x05\xc0\x74\xfc\x7b\xbf\x42\x20\x08\x72\xbc\xd2\x07\x41\x72\x70\x61\x40\x2a\x0b\x1e\x55\xab\x91\xcf\x7e\x1d\x53\xcf\x01\xc5\x46\x8c\xe4\x06\xa2\x48\x41\x9c\x40\xbe\x8c\xce\x94\x57\x12\xa5\x0e\xe6\x34\x52\x41\x94\xb1\x8e\xe4\x50\x9e\x8f\x77\x77\x33\xfa\xbd\xdb\xdd\x9c\xc1\x42\xab\x9a\x12\xbb\x51\xad\x2e\x71\xb7\xcb\xa2\xe9\x0d\x36\x45\x93\xc0\xa2\xad\x0c\xda\xd3\x68\x75\xea\x99\xa2\xb6\xa7\x47\x12\xb1\xfb\xc3\xe9\x72\x36\x62\xb9\x29\x98\x6b\xc6\x0a\xab\xd6\x28\x27\x45\xa6\x1b\xe0\x6f\x80\xbb\x71\x9a\xf0\xad\xac\x99\x36\x2b\x56\x15\x95\x2a\x59\x95\xa0\xf8\x21\x42\xc1\x65\x83\xf2\x67\x57\x7d\x84\x88\x61\x3c\x3d\x77\x1b\x6e\x59\xd5\xa2\xc9\x24\x28\xd1\x6e\x94\x5e\x9f\x4c\xd2\xe5\x37\x89\x16\x98\x25\x71\x5b\x5d\x4d\xc8\xda\xa7\xda\xa2\x64\xb2\xc4\xaa\x4a\xa6\xa2\xcb\x1f\x66\xf0\x2f\x0f\x43\x95\x76\x7f\x33\x97\xc0\x82\x89\x34\xf6\x57\x7d\xce\xe7\x82\x87\xb7\x58\x37\x15\x5a\x04\xd3\x92\x49\x17\x6d\x55\x6d\x67\x70\xd5\x4a\xf8\xd4\x15\xa3\x5d\x17\xf7\x89\xd2\x82\xc6\x5a\x51\x66\x67\xda\x0a\x56\x55\xdb\xbe\x5d\x61\xc6\xa0\x1d\xb7\xc2\x80\x53\xdf\xfb\x14\xc6\x32\xdb\xa6\xca\x9f\xa7\x4f\x9f\x3e\x3d\x3f\x3f\x3f\x1f\xd8\x62\x20\xc3\xb5\xbb\x0a\x04\x40\x80\x59\x54\xdd\x5c\x02\x79\x8e\x8a\xa2\x6a\x38\x84\x61\x86\x57\xce\xb8\x93\x9d\x6e\xeb\xe1\xdd\x7c\x22\xa3\xf6\xfe\x30\x80\x1c\xb7\x78\x36\xbd\x29\xfd\xed\x91\x3c\x41\x83\xb1\x2c\x2a\x5c\xab\x39\x5d\xce\x7e\x70\x1d\x29\x45\x43\x2a\x5b\x76\xbb\x1b\x58\x28\x9d\xfb\x6e\x0e\x88\x0d\x05\x3d\x8a\x5c\xb6\xe9\x7c\x17\x5a\xc4\x17\x33\x31\x25\xeb\xba\xd1\x18\xec\x89\xde\x8a\x85\x29\xc1\x50\xa5\xdd\x1b\xcc\xa7\x9e\x1e\xab\xbd\x8a\xe7\xf0\x20\x03\xb3\xd9\x48\xc3\x1f\x48\x44\x85\xfc\x91\x22\xf6\x38\x73\x84\x8c\xd0\x69\x31\x3f\xf4\x10\x27\x08\xca\xb1\x41\xc9\x51\x96\xc7\xe8\xb3\xbf\x34\x24\x74\x1c\x9d\xfe\x15\x26\x95\xfa\xea\x41\x32\x5f\xe2\x39\x0f\x73\x41\xb1\xa7\xd5\xa9\xd2\x6f\x10\x49\xd5\x22\x21\xfa\xff\x31\x0d\x45\x79\x8e\x73\x94\x2f\xb3\xe0\xfd\x48\xfa\xc7\xd8\x30\xf3\x69\xa4\x38\x19\xb7\xe3\x5e\x44\x3f\xd1\x92\x13\x41\x98\x3a\xeb\x53\xd3\x9a\xe3\xc8\x27\x99\xae\x73\x1f\xe3\x05\x78\xab\xc9\x92\x81\xec\x30\x55\xfc\x79\xfe\x16\x65\x5c\xa8\x56\xf2\x22\xf0\x3b\x3e\x93\x7c\x45\x40\xc9\xd8\xb4\x59\x89\x72\x05\x1b\x37\xe4\x27\xbe\xb8\x2f\x4d\xed\x0a\xa1\x6c\xb5\x26\xc5\x44\x01\xe3\x5c\xc3\x25\x2d\xff\x9b\x30\x30\xe3\x64\x21\xfd\x65\xa7\x2f\x3f\xcd\x99\x68\x2e\x7f\x95\xef\x2a\x64\xc6\xcd\x7e\x6e\x05\x47\xc7\x14\xc1\x13\xef\x2e\x5d\x76\xc5\xdc\x0b\x98\xa6\x35\xda\x3a\xdf\xa3\xc5\xe4\x61\x2b\xed\x7a\x94\x0c\x42\x61\xee\x9a\x30\x86\x82\xad\x6a\x41\xa3\xb3\xfc\x86\x49\xdb\x8f\xd0\xc0\xae\x84\xf9\x07\x7c\xb5\x7d\xf6\xf6\xeb\x0c\x3a\x53\x1d\xf3\x7d\x91\x06\x8d\xdf\xc7\x38\x72\x74\x0d\x0f\x75\x5e\xcb\x16\x8d\xbd\xc9\xa0\x1b\x8d\x7c\x94\x84\xdd\xfa\x26\x53\xc6\xc0\x5e\x11\x16\x06\xa9\x09\x78\x58\xb2\x38\x87\x18\x0c\x51\x35\xba\x91\x13\x3f\x03\x56\x0d\xdb\xaf\xee\x5d\x13\x3b\xba\xbb\x11\x77\x35\x4c\x63\xf7\x18\x9f\xf5\xa1\x10\xb8\xd0\x58\xda\x10\x1e\xb5\xdf\x69\x4c\x2d\x50\x5e\x5f\x5d\x5d\x5e\x5d\x27\xf8\x3e\x3f\xfc\x0f\x3c\x38\xdc\x3b\x38\x3f\x1f\x29\x50\xb4\xde\x8f\xc4\x6b\xa9\x36\xb2\xb0\xdb\x66\x24\x93\xc6\x88\x4b\x50\xa4\xaa\x70\x6b\x06\xfd\xca\x00\x94\xac\xb6\x60\xda\xc6\x6f\x13\x9f\xb9\x59\xfd\xcc\x6c\x8d\xc5\x1a\xe6\x42\x72\x21\x97\x06\x94\x86\xa5\xb0\xab\x76\x3e\x2b\x55\xdd\x2d\x76\xc6\x2b\x2a\xcf\x70\x0c\xcd\xa4\xc2\x42\x2a\xeb\x83\xd9\xc8\xa8\xe0\xc1\xc0\x25\xe4\xe1\xe4\xd9\x45\x6a\x87\x8b\x0e\xf7\x37\x4b\x53\x6c\x85\x62\xaf\xd4\xc8\x6c\x4a\x7b\x6e\xdf\x0d\x0e\x64\x2f\x9c\x6e\x84\x5d\x81\x5b\x94\xc7\x21\xe1\x0b\x3a\x44\xad\x77\x3b\xb7\x81\xf4\x67\xa5\xe2\xfe\x80\x7e\x4c\x34\xfa\x03\x96\x7c\x8c\x1f\x65\x89\xdf\x8b\xf0\x7f\x12\x4b\x0b\x44\x5e\x08\x79\xab\xd6\x29\x86\xfe\xed\xd2\x2d\xbd\x78\x0f\xe6\x62\x36\x5d\x83\xcd\xca\x2d\x24\x03\xa7\x71\x23\xe7\x8f\xfe\x1c\x6e\xd7\xb8\xed\xc6\x8b\x35\x93\x9c\x59\xa5\xc7\x46\xa7\x1d\x8c\x9b\xc4\x7d\x8c\xca\xbc\xa1\x67\x12\xf0\x4c\xd2\xec\x1a\xc1\x29\xbf\x7e\x33\x74\xcf\x81\xe7\x32\x0a\x47\x76\x35\xec\x0c\x27\x89\xba\x87\x54\x0b\x53\x33\x5b\xa6\x36\xd3\x7b\xef\x88\x2e\x70\x47\x82\x8f\x3c\x27\x77\x1e\xbb\x53\xae\xd0\xcf\x5c\x1d\x11\x67\x56\x17\x75\x09\xa8\x1e\x20\xd9\x7b\x76\xfe\x34\x8a\x31\x2e\x44\x18\x8d\x91\x7b\xb1\x4a\xa4\xd4\x76\xe1\x4f\x29\xfa\x04\x93\x74\x83\x7f\xa2\x15\x7e\x13\x2f\xfd\xae\x7b\x8f\x2b\xa5\x1d\xef\x7e\x3f\xec\xee\xf8\x9f\x39\x7a\x8e\x2c\x4e\xa8\xfa\xea\x18\x86\x0e\xf4\xea\x9e\x82\xe7\xe8\x89\x01\x3f\x00\xf5\xaa\xc4\xcf\x16\xa5\x89\x4c\xe3\x67\x1b\x67\x06\x5f\x22\x8a\x29\x96\x98\x2a\xbf\xfa\xa7\xbc\x44\xbf\x66\x0e\x29\xa1\x5f\xb6\x84\x39\x66\x9f\x60\x29\xed\x8a\x72\xf0\x7c\x27\x19\x69\x75\x75\xbc\xc9\xfd\xb0\x94\x52\xd8\x6e\x07\x1f\xae\x7e\x74\xc2\xbb\xf1\xa9\xf3\x41\xfa\x17\xe9\xcc\x03\xdc\xe4\x65\x00\x62\xa4\x66\xd5\x42\xe9\x3a\xd9\x2f\xbc\x89\xe7\x63\x1c\xcc\xe0\xbd\xde\x02\x5b\x32\x21\x67\xb3\x49\xb2\xbf\x19\x25\xbb\x28\x55\xd6\x7c\x64\xbd\xfd\x9f\xeb\xcb\xb7\x20\x64\xd3\x5a\xe0\xcc\x32\x78\x13\xb4\xf1\xa4\xac\xf9\x13\x8a\x59\xe3\x94\x58\x23\x3a\x42\x1b\x9c\x17\xde\x59\x52\x1f\x32\x3c\xe0\x54\x71\xeb\xc2\x60\x83\xf3\xee\x0b\x8b\x97\xef\x2e\x3c\x58\x23\x08\xa6\x64\xd2\xd7\x0f\x73\xf4\xa9\x12\x79\xf8\xd8\xa3\xbf\x34\x83\x50\x99\xb6\x0d\x67\xf6\xe0\xe3\x08\x72\xb8\x52\xc9\x5b\xd4\xf6\x80\xbc\x55\x43\x1c\x53\x8a\x1d\x8a\x7b\x92\xa8\xd1\xd9\x9c\x8b\xef\xb1\x98\x25\xf4\x9c\x19\xe4\xa0\xe4\x30\xdc\xdc\x47\x35\xa9\x0a\x21\xcb\xaa\xe5\x78\xc0\x1e\x33\x7b\x56\x48\x2a\xe3\xe7\x97\x57\x6f\x2f\xde\x7e\x97\x5f\x87\xc6\x0b\xc7\x55\xa2\x1b\xa6\x65\x51\xaa\x9a\x32\x68\xa1\xd1\x26\xd3\xec\x15\x9d\xc5\xc1\x67\x59\x73\x27\xcb\xc2\xa2\xf6\x29\xfe\x85\x8f\x6d\x14\x38\x6e\xc6\xec\x1b\xe8\xb9\xcd\xd3\xd1\xc1\x63\xf8\xe5\xc5\x70\xfe\xca\xd1\x62\x69\x27\x26\x1f\x8e\x32\x15\x16\x1c\x1b\x8d\x25\x59\xba\xd0\xd8\x54\xac\x4c\x06\x0d\xca\xbc\x44\x47\x55\x3c\xd4\x13\x6e\xd1\xe7\x1d\x63\x2f\x52\x79\x9e\x36\xa2\xaa\xc0\x28\x25\xc9\x9b\x7a\x32\x67\xd0\x04\x4f\x31\xbe\xaa\x72\xc5\x30\x6e\xf6\x70\x1a\x8b\x2c\x53\x80\xa0\x8e\x53\xea\x21\xb3\x52\x6d\xc5\x89\x3d\x83\x76\x06\x7e\x94\xbd\xdf\x50\x12\xb4\xfb\xe5\x87\x5a\x59\x1c\x39\xf8\x09\x7b\x12\x5f\x9e\x02\xa5\xbe\xfb\x75\x1a\xc5\x27\x77\xff\x18\x92\x54\xab\x19\x76\x3b\x6a\xc1\x29\xa2\xee\x7e\xb4\x6a\x9c\x9c\xc4\xef\xb2\x86\x1f\x64\x4d\x33\x56\x89\x5a\xd8\x42\x2c\xa5\xd2\x49\x96\xa2\x5f\x87\xc0\xe2\xae\x38\xae\xdc\xaf\xc3\x5a\x4c\x18\x08\xe8\x72\xa9\x97\x2b\x26\x97\xc8\xe6\xc9\xcf\x68\x7e\xec\x28\x76\xc5\x9f\x89\x72\x57\x5b\x3f\x34\xeb\x70\xcc\xe0\x82\xc8\x53\x01\x9d\xe1\x0b\x8e\x03\x53\x54\x6a\x59\x18\xf1\x7b\x8a\x81\x4a\x2d\xaf\xc5\xef\x48\xba\xf5\x17\xf6\x24\xee\x5d\x94\x49\xb7\x67\xa5\x66\x63\x8e\x76\x83\x28\xe1\xb9\x6b\x2a\xbe\x79\x9e\xcd\x4a\x8d\xb5\xd2\xdb\x31\x6e\x3c\xc4\xa9\x0c\x7d\xf3\xed\xdf\x1d\x4b\x7f\xfb\xe6\xdb\x6c\x9e\xa8\xfe\x52\x6d\xaa\x78\x0b\xa7\x27\x31\xf3\xdc\xeb\xe7\xaf\xcf\xe9\xbf\x69\x7e\xdc\x78\xa0\x68\xb4\x6a\x50\x5b\x81\xa9\x39\x74\x0c\x83\x83\x78\xe5\xa7\x8e\x56\x0b\xec\xe6\x8e\x7e\xd6\xd0\x23\x8b\xf3\xc9\x87\x63\x62\x0c\x89\x5c\x39\x87\xa3\xc8\x28\x2c\xa8\xd6\x1a\xc1\x9d\x21\xde\x6b\x76\x2b\x0c\xcc\x5b\x51\xf1\xf1\xd9\x84\x13\xc5\x87\x03\x4d\x6e\x9b\x15\x0a\x3a\xef\xdf\x0b\x08\xf2\x20\xaa\x07\x6d\xbb\x89\xcb\xdd\xdd\x2c\xfc\x35\xaa\x9b\x3a\x24\x21\x43\xa3\x4b\xff\x60\xe5\x44\xd9\xec\x58\x8d\xbd\x88\x7f\x64\xa9\x30\x11\x5b\x91\x00\x45\x05\xc5\x41\x57\xf2\x40\x99\x92\x6c\x3c\x4e\xea\x36\x1c\xb7\x61\x96\xe1\x1a\x55\xfc\x2c\x4c\xf2\x33\xc5\x7b\x6d\xea\x5e\x88\x61\x95\x46\xc6\xb7\xe0\x51\x74\xb5\x93\xc1\x0a\x4b\x0b\x4c\x2a\xbb\x42\x3f\x9a\x9b\x66\x29\x4e\xac\xb2\x26\x50\xf7\xbb\xda\x58\x35\x94\x4a\x5a\xe6\x3e\x40\x93\x6a\x7a\x0a\xf6\xea\xf5\x3f\x3f\x7c\x97\x5d\x8c\x39\xe8\xe3\x2a\x31\x3e\xf7\x1f\x40\xde\xa2\x16\x8b\x54\x15\xf6\x93\x3b\x0c\x8d\xd4\x7d\x07\x0e\xda\x1d\x8f\xd4\x44\xa8\xdb\x66\xf9\xb5\xf7\xe4\xd6\xd2\x41\xbd\x98\xc2\x3a\xd8\xa3\x8d\xe2\x1d\x6e\xd3\xf2\x30\x1b\x64\xba\x5c\x11\xde\xb0\xbe\x28\xfc\x64\x37\x3d\x16\xba\x8e\x37\xba\xe5\x47\x77\xe3\xde\xee\xbe\xd7\x60\xaf\xba\x47\x37\x8f\xfe\x17\x00\x00\xff\xff\xfc\x20\x12\xb6\x5e\x33\x00\x00")
+var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5a\x69\x8f\x1b\x37\xd2\xfe\xee\x5f\x51\x30\x5e\xc0\x09\x30\x56\x9c\xbc\x58\x60\x61\x60\xb0\xf0\xae\xbd\x89\x37\xb1\xc7\x98\x23\x41\xe0\x0c\xda\x54\xb3\x24\x31\x62\x93\x0d\x92\x2d\x59\x19\xe8\xbf\x2f\x8a\x64\x1f\xd2\x0c\xbb\x39\x72\x82\xcd\x97\xb4\x87\xc5\x7a\xea\x20\xeb\xa2\x3e\x3e\x01\xb8\x7b\x02\x00\xf0\x54\xf0\xa7\x2f\xe1\x69\x65\x97\x45\x6d\x70\x21\x3e\x17\x68\x8c\x36\x4f\xcf\xc2\xaa\x33\x4c\x59\xc9\x9c\xd0\x8a\xc8\xde\xf8\xb5\x27\x00\xfb\xb3\x11\x0e\x42\x2d\x74\x82\xc1\x5b\x5a\x9a\xda\x6f\x9b\xb2\x44\x6b\x13\x2c\xae\xe2\xea\x14\x97\x2d\x33\x4a\xa8\x65\x82\xcb\x2f\x71\x35\xc9\xa5\xac\x78\xc1\xd1\x96\x85\xd4\x6a\x59\x18\xac\xb5\x71\x09\x5e\x97\x7e\xd1\x82\x56\xc0\xb1\x96\x7a\x87\x1c\x50\x39\xe1\x04\x5a\xf8\x4a\xcc\x70\x76\x06\x1f\x58\xb9\x66\x4b\xb4\x67\xf0\xaa\xa4\x7d\xf6\x0c\xae\x8d\x58\x2e\xd1\xd8\x33\xb8\x6c\x24\xad\xa0\x2b\x67\x5f\x03\xb3\xb0\x45\x29\xe9\xff\x06\x4b\x54\xce\xef\xd8\x78\x34\x0b\x42\x81\x5b\x21\xd8\x1a\x4b\xb1\x10\xc8\x41\xb1\x0a\x6d\xcd\x4a\x9c\x65\xeb\xa2\x75\x4a\x93\x57\xe0\xb4\x96\xe0\x74\x54\xe4\x0c\x1a\x15\xbe\x80\x29\x0e\x76\xa7\x4a\xd0\x35\xaa\xed\x4a\xd8\x35\xd4\x51\x27\x68\xac\x50\x4b\x60\x50\x31\x25\x16\x68\x9d\x27\xd6\x35\x71\x65\x32\xb2\xaa\x48\x93\x85\x90\x1d\xf9\xaf\xaf\xde\xfd\x94\x23\xb3\x5d\x69\xe3\xc6\x1d\xf0\xc1\xe8\x8d\xe0\x68\x81\x81\x6d\xaa\x8a\x99\x1d\x04\x7a\xd0\x0b\xd8\xae\x98\x7b\x66\x61\x8e\x38\x70\xcf\x97\x99\x31\x8a\x34\x69\x47\x8b\x8e\x6c\xb9\x42\x59\x47\x68\xd8\xe9\xc6\x64\x99\x90\x4c\x95\x2f\xcb\x06\x8d\x25\xec\x94\x7d\x84\x72\x5e\xe1\x48\x07\xaa\xa9\xe6\x68\xbc\x79\xec\x3a\x88\x36\x8e\xb5\x90\x6c\x59\xb0\x5a\x14\x2b\x6d\x53\x5a\x07\x95\x5e\x7d\x78\x0b\x9f\x7e\xb8\xb8\xba\xfe\x94\xc9\x71\x5c\xf6\x01\xd3\x9f\xdf\x5c\x5e\xbd\xbd\x78\x9f\xc5\xb7\x71\xab\x62\x8d\xbb\x04\x53\x5a\xd6\x46\xfc\xe1\xff\x00\x9f\x7e\x7c\xf3\x6b\x0e\xd3\x12\x8d\x2b\xc8\x2f\x09\xae\x35\x73\x2b\x32\x29\x19\x7a\x46\xc4\xde\x89\x39\x8c\xb5\x5a\x88\x54\xa4\x0a\x8b\x9e\x15\x7c\xc5\x71\xc1\x1a\xe9\x40\x58\xf8\xbf\x1f\x2e\xde\xbd\xf9\x66\xb6\xb5\xeb\xda\xe8\xda\x7e\x9d\x63\x15\x29\xf5\xb6\x88\x3c\x52\xf1\xd5\x13\x41\x47\x34\xcd\xb5\xbf\xdf\x63\x76\xe9\x62\x4a\x17\x08\x32\x58\x0b\xe5\xd0\x30\x0a\x7f\x29\x9b\x07\x69\x07\x74\x50\x1b\x5d\xd5\x59\x82\xaf\x71\x97\xed\xce\x35\xee\x72\x85\x0e\x56\xae\x98\x62\x4b\xe4\xa3\x62\xd7\x46\xff\x8e\xa5\xeb\x93\x85\xd3\x30\x47\xa8\x98\x59\x23\x87\x96\xc3\x34\x62\x1b\x34\x26\xec\x7f\x10\x5b\x32\xd8\x76\x31\x31\xc1\xb7\x5f\x9f\xe6\x15\x55\x9d\x90\xd0\xa2\xd9\xa0\x91\x68\x6d\x6b\x9b\x0c\xd6\xd6\x19\x91\xe4\x1c\x0c\xdd\x58\x34\x74\xa4\x85\x42\x0e\xa6\x51\x4e\x54\x5d\x2c\xcc\x40\x70\x7a\xb9\x94\x58\x50\x1c\x4f\xc0\x5c\x7b\x0a\xf8\x81\x22\x7d\x85\xd6\xb2\x65\xfe\x49\xd9\xa0\x99\x6b\x9b\x32\x72\x5c\x05\xdd\xb8\xba\x19\x33\x87\x0f\x13\x45\x25\x2c\x65\x12\x1f\x00\xd3\xf1\xef\x7a\x85\x40\x14\x74\xf0\xca\x10\x04\xe9\x80\x0b\x0b\x4a\x3b\x08\xac\x1a\x83\x7c\xf6\xdb\x98\x79\x8e\x10\x6b\x31\x92\x1b\x08\x91\x82\x38\x91\x7c\x19\xce\xd4\xa9\x24\xa4\x8e\xe6\x34\xa8\xa8\xca\x58\x21\x7b\xac\xcf\xc7\xbb\xbb\x19\x7d\xef\xf7\xb7\x67\xb0\x30\xba\x82\xbb\xbb\x99\xd5\x8d\x29\x71\xbf\xcf\xc2\x0c\x0e\x9b\xc2\x24\xb2\xd6\x57\x16\xdd\x69\x58\x9d\x79\xa6\xd0\x0e\xec\x48\x2a\x76\x7f\x38\x5d\xcf\x5a\x2c\xb7\x05\xf3\x35\x7c\xe1\xf4\x1a\xd5\xa4\xca\xb4\x03\xc2\x0e\xf0\x3b\x4e\x53\xbe\x51\x15\x33\x76\xc5\x64\x21\x75\xc9\x64\x02\xf1\xa6\xa5\x82\x8b\x1a\xd5\x2f\xbe\xfa\x88\x11\xc3\x06\x3c\xbf\x1b\x36\x4c\x36\x68\x33\x01\x15\xba\xad\x36\xeb\x93\x21\x7d\x7e\x53\xe8\x80\x39\x52\xb7\x31\x72\x42\xd7\x3e\xd5\x16\x25\x53\x25\x4a\x99\x4c\x45\x17\x3f\xce\xe0\x5f\x81\x86\x4a\xd0\x7e\x67\x2e\xc0\x82\x89\x34\xf7\xd7\x7d\xce\xe7\x82\xc7\xbb\x58\xd5\x12\x1d\x82\x6d\xc8\xa5\x8b\x46\xca\xdd\x0c\x2e\x1b\x05\x9f\xba\x62\xb4\xeb\x3b\x3e\x51\x5a\x30\x58\x69\xca\xec\xcc\x38\xc1\xa4\xdc\xf5\x75\x3c\xb3\x16\xdd\xb8\x17\x06\x92\x86\xa6\xa0\xb0\x8e\xb9\x26\x55\xfe\x3c\x7f\xfe\xfc\xf9\xf9\xf9\xf9\xf9\xc0\x17\x03\x1d\xae\xfc\x56\x20\x02\x22\xcc\x42\xf5\xed\x2c\xf2\x1c\x13\xb5\xa6\xe1\x10\x7b\xe0\x60\x9c\xf1\x43\x76\xba\xaf\x87\x7b\xf3\x41\x46\xfd\x7d\x33\xa0\x1c\xf7\x78\x36\xde\x94\xfd\x0e\x20\x4f\xb0\x60\x5b\x16\x15\xbe\x07\x9b\x2e\x67\x6f\x7c\xab\x46\xd1\x90\xca\x96\xfd\xfe\x16\x16\xda\xe4\xde\x9b\x23\xb0\xa1\xa2\x8f\x82\xcb\x76\x9d\xaf\x2d\x77\x45\x7b\x63\x26\x86\x2b\x77\x77\x54\xe9\xee\xf7\x5d\xb0\x27\xbc\x15\x8b\xed\xf3\xd0\xa4\xdd\x1d\xcc\x47\x4f\x4f\x63\x5e\xb7\xeb\xf0\xa0\x00\xb3\xd9\x48\x27\x1c\x21\x5a\x83\xfc\x99\x2a\xf6\x3c\x73\x94\x6c\xa9\xd3\x6a\xde\xf4\x14\x27\x28\xca\xb1\x46\xc5\x51\x95\x8f\xb1\x67\xbf\x69\x08\xf4\x38\x9c\xfe\x16\x26\x8d\xfa\xfa\x41\x98\x2f\x39\x39\x0f\x4b\x41\xb1\xa7\x31\xa9\xd2\x6f\x10\x49\xf5\x22\xa1\xfa\xff\x30\x0d\xb5\xfa\x3c\xee\xa0\x7c\x99\x07\xef\x47\xd2\x3f\xc7\x87\x99\x57\x23\x25\xc9\xb8\x1f\x0f\x22\xfa\x89\x9e\x9c\x08\xc2\xd4\x59\x9f\x9a\xd6\xbc\x44\x21\xc9\x74\x9d\xfb\x98\x2c\xc0\x1b\x43\x9e\x8c\xb0\xc3\x54\xf1\xd7\x9d\xb7\x56\xc7\x85\x6e\x14\x2f\xa2\xbc\x31\x54\x25\x0f\x80\x44\x97\x8c\x4d\xdb\x95\x28\x57\xb0\xf5\x63\x69\x92\x8b\x87\xd2\xd4\xad\x10\xca\xc6\x18\x32\x4c\xab\x60\x3b\xd7\xf0\x49\x2b\x7c\x13\x07\x66\xbd\x2e\x64\xbf\xec\xf4\x15\xa6\x39\x13\xcd\xe5\x6f\xea\x83\x44\x66\xfd\xec\x67\x23\x38\x7a\xa1\x88\x9e\x64\xf7\xe9\xb2\x2b\xe6\x5e\xc2\x34\xd6\x68\xeb\x7c\x0f\x8b\xa9\xe3\x56\xda\xf7\x28\x19\x40\x71\xee\x9a\x70\x86\x86\x9d\x6e\xc0\xa0\xf7\xfc\x96\x29\xd7\x8f\xd0\xc0\xad\x84\xfd\x07\x7c\xb5\xfb\xe6\xfd\xd7\x19\x38\x53\x1d\xf3\x7d\x95\x06\x8d\xdf\xc7\x76\xe4\xe8\x1b\x1e\xea\xbc\x96\x0d\x5a\x77\x9b\x81\xdb\x3a\xf9\x51\x1a\x76\x0f\x0e\x19\x3a\xbe\xb9\xbc\xbc\xb8\xbc\x4a\xb0\x3f\x3f\xfe\x0f\x02\x39\xdc\x5b\x38\x3f\x1f\xc9\xed\xc6\x1c\x06\xb1\xb5\xd2\x5b\x55\xb8\x5d\x3d\x92\x84\xda\x60\x45\x54\x64\xb1\xb8\x6b\x06\xfd\xb4\x1d\xb4\x92\x3b\xb0\x4d\x1d\x9e\x8e\xbe\xf1\x63\xee\x99\xdd\x59\x87\x15\xcc\x85\xe2\x42\x2d\x2d\x68\x03\x4b\xe1\x56\xcd\x7c\x56\xea\xaa\x7b\x2c\x18\x2f\x46\x8c\x69\x0b\x92\xd2\x20\x73\x29\x31\xfd\x53\x1e\x78\x92\x83\x2b\xbf\x15\x6e\x05\xfe\x0d\xb0\x1d\x64\xbd\xa4\x45\x34\x66\xbf\xf7\xef\x3a\x61\xad\xd4\x3c\x2c\xd0\xc7\x44\x33\x3a\x10\x29\xc4\xa1\x51\x91\xf8\xbd\x28\xf4\x17\x89\xb4\x40\xe4\x85\x50\x1b\xbd\x4e\x09\xf4\x6f\x9f\x12\xe8\x54\x06\x32\x1f\x57\x68\x1b\x6c\x57\xfe\x35\x29\x4a\xea\xc2\x4b\x5e\x5c\xfa\x6b\xa4\x5d\xe3\xae\x1b\x81\x55\x4c\x71\xe6\xb4\x19\x1b\xef\x75\x34\x7e\x5a\xf4\xb1\x35\xe6\x2d\x9d\xc7\xc8\x67\x12\xb3\x6b\x56\x94\x76\x21\x91\x24\x00\xdf\x0d\x27\xcb\x3e\x0f\x7a\x6a\x60\x0e\xfc\x68\x77\xd0\xbd\x4c\x82\x52\xe8\x21\x4d\x2b\xe6\xca\xd5\x88\x82\xdd\xf1\xa0\x0d\xdc\x43\xf0\x36\x57\x09\x75\xfc\xd8\x10\xd6\xdb\x0e\x8a\x6b\x0c\x73\x41\x0f\xe2\xdd\xea\x53\x05\x11\x55\x03\x26\x07\x13\xf3\xb0\xda\xaa\x31\xae\x44\x1c\xdf\xd0\xf1\x62\x52\xa4\xcc\xf6\x36\xac\xd2\x35\x8f\x2e\xe9\x86\xd3\x84\x15\xbf\x49\x96\xfe\xa1\xf2\x40\x2a\x6d\xbc\xec\xcc\x3f\x29\xfb\x3d\xe1\x33\xc7\xce\xad\x88\x13\xa6\xbe\x7c\x8c\x40\x47\x76\xf5\x57\x21\x48\xf4\xcc\x42\x18\xd2\x05\x53\xe2\x67\x87\xca\xb6\x42\xe3\x67\xd7\xf6\xb5\x5f\xa2\x8a\x2d\x96\x98\x2a\x11\xfa\xab\xbc\xc4\xf0\x14\x1a\x63\x6f\xff\x20\x10\x67\x6d\xfd\xdc\xc7\xa2\xd9\x88\x72\x70\x7d\x27\x05\x69\x8c\x7c\xbc\xcb\xc3\x40\x8f\x72\xc5\x7e\x0f\x37\x97\x3f\x79\xe5\xfd\x88\xcf\x9f\x41\xfa\x17\xd9\x2c\x10\xdc\x86\x87\xe1\x1c\x41\x2a\x26\x17\xda\x54\xc9\x9a\xf6\x5d\xbb\x3e\x26\xc1\x0c\xae\xcd\x0e\xd8\x92\x09\x35\x9b\x4d\xc2\xfe\x6e\xb5\xea\xa2\x54\x59\xf1\x91\x27\xd8\xff\x5c\x5d\xbc\x07\xa1\xea\xc6\x01\x67\x8e\xc1\xbb\x68\x8d\x67\x65\xc5\x9f\x51\xcc\x1a\x47\x62\xb5\xe8\x80\xb6\x38\x2f\xc2\x61\x49\x3d\xc7\x3f\x70\xa8\xda\x97\x01\x06\x5b\x9c\xc7\x63\x77\xe6\x47\xfa\x9e\xac\x16\x44\x53\x32\x15\x12\xf5\x1c\x43\xaa\x44\x1e\x5f\xea\xfb\x4d\x33\x88\xd5\x53\x53\x73\xe6\xf0\x28\x66\x38\x0d\xa5\x56\x1b\x34\xee\x08\xde\xe9\x21\x8f\x29\xc3\x0e\xd5\x3d\x49\xd5\xf6\xb0\xf9\x23\x7e\x20\x62\x96\xd2\x73\x66\x91\x83\x56\xc3\x70\x73\x9f\xd5\xa4\x29\x84\x2a\x65\xc3\xf1\x48\x3c\x66\x0f\xbc\x90\x34\xc6\x2f\xaf\x2e\xdf\xbf\x7d\xff\x7d\x7e\xc1\xd7\x6e\x78\x5c\xc9\xb7\x65\x46\x15\xa5\xae\x28\x83\x16\x06\x5d\x32\xcd\x5e\xd2\x5a\x3b\x9c\x2b\x2b\xee\x75\x59\x38\x34\x21\xc5\xbf\x0c\xb1\x8d\x02\xc7\xed\x98\x7f\x23\x9e\x7f\x1d\x79\x74\xf0\x18\xfe\x3a\x60\x38\x23\xe4\xe8\xb0\x74\x13\xdd\xb9\x47\xa6\xc2\x82\x63\x6d\xb0\x24\x4f\x17\x06\x6b\xc9\xca\x64\xd0\xa0\xcc\x4b\x38\x5a\xf2\x58\x4f\xf8\xc7\xa8\x70\x30\x0e\x22\x55\x90\x69\x2b\xa4\x04\xab\xb5\xa2\xd3\xd4\xc3\x9c\x41\x1d\x4f\x8a\x0d\x55\x95\xef\x34\x71\x7b\xc0\xd3\x3a\x64\x99\x0a\x44\x73\x9c\x52\x0f\xd9\x95\x6e\x24\x27\xf1\x2c\xba\x19\x84\x71\xeb\x61\xd3\x43\xd4\xfe\x2b\x0c\x5e\xb2\x24\xf2\xf4\x13\xfe\x24\xb9\x02\x02\xa5\xbe\xfb\x75\x1a\xc5\x27\xbf\xff\x31\x90\x54\xab\x59\xb6\x19\xf5\xe0\x14\xa8\xdf\xdf\x7a\xb5\xed\xee\xdb\xdf\x0e\x0d\x7f\x34\x34\x2d\x98\x14\x95\x70\x85\x58\x2a\x6d\x92\x22\xb5\xe7\x3a\x06\x16\xbf\xc5\x4b\xe5\xbf\x8e\x6b\x31\x61\x21\xb2\xcb\x45\x2f\x57\x4c\x2d\x91\xcd\x93\x3f\xf5\xf8\xa9\x43\xec\x8a\x3f\xdb\xea\x2d\x77\x61\xb0\xd3\xf1\x98\xc1\x5b\x82\xa7\x02\x3a\xe3\x2c\x78\x09\x6c\x21\xf5\xb2\xb0\xe2\x8f\x94\x00\x52\x2f\xaf\xc4\x1f\x48\xb6\x0d\x1b\x0e\x34\xee\x8f\x28\x53\xfe\x2d\x90\x9a\x8d\x39\xba\x2d\xa2\x82\x17\xbe\xa9\xf8\xf6\x45\xb6\x28\x15\x56\xda\xec\xc6\xa4\x09\x14\xa7\x0a\xf4\xed\x77\x7f\xf7\x22\xfd\xed\xdb\xef\xb2\x65\xa2\xfa\x4b\x37\xa9\xe2\x2d\xae\x9e\x24\xcc\x8b\x60\x9f\xff\x7f\x41\xff\x4d\xcb\xe3\xfb\xf0\xa2\x36\xba\x46\xe3\x04\xa6\x66\xa5\x6d\x18\x1c\xc4\xab\x30\x19\x73\x46\x60\x37\x1b\x0b\x4d\x7d\xcf\xac\x9d\xa1\x3d\x1c\x13\xdb\x90\xc8\xb5\x3f\x70\x14\x19\x85\x03\xdd\x38\x2b\xb8\x77\xc4\xb5\x61\x1b\x61\x61\xde\x08\xc9\xc7\x87\x00\x5e\x95\x10\x0e\x0c\x1d\xdb\xac\x50\xd0\x9d\xfe\x83\x80\xa0\x8e\xa2\x7a\xb4\xb6\x1f\x6d\xdc\xdd\xcd\xe2\x5f\x5b\x73\x53\x87\x24\x54\x6c\x74\xe9\x1f\xac\x9c\x28\x9b\xbd\xa8\x6d\x2f\x12\x2e\x59\x2a\x4c\xb4\xad\x48\xa4\xa2\x82\xe2\xa8\x2b\x79\xa0\x4c\x49\x36\x1e\x27\x75\x1b\x5e\xda\x38\xcb\xf0\x8d\x2a\x7e\x16\x36\xf9\x53\xba\x7b\x6d\xea\x41\x88\x61\xd2\x20\xe3\x3b\x08\x2c\xba\xda\xc9\xa2\xc4\xd2\x01\x53\xda\xad\xd0\xf8\x6d\xd3\x22\xb5\xa3\xa1\xc9\x4e\x3d\xa6\xc2\xa3\xae\xb6\xad\x1a\x4a\xad\x1c\xf3\x3f\x92\x52\x3a\x6f\xdc\xe4\xd1\x07\x53\x74\x6f\x94\x1c\x21\x1e\x9c\x31\xc7\x8c\x73\xdc\xbb\xd3\xd5\xea\x87\x0a\x91\xe8\xb0\xf2\x4c\xc9\xf8\xfa\xcd\x3f\x6f\xbe\xcf\x2e\x18\x3d\xf5\xe3\xaa\x45\x3e\x0f\x3f\x24\xdc\xa0\x11\x8b\x54\xa5\xf8\xb3\x5f\x8c\xcd\xde\xfd\x4b\x16\x4f\xc0\x78\x36\x21\xa0\xee\x55\x28\x3c\x1f\x4f\xbe\xfe\x79\xaa\x97\x53\x5c\x07\xef\x51\xa3\x7c\x87\xaf\x52\x79\x9c\x2d\x32\x53\xae\x88\x6f\x7c\x06\x28\xb8\x30\x58\x8e\x8c\xae\xae\xda\x1d\xdd\x23\x42\xb7\xe3\xde\x1b\x78\x6f\xc1\xde\x74\x4f\x6e\x9f\xfc\x37\x00\x00\xff\xff\xbf\xc6\xc6\x42\xdd\x30\x00\x00")
 
 func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
 	return bindataRead(
@@ -112,7 +112,7 @@ func wski18nResourcesEn_usAllJson() (*asset, error) {
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 13150, mode: os.FileMode(420), modTime: time.Unix(1519437986, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 12509, mode: os.FileMode(420), modTime: time.Unix(1519918156, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
diff --git a/wski18n/resources/en_US.all.json b/wski18n/resources/en_US.all.json
index b98062ad..f5eb570b 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -15,10 +15,6 @@
     "id": "msg_prefix_warning",
     "translation": "Warning"
   },
-  {
-    "id": "msg_cmd_desc_long_publish",
-    "translation": "Publish a package to the registry set in ~/.wskprops."
-  },
   {
     "id": "msg_cmd_desc_long_report",
     "translation": "Reports on deployed entities (i.e., Packages, Actions, Triggers, Rules, etc.) as well as recent Activations in the specified namespace."
@@ -27,10 +23,6 @@
     "id": "msg_cmd_desc_long_root",
     "translation": "A tool to deploy, undeploy and sync openwhisk packages using a manifest and optional deployment files using YAML."
   },
-  {
-    "id": "msg_cmd_desc_short_publish",
-    "translation": "Publish a package to a registry."
-  },
   {
     "id": "msg_cmd_desc_short_report",
     "translation": "Provides a summary report of what's been deployed in the specified namespace."
@@ -39,14 +31,6 @@
     "id": "msg_cmd_desc_short_root",
     "translation": "A tool set to help deploy your openwhisk packages using a manifest file."
   },
-  {
-    "id": "msg_cmd_desc_short_add",
-    "translation": "Add an action, feed, trigger or rule to the manifest"
-  },
-  {
-    "id": "msg_cmd_desc_short_add_entity",
-    "translation": "Add a/an {{.key}} to the manifest file"
-  },
   {
     "id": "msg_cmd_desc_short_version",
     "translation": "Print the version number of wskdeploy"
@@ -267,10 +251,6 @@
     "id": "msg_err_dependency_unknown_type",
     "translation": "Dependency type is unknown.  wskdeploy only supports /whisk.system bindings or github.com packages.\n"
   },
-  {
-    "id": "msg_err_deployment_name_not_found",
-    "translation": "The {{.key}} [{{.name}}] in deployment file not found in manifest file.\n"
-  },
   {
     "id": "msg_err_entity_create",
     "translation": "Error creating {{.key}} with error message: {{.err}} and error code: {{.code}}.\n"
@@ -395,6 +375,10 @@
     "id": "msg_warn_packages_not_found",
     "translation": "The manifest file [{{.path}}] contained no packages.\n"
   },
+  {
+    "id": "msg_warn_deployment_name_not_found",
+    "translation": "The {{.key}} [{{.name}}] in the deployment file was not found in the manifest file.\n"
+  },
   {
     "id": "DEBUG",
     "translation": "================= DEBUG ==================="


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services