runtimes (#946)

* enforcing strict flag

* wip

* adding runtimes json file

* creating a seperate package runtimes

* moving dependecies to its own package

* moving conductor out of utils

* moving webaction out of utils

* fixing unit testing

* fixing runtime.json

* fixing unit test

* updating limit datatype

* returning error from runtimes

* updating runtimes json

* adding strict flag when runtimes can not be accessed from server

* formatting url

* adding error reporting

* updating error title
diff --git a/cmd/export.go b/cmd/export.go
index 746854c..5135dba 100644
--- a/cmd/export.go
+++ b/cmd/export.go
@@ -27,6 +27,7 @@
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
 	"github.com/apache/incubator-openwhisk-wskdeploy/deployers"
 	"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
+	"github.com/apache/incubator-openwhisk-wskdeploy/runtimes"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
 	"github.com/spf13/cobra"
@@ -389,7 +390,7 @@
 
 		filename = action.Name + getBinaryKindExtension(runtime)
 	} else {
-		filename = action.Name + "." + utils.FileRuntimeExtensionsMap[action.Exec.Kind]
+		filename = action.Name + "." + runtimes.FileRuntimeExtensionsMap[action.Exec.Kind]
 	}
 
 	os.MkdirAll(directory, os.ModePerm)
diff --git a/cmd/root.go b/cmd/root.go
index 7d4469a..d468bc4 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -24,7 +24,9 @@
 	"strings"
 
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-wskdeploy/dependencies"
 	"github.com/apache/incubator-openwhisk-wskdeploy/deployers"
+	"github.com/apache/incubator-openwhisk-wskdeploy/runtimes"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
@@ -118,14 +120,16 @@
 }
 
 // TODO() add Trace of runtimes found at apihost
-func setSupportedRuntimes(apiHost string) {
-	op, error := utils.ParseOpenWhisk(apiHost)
-	if error == nil {
-		utils.SupportedRunTimes = utils.ConvertToMap(op)
-		utils.DefaultRunTimes = utils.DefaultRuntimes(op)
-		utils.FileExtensionRuntimeKindMap = utils.FileExtensionRuntimes(op)
-		utils.FileRuntimeExtensionsMap = utils.FileRuntimeExtensions(op)
+func setSupportedRuntimes(apiHost string) error {
+	op, err := runtimes.ParseOpenWhisk(apiHost)
+	if err != nil {
+		return err
 	}
+	runtimes.SupportedRunTimes = runtimes.ConvertToMap(op)
+	runtimes.DefaultRunTimes = runtimes.DefaultRuntimes(op)
+	runtimes.FileExtensionRuntimeKindMap = runtimes.FileExtensionRuntimes(op)
+	runtimes.FileRuntimeExtensionsMap = runtimes.FileRuntimeExtensions(op)
+	return nil
 }
 
 func displayCommandUsingFilenameMessage(command string, filetype string, path string) {
@@ -213,7 +217,7 @@
 		deployer.Report = utils.Flags.Report
 
 		// master record of any dependency that has been downloaded
-		deployer.DependencyMaster = make(map[string]utils.DependencyRecord)
+		deployer.DependencyMaster = make(map[string]dependencies.DependencyRecord)
 
 		// Read credentials from Configuration file, manifest file or deployment file
 		clientConfig, error := deployers.NewWhiskConfig(
@@ -233,10 +237,13 @@
 		deployer.ClientConfig = clientConfig
 
 		// The auth, apihost and namespace have been chosen, so that we can check the supported runtimes here.
-		setSupportedRuntimes(clientConfig.Host)
+		err := setSupportedRuntimes(clientConfig.Host)
+		if err != nil {
+			return err
+		}
 
 		// Construct Deployment Plan
-		err := deployer.ConstructDeploymentPlan()
+		err = deployer.ConstructDeploymentPlan()
 		if err != nil {
 			return err
 		}
@@ -282,9 +289,12 @@
 		deployer.ClientConfig = clientConfig
 
 		// The auth, apihost and namespace have been chosen, so that we can check the supported runtimes here.
-		setSupportedRuntimes(clientConfig.Host)
+		err := setSupportedRuntimes(clientConfig.Host)
+		if err != nil {
+			return err
+		}
 
-		err := deployer.UnDeployProject()
+		err = deployer.UnDeployProject()
 		if err != nil {
 			return err
 		}
@@ -336,7 +346,10 @@
 		deployer.ClientConfig = clientConfig
 
 		// The auth, apihost and namespace have been chosen, so that we can check the supported runtimes here.
-		setSupportedRuntimes(clientConfig.Host)
+		err := setSupportedRuntimes(clientConfig.Host)
+		if err != nil {
+			return err
+		}
 
 		verifiedPlan, err := deployer.ConstructUnDeploymentPlan()
 		if err != nil {
diff --git a/utils/conductor.go b/conductor/conductor.go
similarity index 97%
rename from utils/conductor.go
rename to conductor/conductor.go
index 8688d81..8f833d1 100644
--- a/utils/conductor.go
+++ b/conductor/conductor.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package utils
+package conductor
 
 import "github.com/apache/incubator-openwhisk-client-go/whisk"
 
diff --git a/utils/conductor_test.go b/conductor/conductor_test.go
similarity index 98%
rename from utils/conductor_test.go
rename to conductor/conductor_test.go
index ffaab6b..0a007fb 100644
--- a/utils/conductor_test.go
+++ b/conductor/conductor_test.go
@@ -17,7 +17,7 @@
  * limitations under the License.
  */
 
-package utils
+package conductor
 
 import (
 	"testing"
diff --git a/utils/dependencies.go b/dependencies/dependencies.go
similarity index 98%
rename from utils/dependencies.go
rename to dependencies/dependencies.go
index eba29b8..062b2d6 100644
--- a/utils/dependencies.go
+++ b/dependencies/dependencies.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package utils
+package dependencies
 
 import (
 	"strings"
diff --git a/utils/dependencies_test.go b/dependencies/dependencies_test.go
similarity index 99%
rename from utils/dependencies_test.go
rename to dependencies/dependencies_test.go
index 7ed5c24..2f4ccb0 100644
--- a/utils/dependencies_test.go
+++ b/dependencies/dependencies_test.go
@@ -17,7 +17,7 @@
  * limitations under the License.
  */
 
-package utils
+package dependencies
 
 import (
 	"testing"
diff --git a/utils/gitreader.go b/dependencies/gitreader.go
similarity index 98%
rename from utils/gitreader.go
rename to dependencies/gitreader.go
index 741da88..09a62a2 100644
--- a/utils/gitreader.go
+++ b/dependencies/gitreader.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package utils
+package dependencies
 
 import (
 	"archive/zip"
diff --git a/deployers/manifestreader.go b/deployers/manifestreader.go
index 29fbd94..6434907 100644
--- a/deployers/manifestreader.go
+++ b/deployers/manifestreader.go
@@ -22,6 +22,7 @@
 
 	"fmt"
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-wskdeploy/dependencies"
 	"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
@@ -161,7 +162,7 @@
 	return nil
 }
 
-func (reader *ManifestReader) SetDependencies(deps map[string]utils.DependencyRecord) error {
+func (reader *ManifestReader) SetDependencies(deps map[string]dependencies.DependencyRecord) error {
 
 	dep := reader.serviceDeployer
 
@@ -176,7 +177,7 @@
 		}
 		if !dependency.IsBinding && !reader.IsUndeploy {
 			if _, exists := dep.DependencyMaster[depName]; exists {
-				if !utils.CompareDependencyRecords(dep.DependencyMaster[depName], dependency) {
+				if !dependencies.CompareDependencyRecords(dep.DependencyMaster[depName], dependency) {
 					location := strings.Join([]string{dep.DependencyMaster[depName].Location, dependency.Location}, ",")
 					errmsg := wski18n.T(wski18n.ID_ERR_DEPENDENCIES_WITH_SAME_LABEL_X_dependency_X_location_X,
 						map[string]interface{}{wski18n.KEY_DEPENDENCY: depName,
@@ -184,7 +185,7 @@
 					return wskderrors.NewYAMLParserErr(dep.ManifestPath, errmsg)
 				}
 			}
-			gitReader := utils.NewGitReader(depName, dependency)
+			gitReader := dependencies.NewGitReader(depName, dependency)
 			err := gitReader.CloneDependency()
 			if err != nil {
 				return err
diff --git a/deployers/manifestreader_test.go b/deployers/manifestreader_test.go
index c0ea0d7..475608a 100644
--- a/deployers/manifestreader_test.go
+++ b/deployers/manifestreader_test.go
@@ -24,7 +24,9 @@
 	"testing"
 
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-wskdeploy/dependencies"
 	"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
+	"github.com/apache/incubator-openwhisk-wskdeploy/runtimes"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
 	"github.com/stretchr/testify/assert"
@@ -63,7 +65,7 @@
 	deployer.DeploymentPath = deploymentFile
 	deployer.Preview = utils.Flags.Preview
 
-	deployer.DependencyMaster = make(map[string]utils.DependencyRecord)
+	deployer.DependencyMaster = make(map[string]dependencies.DependencyRecord)
 
 	config := whisk.Config{
 		Namespace:        "test",
@@ -73,12 +75,12 @@
 	}
 	deployer.ClientConfig = &config
 
-	op, error := utils.ParseOpenWhisk(deployer.ClientConfig.Host)
+	op, error := runtimes.ParseOpenWhisk(deployer.ClientConfig.Host)
 	if error == nil {
-		utils.SupportedRunTimes = utils.ConvertToMap(op)
-		utils.DefaultRunTimes = utils.DefaultRuntimes(op)
-		utils.FileExtensionRuntimeKindMap = utils.FileExtensionRuntimes(op)
-		utils.FileRuntimeExtensionsMap = utils.FileRuntimeExtensions(op)
+		runtimes.SupportedRunTimes = runtimes.ConvertToMap(op)
+		runtimes.DefaultRunTimes = runtimes.DefaultRuntimes(op)
+		runtimes.FileExtensionRuntimeKindMap = runtimes.FileExtensionRuntimes(op)
+		runtimes.FileRuntimeExtensionsMap = runtimes.FileRuntimeExtensions(op)
 	}
 
 	return deployer, nil
diff --git a/deployers/servicedeployer.go b/deployers/servicedeployer.go
index d5447c0..a0e84e7 100644
--- a/deployers/servicedeployer.go
+++ b/deployers/servicedeployer.go
@@ -29,6 +29,7 @@
 	"time"
 
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-wskdeploy/dependencies"
 	"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
@@ -61,7 +62,7 @@
 
 type DeploymentPackage struct {
 	Package      *whisk.Package
-	Dependencies map[string]utils.DependencyRecord
+	Dependencies map[string]dependencies.DependencyRecord
 	Actions      map[string]utils.ActionRecord
 	Sequences    map[string]utils.ActionRecord
 	Inputs       parsers.PackageInputs
@@ -69,7 +70,7 @@
 
 func NewDeploymentPackage() *DeploymentPackage {
 	var dep DeploymentPackage
-	dep.Dependencies = make(map[string]utils.DependencyRecord)
+	dep.Dependencies = make(map[string]dependencies.DependencyRecord)
 	dep.Actions = make(map[string]utils.ActionRecord)
 	dep.Sequences = make(map[string]utils.ActionRecord)
 	dep.Inputs = parsers.PackageInputs{}
@@ -94,7 +95,7 @@
 	ProjectPath       string
 	DeploymentPath    string
 	ClientConfig      *whisk.Config
-	DependencyMaster  map[string]utils.DependencyRecord
+	DependencyMaster  map[string]dependencies.DependencyRecord
 	ManagedAnnotation whisk.KeyValue
 }
 
@@ -103,7 +104,7 @@
 	var dep ServiceDeployer
 	dep.Deployment = NewDeploymentProject()
 	dep.Preview = true
-	dep.DependencyMaster = make(map[string]utils.DependencyRecord)
+	dep.DependencyMaster = make(map[string]dependencies.DependencyRecord)
 	dep.ProjectInputs = make(map[string]parsers.Parameter, 0)
 	return &dep
 }
@@ -1594,7 +1595,7 @@
 
 }
 
-func (deployer *ServiceDeployer) getDependentDeployer(depName string, depRecord utils.DependencyRecord) (*ServiceDeployer, error) {
+func (deployer *ServiceDeployer) getDependentDeployer(depName string, depRecord dependencies.DependencyRecord) (*ServiceDeployer, error) {
 	depServiceDeployer := NewServiceDeployer()
 	projectPath := path.Join(depRecord.ProjectPath, depName+"-"+depRecord.Version)
 	if len(depRecord.SubFolder) > 0 {
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index b41a7be..f7853be 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -20,15 +20,20 @@
 import (
 	"encoding/base64"
 	"errors"
-	"gopkg.in/yaml.v2"
 	"io/ioutil"
 	"os"
 	"path"
 	"path/filepath"
 	"strings"
 
+	"gopkg.in/yaml.v2"
+
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-wskdeploy/conductor"
+	"github.com/apache/incubator-openwhisk-wskdeploy/dependencies"
+	"github.com/apache/incubator-openwhisk-wskdeploy/runtimes"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
+	"github.com/apache/incubator-openwhisk-wskdeploy/webaction"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskenv"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
@@ -184,8 +189,8 @@
 	return listOfAnnotations
 }
 
-func (dm *YAMLParser) ComposeDependenciesFromAllPackages(manifest *YAML, projectPath string, filePath string, managedAnnotations whisk.KeyValue, packageInputs map[string]PackageInputs) (map[string]utils.DependencyRecord, error) {
-	dependencies := make(map[string]utils.DependencyRecord)
+func (dm *YAMLParser) ComposeDependenciesFromAllPackages(manifest *YAML, projectPath string, filePath string, managedAnnotations whisk.KeyValue, packageInputs map[string]PackageInputs) (map[string]dependencies.DependencyRecord, error) {
+	dependencies := make(map[string]dependencies.DependencyRecord)
 	packages := make(map[string]Package)
 
 	if len(manifest.Packages) != 0 {
@@ -207,9 +212,9 @@
 	return dependencies, nil
 }
 
-func (dm *YAMLParser) ComposeDependencies(pkg Package, projectPath string, filePath string, packageName string, managedAnnotations whisk.KeyValue, packageInputs PackageInputs) (map[string]utils.DependencyRecord, error) {
+func (dm *YAMLParser) ComposeDependencies(pkg Package, projectPath string, filePath string, packageName string, managedAnnotations whisk.KeyValue, packageInputs PackageInputs) (map[string]dependencies.DependencyRecord, error) {
 
-	depMap := make(map[string]utils.DependencyRecord)
+	depMap := make(map[string]dependencies.DependencyRecord)
 	for key, dependency := range pkg.Dependencies {
 		version := dependency.Version
 		if len(version) == 0 {
@@ -219,12 +224,12 @@
 		location := dependency.Location
 
 		isBinding := false
-		if utils.LocationIsBinding(location) {
+		if dependencies.LocationIsBinding(location) {
 			if !strings.HasPrefix(location, PATH_SEPARATOR) {
 				location = PATH_SEPARATOR + dependency.Location
 			}
 			isBinding = true
-		} else if utils.LocationIsGithub(location) {
+		} else if dependencies.LocationIsGithub(location) {
 
 			// TODO() define const for the protocol prefix, etc.
 			if !strings.HasPrefix(location, HTTPS) && !strings.HasPrefix(location, HTTP) {
@@ -250,7 +255,7 @@
 
 		packDir := path.Join(projectPath, strings.Title(YAML_KEY_PACKAGES))
 		depName := packageName + ":" + key
-		depMap[depName] = utils.NewDependencyRecord(packDir, packageName, location, version, inputs, annotations, isBinding)
+		depMap[depName] = dependencies.NewDependencyRecord(packDir, packageName, location, version, inputs, annotations, isBinding)
 	}
 
 	return depMap, nil
@@ -504,7 +509,7 @@
 		// when web-export is set to raw, treat sequence as a raw HTTP web action,
 		// when web-export is set to no | false, treat sequence as a standard action
 		if len(sequence.Web) != 0 {
-			wskaction.Annotations, errorParser = utils.WebAction(manifestFilePath, wskaction.Name, sequence.Web, wskaction.Annotations, false)
+			wskaction.Annotations, errorParser = webaction.WebAction(manifestFilePath, wskaction.Name, sequence.Web, wskaction.Annotations, false)
 			if errorParser != nil {
 				return nil, errorParser
 			}
@@ -566,10 +571,10 @@
 	// even if runtime is invalid, deploy action with specified runtime in strict mode
 	if utils.Flags.Strict {
 		exec.Kind = action.Runtime
-	} else if utils.CheckExistRuntime(action.Runtime, utils.SupportedRunTimes) {
+	} else if runtimes.CheckExistRuntime(action.Runtime, runtimes.SupportedRunTimes) {
 		exec.Kind = action.Runtime
-	} else if len(utils.DefaultRunTimes[action.Runtime]) != 0 {
-		exec.Kind = utils.DefaultRunTimes[action.Runtime]
+	} else if len(runtimes.DefaultRunTimes[action.Runtime]) != 0 {
+		exec.Kind = runtimes.DefaultRunTimes[action.Runtime]
 	} else {
 		err := wski18n.T(wski18n.ID_ERR_RUNTIME_INVALID_X_runtime_X_action_X,
 			map[string]interface{}{
@@ -590,16 +595,16 @@
 	// and its not explicitly specified in the manifest YAML file
 	// and action source is not a zip file
 	if len(action.Runtime) == 0 && len(action.Docker) == 0 && !action.Native {
-		if ext == utils.ZIP_FILE_EXTENSION {
+		if ext == runtimes.ZIP_FILE_EXTENSION {
 			errMessage := wski18n.T(wski18n.ID_ERR_RUNTIME_INVALID_X_runtime_X_action_X,
 				map[string]interface{}{
-					wski18n.KEY_RUNTIME: utils.RUNTIME_NOT_SPECIFIED,
+					wski18n.KEY_RUNTIME: runtimes.RUNTIME_NOT_SPECIFIED,
 					wski18n.KEY_ACTION:  action.Name})
 			return wskderrors.NewInvalidRuntimeError(errMessage,
 				manifestFileName,
 				action.Name,
-				utils.RUNTIME_NOT_SPECIFIED,
-				utils.ListOfSupportedRuntimes(utils.SupportedRunTimes))
+				runtimes.RUNTIME_NOT_SPECIFIED,
+				runtimes.ListOfSupportedRuntimes(runtimes.SupportedRunTimes))
 		} else if len(kind) == 0 {
 			errMessage := wski18n.T(wski18n.ID_ERR_RUNTIME_ACTION_SOURCE_NOT_SUPPORTED_X_ext_X_action_X,
 				map[string]interface{}{
@@ -608,8 +613,8 @@
 			return wskderrors.NewInvalidRuntimeError(errMessage,
 				manifestFileName,
 				action.Name,
-				utils.RUNTIME_NOT_SPECIFIED,
-				utils.ListOfSupportedRuntimes(utils.SupportedRunTimes))
+				runtimes.RUNTIME_NOT_SPECIFIED,
+				runtimes.ListOfSupportedRuntimes(runtimes.SupportedRunTimes))
 		}
 	}
 	return nil
@@ -639,7 +644,7 @@
 	}
 
 	if utils.IsDirectory(actionFilePath) {
-		zipFileName = actionFilePath + "." + utils.ZIP_FILE_EXTENSION
+		zipFileName = actionFilePath + "." + runtimes.ZIP_FILE_EXTENSION
 		err := utils.NewZipWritter(actionFilePath, zipFileName).Zip()
 		if err != nil {
 			return actionFilePath, nil, err
@@ -659,8 +664,8 @@
 
 	// determine default runtime for the given file extension
 	var kind string
-	r := utils.FileExtensionRuntimeKindMap[ext]
-	kind = utils.DefaultRunTimes[r]
+	r := runtimes.FileExtensionRuntimeKindMap[ext]
+	kind = runtimes.DefaultRunTimes[r]
 	if err := dm.validateActionFunction(manifestFileName, action, ext, kind); err != nil {
 		return actionFilePath, nil, err
 	}
@@ -671,7 +676,7 @@
 		return actionFilePath, nil, err
 	}
 	code := string(dat)
-	if ext == utils.ZIP_FILE_EXTENSION || ext == utils.JAR_FILE_EXTENSION {
+	if ext == runtimes.ZIP_FILE_EXTENSION || ext == runtimes.JAR_FILE_EXTENSION {
 		code = base64.StdEncoding.EncodeToString([]byte(dat))
 	}
 	exec.Code = &code
@@ -684,13 +689,13 @@
 	*  Set the action runtime to match with the source file extension, if wskdeploy is not invoked in strict mode
 	 */
 	if len(action.Runtime) != 0 {
-		if utils.CheckExistRuntime(action.Runtime, utils.SupportedRunTimes) {
+		if runtimes.CheckExistRuntime(action.Runtime, runtimes.SupportedRunTimes) {
 			// for zip actions, rely on the runtimes from the manifest file as it can not be derived from the action source file extension
 			// pick runtime from manifest file if its supported by OpenWhisk server
-			if ext == utils.ZIP_FILE_EXTENSION {
+			if ext == runtimes.ZIP_FILE_EXTENSION {
 				exec.Kind = action.Runtime
 			} else {
-				if utils.CheckRuntimeConsistencyWithFileExtension(ext, action.Runtime) {
+				if runtimes.CheckRuntimeConsistencyWithFileExtension(ext, action.Runtime) {
 					exec.Kind = action.Runtime
 				} else {
 					warnStr := wski18n.T(wski18n.ID_ERR_RUNTIME_MISMATCH_X_runtime_X_ext_X_action_X,
@@ -719,20 +724,24 @@
 					wski18n.KEY_ACTION:  action.Name})
 			wskprint.PrintOpenWhiskWarning(warnStr)
 
-			if ext == utils.ZIP_FILE_EXTENSION {
+			if ext == runtimes.ZIP_FILE_EXTENSION {
 				// for zip action, error out if specified runtime is not supported by
 				// OpenWhisk server
 				return actionFilePath, nil, wskderrors.NewInvalidRuntimeError(warnStr,
 					manifestFileName,
 					action.Name,
 					action.Runtime,
-					utils.ListOfSupportedRuntimes(utils.SupportedRunTimes))
+					runtimes.ListOfSupportedRuntimes(runtimes.SupportedRunTimes))
 			} else {
-				warnStr := wski18n.T(wski18n.ID_WARN_RUNTIME_CHANGED_X_runtime_X_action_X,
-					map[string]interface{}{
-						wski18n.KEY_RUNTIME: exec.Kind,
-						wski18n.KEY_ACTION:  action.Name})
-				wskprint.PrintOpenWhiskWarning(warnStr)
+				if utils.Flags.Strict {
+					exec.Kind = action.Runtime
+				} else {
+					warnStr := wski18n.T(wski18n.ID_WARN_RUNTIME_CHANGED_X_runtime_X_action_X,
+						map[string]interface{}{
+							wski18n.KEY_RUNTIME: exec.Kind,
+							wski18n.KEY_ACTION:  action.Name})
+					wskprint.PrintOpenWhiskWarning(warnStr)
+				}
 			}
 
 		}
@@ -769,7 +778,7 @@
 	// when an action Native is set to true,
 	// set exec.Image to openwhisk/skeleton
 	if len(action.Docker) != 0 || action.Native {
-		exec.Kind = utils.BLACKBOX
+		exec.Kind = runtimes.BLACKBOX
 		if action.Native {
 			exec.Image = NATIVE_DOCKER_IMAGE
 		} else {
@@ -900,7 +909,7 @@
 		// when web-export is set to no | false, treat action as a standard action
 		dm.validateActionWebFlag(action)
 		if len(action.GetWeb()) != 0 {
-			wskaction.Annotations, errorParser = utils.WebAction(manifestFilePath, action.Name, action.GetWeb(), wskaction.Annotations, false)
+			wskaction.Annotations, errorParser = webaction.WebAction(manifestFilePath, action.Name, action.GetWeb(), wskaction.Annotations, false)
 			if errorParser != nil {
 				return listOfActions, errorParser
 			}
@@ -914,7 +923,7 @@
 		}
 		// Conductor Action
 		if action.Conductor {
-			wskaction.Annotations = append(wskaction.Annotations, utils.ConductorAction())
+			wskaction.Annotations = append(wskaction.Annotations, conductor.ConductorAction())
 		}
 
 		wskaction.Name = actionName
@@ -1154,7 +1163,7 @@
 						// verify that the action is defined as web action
 						// web or web-export set to any of [true, yes, raw]
 						a := pkg.Actions[actionName]
-						if !utils.IsWebAction(a.GetWeb()) {
+						if !webaction.IsWebAction(a.GetWeb()) {
 							warningString := wski18n.T(wski18n.ID_WARN_API_MISSING_WEB_ACTION_X_action_X_api_X,
 								map[string]interface{}{
 									wski18n.KEY_ACTION: actionName,
@@ -1163,7 +1172,7 @@
 							if a.Annotations == nil {
 								a.Annotations = make(map[string]interface{}, 0)
 							}
-							a.Annotations[utils.WEB_EXPORT_ANNOT] = true
+							a.Annotations[webaction.WEB_EXPORT_ANNOT] = true
 							pkg.Actions[actionName] = a
 						}
 						// verify that the sequence is defined under sequences sections
@@ -1171,7 +1180,7 @@
 						// verify that the sequence is defined as web sequence
 						// web set to any of [true, yes, raw]
 						a := pkg.Sequences[actionName]
-						if !utils.IsWebSequence(a.Web) {
+						if !webaction.IsWebSequence(a.Web) {
 							warningString := wski18n.T(wski18n.ID_WARN_API_MISSING_WEB_SEQUENCE_X_sequence_X_api_X,
 								map[string]interface{}{
 									wski18n.KEY_SEQUENCE: actionName,
@@ -1180,7 +1189,7 @@
 							if a.Annotations == nil {
 								a.Annotations = make(map[string]interface{}, 0)
 							}
-							a.Annotations[utils.WEB_EXPORT_ANNOT] = true
+							a.Annotations[webaction.WEB_EXPORT_ANNOT] = true
 							pkg.Sequences[actionName] = a
 						}
 						// return failure since action or sequence are not defined in the manifest
diff --git a/parsers/manifest_parser_test.go b/parsers/manifest_parser_test.go
index 8cbe644..b4a3cc8 100644
--- a/parsers/manifest_parser_test.go
+++ b/parsers/manifest_parser_test.go
@@ -30,7 +30,7 @@
 	"testing"
 
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
-	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
+	"github.com/apache/incubator-openwhisk-wskdeploy/runtimes"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
 	"github.com/stretchr/testify/assert"
@@ -49,7 +49,7 @@
 	TEST_MSG_PARAMETER_NUMBER_MISMATCH              = "Number of Paramaters mismatched."
 	TEST_MSG_MANIFEST_UNMARSHALL_ERROR_EXPECTED     = "Manifest [%s]: Expected Unmarshal error."
 	TEST_MSG_ACTION_FUNCTION_RUNTIME_ERROR_EXPECTED = "Manifest [%s]: Expected runtime error."
-	TEST_MSG_ACTION_DOCKER_KIND_MISMATCH            = "Docker action kind is set to [%s] instead of " + utils.BLACKBOX
+	TEST_MSG_ACTION_DOCKER_KIND_MISMATCH            = "Docker action kind is set to [%s] instead of " + runtimes.BLACKBOX
 	TEST_MSG_ACTION_DOCKER_IMAGE_MISMATCH           = "Docker action image had a value mismatch."
 	TEST_MSG_ACTION_CODE_MISSING                    = "Action code is missing."
 	TEST_MSG_ACTION_FUNCTION_PATH_MISSING           = "Action function path missing"
@@ -66,11 +66,11 @@
 )
 
 func init() {
-	op, error := utils.ParseOpenWhisk("")
+	op, error := runtimes.ParseOpenWhisk("")
 	if error == nil {
-		utils.SupportedRunTimes = utils.ConvertToMap(op)
-		utils.DefaultRunTimes = utils.DefaultRuntimes(op)
-		utils.FileExtensionRuntimeKindMap = utils.FileExtensionRuntimes(op)
+		runtimes.SupportedRunTimes = runtimes.ConvertToMap(op)
+		runtimes.DefaultRunTimes = runtimes.DefaultRuntimes(op)
+		runtimes.FileExtensionRuntimeKindMap = runtimes.FileExtensionRuntimes(op)
 	}
 }
 
@@ -507,13 +507,13 @@
 	var expectedResult string
 	for i := 0; i < len(actions); i++ {
 		if actions[i].Action.Name == "helloNodejs" {
-			expectedResult = utils.DefaultRunTimes[utils.FileExtensionRuntimeKindMap["js"]]
+			expectedResult = runtimes.DefaultRunTimes[runtimes.FileExtensionRuntimeKindMap["js"]]
 		} else if actions[i].Action.Name == "helloJava" {
-			expectedResult = utils.DefaultRunTimes[utils.FileExtensionRuntimeKindMap["jar"]]
+			expectedResult = runtimes.DefaultRunTimes[runtimes.FileExtensionRuntimeKindMap["jar"]]
 		} else if actions[i].Action.Name == "helloPython" {
-			expectedResult = utils.DefaultRunTimes[utils.FileExtensionRuntimeKindMap["py"]]
+			expectedResult = runtimes.DefaultRunTimes[runtimes.FileExtensionRuntimeKindMap["py"]]
 		} else if actions[i].Action.Name == "helloSwift" {
-			expectedResult = utils.DefaultRunTimes[utils.FileExtensionRuntimeKindMap["swift"]]
+			expectedResult = runtimes.DefaultRunTimes[runtimes.FileExtensionRuntimeKindMap["swift"]]
 		}
 		actualResult := actions[i].Action.Exec.Kind
 		assert.Equal(t, expectedResult, actualResult, TEST_MSG_ACTION_FUNCTION_RUNTIME_MISMATCH)
@@ -916,23 +916,23 @@
 		switch action.Action.Name {
 		case "OpenWhiskSkeleton":
 		case "OpenWhiskSkeletonWithNative":
-			assert.Equal(t, utils.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
+			assert.Equal(t, runtimes.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
 			assert.Equal(t, NATIVE_DOCKER_IMAGE, action.Action.Exec.Image, TEST_MSG_ACTION_DOCKER_IMAGE_MISMATCH)
 		case "CustomDockerAction1":
 		case "CustomDockerAction2":
 			expectedResult, _ = filepath.Abs(actionFile)
 			actualResult, _ = filepath.Abs(action.Filepath)
 			assert.Equal(t, expectedResult, actualResult, TEST_MSG_ACTION_FUNCTION_PATH_MISMATCH)
-			assert.Equal(t, utils.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
+			assert.Equal(t, runtimes.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
 			assert.Equal(t, NATIVE_DOCKER_IMAGE, action.Action.Exec.Image, TEST_MSG_ACTION_DOCKER_IMAGE_MISMATCH)
 		case "CustomDockerAction3":
 		case "CustomDockerAction4":
 			assert.NotNil(t, action.Action.Exec.Code, TEST_MSG_ACTION_CODE_MISSING)
-			assert.Equal(t, utils.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
+			assert.Equal(t, runtimes.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
 			assert.Equal(t, NATIVE_DOCKER_IMAGE, action.Action.Exec.Image, TEST_MSG_ACTION_DOCKER_IMAGE_MISMATCH)
 		case "CustomDockerAction5":
 			assert.NotNil(t, action.Action.Exec.Code, TEST_MSG_ACTION_CODE_MISSING)
-			assert.Equal(t, utils.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
+			assert.Equal(t, runtimes.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
 			assert.Equal(t, "mydockerhub/myimage", action.Action.Exec.Image, TEST_MSG_ACTION_DOCKER_IMAGE_MISMATCH)
 		}
 	}
diff --git a/utils/runtimes.go b/runtimes/runtimes.go
similarity index 71%
rename from utils/runtimes.go
rename to runtimes/runtimes.go
index 15399ef..361c614 100644
--- a/utils/runtimes.go
+++ b/runtimes/runtimes.go
@@ -15,18 +15,23 @@
  * limitations under the License.
  */
 
-package utils
+package runtimes
 
 import (
 	"crypto/tls"
 	"encoding/json"
-	"github.com/apache/incubator-openwhisk-client-go/whisk"
-	"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
-	"github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
 	"io/ioutil"
 	"net/http"
 	"strings"
 	"time"
+
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
+	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
+	"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
+	"github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
+	"path/filepath"
+	"runtime"
 )
 
 const (
@@ -41,14 +46,15 @@
 	HTTP_CONTENT_TYPE_VALUE = "application/json; charset=UTF-8"
 	RUNTIME_NOT_SPECIFIED   = "NOT SPECIFIED"
 	BLACKBOX                = "blackbox"
-	HTTP_FILE_EXTENSION     = "http"
+	RUNTIMES_FILE_NAME      = "runtimes.json"
+	HTTPS                   = "https://"
 )
 
 // Structs used to denote the OpenWhisk Runtime information
 type Limit struct {
-	Apm       uint16 `json:"actions_per_minute"`
-	Tpm       uint16 `json:"triggers_per_minute"`
-	ConAction uint16 `json:"concurrent_actions"`
+	Apm       uint `json:"actions_per_minute"`
+	Tpm       uint `json:"triggers_per_minute"`
+	ConAction uint `json:"concurrent_actions"`
 }
 
 type Runtime struct {
@@ -82,7 +88,7 @@
 // `curl -k https://openwhisk.ng.bluemix.net`
 // hard coding it here in case of network unavailable or failure.
 func ParseOpenWhisk(apiHost string) (op OpenWhiskInfo, err error) {
-	url := "https://" + apiHost
+	url := HTTPS + apiHost
 	req, _ := http.NewRequest("GET", url, nil)
 	req.Header.Set(HTTP_CONTENT_TYPE_KEY, HTTP_CONTENT_TYPE_VALUE)
 	tlsConfig := &tls.Config{
@@ -94,7 +100,7 @@
 	}
 
 	var netClient = &http.Client{
-		Timeout:   time.Second * DEFAULT_HTTP_TIMEOUT,
+		Timeout:   time.Second * utils.DEFAULT_HTTP_TIMEOUT,
 		Transport: netTransport,
 	}
 
@@ -104,6 +110,12 @@
 		errString := wski18n.T(wski18n.ID_ERR_RUNTIMES_GET_X_err_X,
 			map[string]interface{}{"err": err.Error()})
 		whisk.Debug(whisk.DbgWarn, errString)
+		if utils.Flags.Strict {
+			errMessage := wski18n.T(wski18n.ID_ERR_RUNTIME_PARSER_ERROR,
+				map[string]interface{}{wski18n.KEY_ERR: err.Error()})
+			err = wskderrors.NewRuntimeParserError(errMessage)
+			return
+		}
 	}
 
 	if res != nil {
@@ -114,7 +126,15 @@
 	if err != nil || !strings.Contains(HTTP_CONTENT_TYPE_VALUE, res.Header.Get(HTTP_CONTENT_TYPE_KEY)) {
 		stdout := wski18n.T(wski18n.ID_MSG_UNMARSHAL_LOCAL)
 		wskprint.PrintOpenWhiskInfo(stdout)
-		err = json.Unmarshal(RUNTIME_DETAILS, &op)
+		runtimeDetails := readRuntimes()
+		if runtimeDetails != nil {
+			err = json.Unmarshal(runtimeDetails, &op)
+			if err != nil {
+				errMessage := wski18n.T(wski18n.ID_ERR_RUNTIME_PARSER_ERROR,
+					map[string]interface{}{wski18n.KEY_ERR: err.Error()})
+				err = wskderrors.NewRuntimeParserError(errMessage)
+			}
+		}
 	} else {
 		b, _ := ioutil.ReadAll(res.Body)
 		if b != nil && len(b) > 0 {
@@ -122,6 +142,11 @@
 				map[string]interface{}{"url": url})
 			wskprint.PrintOpenWhiskInfo(stdout)
 			err = json.Unmarshal(b, &op)
+			if err != nil {
+				errMessage := wski18n.T(wski18n.ID_ERR_RUNTIME_PARSER_ERROR,
+					map[string]interface{}{wski18n.KEY_ERR: err.Error()})
+				err = wskderrors.NewRuntimeParserError(errMessage)
+			}
 		}
 	}
 	return
@@ -226,101 +251,14 @@
 	return
 }
 
-var RUNTIME_DETAILS = []byte(`{
-	"support":{
-		"github":"https://github.com/apache/incubator-openwhisk/issues",
-		"slack":"http://slack.openwhisk.org"
-	},
-	"description":"OpenWhisk",
-	"api_paths":["/api/v1"],
-	"runtimes":{
-		"nodejs":[{
-			"image":"openwhisk/nodejsaction:latest",
-			"deprecated":true,
-			"requireMain":false,
-			"default":false,
-			"attached":false,
-			"kind":"nodejs"
-		},{
-			"image":"openwhisk/nodejs6action:latest",
-			"deprecated":false,
-			"requireMain":false,
-			"default":true,
-			"attached":false,
-			"kind":"nodejs:6"
-		},{
-			"image":"openwhisk/action-nodejs-v8:latest",
-			"deprecated":false,
-			"requireMain":false,
-			"default":false,
-			"attached":false,
-			"kind":"nodejs:8"
-		}],
-		"java":[{
-			"image":"openwhisk/java8action:latest",
-			"deprecated":false,
-			"requireMain":true,
-			"default":true,
-			"attached":true,
-			"kind":"java"
-		}],
-		"php":[{
-			"image":"openwhisk/action-php-v7.1:latest",
-			"deprecated":false,
-			"requireMain":false,
-			"default":true,
-			"attached":false,
-			"kind":"php:7.1"
-		}],
-		"python":[{
-			"image":"openwhisk/python2action:latest",
-			"deprecated":false,
-			"requireMain":false,
-			"default":false,
-			"attached":false,
-			"kind":"python"
-		},{
-			"image":"openwhisk/python2action:latest",
-			"deprecated":false,
-			"requireMain":false,
-			"default":true,
-			"attached":false,
-			"kind":"python:2"
-		},{
-			"image":"openwhisk/python3action:latest",
-			"deprecated":false,
-			"requireMain":false,
-			"default":false,
-			"attached":false,
-			"kind":"python:3"
-		}],
-		"swift":[{
-			"image":"openwhisk/swiftaction:latest",
-			"deprecated":true,
-			"requireMain":false,
-			"default":false,
-			"attached":false,
-			"kind":"swift"
-		},{
-			"image":"openwhisk/swift3action:latest",
-			"deprecated":true,
-			"requireMain":false,
-			"default":false,
-			"attached":false,
-			"kind":"swift:3"
-		},{
-			"image":"openwhisk/action-swift-v3.1.1:latest",
-			"deprecated":false,
-			"requireMain":false,
-			"default":true,
-			"attached":false,
-			"kind":"swift:3.1.1"
-		}]
-	},
-	"limits":{
-		"actions_per_minute":5000,
-		"triggers_per_minute":5000,
-		"concurrent_actions":1000
+func readRuntimes() []byte {
+	_, b, _, _ := runtime.Caller(0)
+	basepath := filepath.Dir(b)
+	runtimesFileWithPath := filepath.Join(basepath, RUNTIMES_FILE_NAME)
+	file, readErr := ioutil.ReadFile(runtimesFileWithPath)
+	if readErr != nil {
+		wskprint.PrintlnOpenWhiskWarning(readErr.Error())
+		return nil
 	}
-	}
-`)
+	return file
+}
diff --git a/runtimes/runtimes.json b/runtimes/runtimes.json
new file mode 100644
index 0000000..857331f
--- /dev/null
+++ b/runtimes/runtimes.json
@@ -0,0 +1,131 @@
+{
+    "support": {
+        "github": "https://github.com/apache/incubator-openwhisk/issues",
+        "slack": "http://slack.openwhisk.org"
+    },
+    "description": "OpenWhisk",
+    "api_paths": [
+        "/api/v1"
+    ],
+    "runtimes": {
+        "nodejs": [
+            {
+                "image": "openwhisk/nodejsaction:latest",
+                "deprecated": true,
+                "requireMain": false,
+                "default": false,
+                "attached": false,
+                "kind": "nodejs"
+            },
+            {
+                "image": "openwhisk/nodejs6action:latest",
+                "deprecated": false,
+                "requireMain": false,
+                "default": true,
+                "attached": false,
+                "kind": "nodejs:6"
+            },
+            {
+                "image": "ibmfunctions/action-nodejs-v8:1.13.0",
+                "deprecated": false,
+                "requireMain": false,
+                "default": false,
+                "attached": false,
+                "kind": "nodejs:8"
+            }
+        ],
+        "java": [
+            {
+                "image": "openwhisk/java8action:latest",
+                "deprecated": false,
+                "requireMain": true,
+                "default": true,
+                "attached": true,
+                "kind": "java"
+            }
+        ],
+        "php": [
+            {
+                "image": "openwhisk/action-php-v7.1:latest",
+                "deprecated": false,
+                "requireMain": false,
+                "default": true,
+                "attached": false,
+                "kind": "php:7.1"
+            }
+        ],
+        "python": [
+            {
+                "image": "openwhisk/python2action:latest",
+                "deprecated": false,
+                "requireMain": false,
+                "default": false,
+                "attached": false,
+                "kind": "python"
+            },
+            {
+                "image": "openwhisk/python2action:latest",
+                "deprecated": false,
+                "requireMain": false,
+                "default": true,
+                "attached": false,
+                "kind": "python:2"
+            },
+            {
+                "image": "openwhisk/python3action:latest",
+                "deprecated": false,
+                "requireMain": false,
+                "default": false,
+                "attached": false,
+                "kind": "python:3"
+            },
+            {
+                "image": "ibmfunctions/action-python-v3:1.6.0",
+                "deprecated": false,
+                "requireMain": false,
+                "default": false,
+                "attached": false,
+                "kind": "python-jessie:3"
+            }
+        ],
+        "swift": [
+            {
+                "image": "openwhisk/swiftaction:latest",
+                "deprecated": true,
+                "requireMain": false,
+                "default": false,
+                "attached": false,
+                "kind": "swift"
+            },
+            {
+                "image": "openwhisk/swift3action:latest",
+                "deprecated": true,
+                "requireMain": false,
+                "default": false,
+                "attached": false,
+                "kind": "swift:3"
+            },
+            {
+                "image": "openwhisk/action-swift-v3.1.1:latest",
+                "deprecated": false,
+                "requireMain": false,
+                "default": true,
+                "attached": false,
+                "kind": "swift:3.1.1"
+            },
+            {
+                "image": "ibmfunctions/action-swift-v4.1:1.5.0",
+                "deprecated": false,
+                "requireMain": false,
+                "default": false,
+                "attached": false,
+                "kind": "swift:4.1"
+            }
+        ]
+    },
+    "limits": {
+        "actions_per_minute": 5000,
+        "triggers_per_minute": 5000,
+        "concurrent_actions": 1000
+    }
+}
diff --git a/runtimes/runtimes_test.go b/runtimes/runtimes_test.go
new file mode 100644
index 0000000..f7650e3
--- /dev/null
+++ b/runtimes/runtimes_test.go
@@ -0,0 +1,35 @@
+/*
+ * 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 runtimes
+
+import (
+	"github.com/stretchr/testify/assert"
+	"testing"
+)
+
+func TestParseOpenWhisk(t *testing.T) {
+	openwhiskHost := "https://openwhisk.ng.bluemix.net"
+	openwhisk, err := ParseOpenWhisk(openwhiskHost)
+	assert.Equal(t, nil, err, "parse openwhisk info error happened.")
+	converted := ConvertToMap(openwhisk)
+	assert.Equal(t, 2, len(converted["nodejs"]), "not expected length")
+	assert.Equal(t, 1, len(converted["php"]), "not expected length")
+	assert.Equal(t, 1, len(converted["java"]), "not expected length")
+	assert.Equal(t, 4, len(converted["python"]), "not expected length")
+	assert.Equal(t, 2, len(converted["swift"]), "not expected length")
+}
diff --git a/tests/src/integration/common/wskdeploy.go b/tests/src/integration/common/wskdeploy.go
index 32938a2..5dddf56 100644
--- a/tests/src/integration/common/wskdeploy.go
+++ b/tests/src/integration/common/wskdeploy.go
@@ -28,7 +28,9 @@
 	"strings"
 
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-wskdeploy/dependencies"
 	"github.com/apache/incubator-openwhisk-wskdeploy/deployers"
+	"github.com/apache/incubator-openwhisk-wskdeploy/runtimes"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 	"github.com/fatih/color"
@@ -197,7 +199,7 @@
 	deployer.ProjectPath = filepath.Dir(manifestPath)
 	deployer.ManifestPath = manifestPath
 	deployer.DeploymentPath = deploymentPath
-	deployer.DependencyMaster = make(map[string]utils.DependencyRecord)
+	deployer.DependencyMaster = make(map[string]dependencies.DependencyRecord)
 
 	//create client config with namespace, apihost, authkey and etc.
 	//these values might be mock values because it's only for testing
@@ -211,11 +213,11 @@
 
 	//setSupportedRuntimes(apiHost string)
 	//only for testing, mock values
-	op, err := utils.ParseOpenWhisk(clientConfig.Host)
+	op, err := runtimes.ParseOpenWhisk(clientConfig.Host)
 	if err == nil {
-		utils.SupportedRunTimes = utils.ConvertToMap(op)
-		utils.DefaultRunTimes = utils.DefaultRuntimes(op)
-		utils.FileExtensionRuntimeKindMap = utils.FileExtensionRuntimes(op)
+		runtimes.SupportedRunTimes = runtimes.ConvertToMap(op)
+		runtimes.DefaultRunTimes = runtimes.DefaultRuntimes(op)
+		runtimes.FileExtensionRuntimeKindMap = runtimes.FileExtensionRuntimes(op)
 	}
 
 	//invoke ConstructDeploymentPlan to create the in memory objects for deployment
diff --git a/utils/misc.go b/utils/misc.go
index 5280f7b..177fe10 100644
--- a/utils/misc.go
+++ b/utils/misc.go
@@ -36,6 +36,7 @@
 const (
 	DEFAULT_HTTP_TIMEOUT = 30
 	DEFAULT_PROJECT_PATH = "."
+	HTTP_FILE_EXTENSION  = "http"
 	// name of manifest and deployment files
 	ManifestFileNameYaml   = "manifest.yaml"
 	ManifestFileNameYml    = "manifest.yml"
@@ -154,26 +155,6 @@
 	return nil
 }
 
-func deleteKey(key string, keyValueArr whisk.KeyValueArr) whisk.KeyValueArr {
-	for i := 0; i < len(keyValueArr); i++ {
-		if keyValueArr[i].Key == key {
-			keyValueArr = append(keyValueArr[:i], keyValueArr[i+1:]...)
-			break
-		}
-	}
-
-	return keyValueArr
-}
-
-func addKeyValue(key string, value interface{}, keyValueArr whisk.KeyValueArr) whisk.KeyValueArr {
-	keyValue := whisk.KeyValue{
-		Key:   key,
-		Value: value,
-	}
-
-	return append(keyValueArr, keyValue)
-}
-
 func GetManifestFilePath(projectPath string) string {
 	if _, err := os.Stat(path.Join(projectPath, ManifestFileNameYaml)); err == nil {
 		return path.Join(projectPath, ManifestFileNameYaml)
diff --git a/utils/misc_test.go b/utils/misc_test.go
index d4841e2..72d518b 100644
--- a/utils/misc_test.go
+++ b/utils/misc_test.go
@@ -20,6 +20,7 @@
 package utils
 
 import (
+	"github.com/apache/incubator-openwhisk-wskdeploy/dependencies"
 	"github.com/stretchr/testify/assert"
 	"os"
 	"testing"
@@ -44,31 +45,19 @@
 }
 
 func TestDependencies(t *testing.T) {
-	var record = NewDependencyRecord("projectPath", "packageName", "http://github.com/user/repo", "master", nil, nil, false)
+	var record = dependencies.NewDependencyRecord("projectPath", "packageName", "http://github.com/user/repo", "master", nil, nil, false)
 	assert.Equal(t, "projectPath", record.ProjectPath, "ProjectPath is wrong")
 	assert.Equal(t, "http://github.com/user/repo", record.Location, "URL is wrong")
 	assert.Equal(t, "http://github.com/user/repo", record.BaseRepo, "BaseRepo is wrong")
 	assert.Equal(t, "", record.SubFolder, "SubFolder is wrong")
 
-	record = NewDependencyRecord("projectPath", "packageName", "http://github.com/user/repo/subfolder1/subfolder2", "master", nil, nil, false)
+	record = dependencies.NewDependencyRecord("projectPath", "packageName", "http://github.com/user/repo/subfolder1/subfolder2", "master", nil, nil, false)
 	assert.Equal(t, "projectPath", record.ProjectPath, "ProjectPath is wrong")
 	assert.Equal(t, "http://github.com/user/repo/subfolder1/subfolder2", record.Location, "URL is wrong")
 	assert.Equal(t, "http://github.com/user/repo", record.BaseRepo, "BaseRepo is wrong")
 	assert.Equal(t, "/subfolder1/subfolder2", record.SubFolder, "SubFolder is wrong")
 }
 
-func TestParseOpenWhisk(t *testing.T) {
-	openwhiskHost := "https://openwhisk.ng.bluemix.net"
-	openwhisk, err := ParseOpenWhisk(openwhiskHost)
-	assert.Equal(t, nil, err, "parse openwhisk info error happened.")
-	converted := ConvertToMap(openwhisk)
-	assert.Equal(t, 2, len(converted["nodejs"]), "not expected length")
-	assert.Equal(t, 1, len(converted["php"]), "not expected length")
-	assert.Equal(t, 1, len(converted["java"]), "not expected length")
-	assert.Equal(t, 3, len(converted["python"]), "not expected length")
-	assert.Equal(t, 1, len(converted["swift"]), "not expected length")
-}
-
 func TestNewZipWritter(t *testing.T) {
 	filePath := "../tests/src/integration/zipaction/actions/cat"
 	zipName := filePath + ".zip"
diff --git a/utils/webaction.go b/webaction/webaction.go
similarity index 89%
rename from utils/webaction.go
rename to webaction/webaction.go
index 64fe346..b339eae 100644
--- a/utils/webaction.go
+++ b/webaction/webaction.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package utils
+package webaction
 
 import (
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
@@ -39,6 +39,26 @@
 	"RAW":   "raw",
 }
 
+func deleteKey(key string, keyValueArr whisk.KeyValueArr) whisk.KeyValueArr {
+	for i := 0; i < len(keyValueArr); i++ {
+		if keyValueArr[i].Key == key {
+			keyValueArr = append(keyValueArr[:i], keyValueArr[i+1:]...)
+			break
+		}
+	}
+
+	return keyValueArr
+}
+
+func addKeyValue(key string, value interface{}, keyValueArr whisk.KeyValueArr) whisk.KeyValueArr {
+	keyValue := whisk.KeyValue{
+		Key:   key,
+		Value: value,
+	}
+
+	return append(keyValueArr, keyValue)
+}
+
 func WebAction(filePath string, action string, webMode string, annotations whisk.KeyValueArr, fetch bool) (whisk.KeyValueArr, error) {
 	switch strings.ToLower(webMode) {
 	case webExport["TRUE"]:
diff --git a/wskderrors/wskdeployerror.go b/wskderrors/wskdeployerror.go
index baa3956..978d1d3 100644
--- a/wskderrors/wskdeployerror.go
+++ b/wskderrors/wskdeployerror.go
@@ -64,6 +64,7 @@
 	ERROR_YAML_INVALID_RUNTIME            = "ERROR_YAML_INVALID_RUNTIME"
 	ERROR_YAML_INVALID_WEB_EXPORT         = "ERROR_YAML_INVALID_WEB_EXPORT"
 	ERROR_YAML_INVALID_API_GATEWAY_METHOD = "ERROR_YAML_INVALID_API_GATEWAY_METHOD"
+	ERROR_RUNTIME_PARSER_FAILURE          = "ERROR_RUNTIME_PARSER_FAILURE"
 )
 
 /*
@@ -436,6 +437,21 @@
 	return err
 }
 
+/*
+ * Failed to Retrieve/Parse Runtime
+ */
+type RuntimeParserError struct {
+	WskDeployBaseErr
+}
+
+func NewRuntimeParserError(errorMsg string) *RuntimeParserError {
+	var err = &RuntimeParserError{}
+	err.SetErrorType(ERROR_RUNTIME_PARSER_FAILURE)
+	err.SetCallerByStackFrameSkip(2)
+	err.SetMessage(errorMsg)
+	return err
+}
+
 func IsCustomError(err error) bool {
 
 	switch err.(type) {
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
index 4d51908..dc97872 100644
--- a/wski18n/i18n_ids.go
+++ b/wski18n/i18n_ids.go
@@ -199,6 +199,7 @@
 	ID_ERR_ARG_MISSING_KEY_VALUE_X_arg_X                                 = "msg_err_arg_missing_key_value"
 	ID_ERR_INVALID_PARAM_FILE_X_file_X                                   = "msg_err_invalid_param_file"
 	ID_ERR_REQUIRED_INPUTS_MISSING_VALUE_X_inputs_X                      = "msg_err_required_inputs_missing_value"
+	ID_ERR_RUNTIME_PARSER_ERROR                                          = "msg_err_runtime_parser_error"
 
 	// Server-side Errors (wskdeploy as an Action)
 	ID_ERR_JSON_MISSING_KEY_CMD = "msg_err_json_missing_cmd_key"
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index 3459618..eb033ff 100755
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -97,7 +97,7 @@
 	return a, nil
 }
 
-var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5b\x5f\x6f\x1b\x39\x92\x7f\xcf\xa7\x28\x0c\x0e\x98\x19\x40\x91\x33\x7b\x38\xe0\x10\x20\x0f\xb9\xc4\xd9\xf5\x6d\x12\x07\x76\xbc\xc1\x22\x67\xb4\xa9\xee\x92\xc4\x55\x37\xd9\x43\xb2\xa5\x68\x0c\x7d\xf7\x43\x15\xc9\xee\x96\xac\xfe\x23\x25\x73\x97\x97\x48\x26\x59\xf5\xab\x62\xb1\x58\x7f\xa8\xaf\xcf\x00\x1e\x9f\x01\x00\xfc\x24\xb3\x9f\x5e\xc2\x4f\x85\x5d\x24\xa5\xc1\xb9\xfc\x96\xa0\x31\xda\xfc\x34\xf1\xa3\xce\x08\x65\x73\xe1\xa4\x56\x34\xed\x92\xc7\x9e\x01\xec\x26\x3d\x14\xa4\x9a\xeb\x0e\x02\x57\x34\x34\xb4\xde\x56\x69\x8a\xd6\x76\x90\xb8\x0d\xa3\x43\x54\x36\xc2\x28\xa9\x16\x1d\x54\xbe\x84\xd1\x4e\x2a\x69\x91\x25\x19\xda\x34\xc9\xb5\x5a\x24\x06\x4b\x6d\x5c\x07\xad\x1b\x1e\xb4\xa0\x15\x64\x58\xe6\x7a\x8b\x19\xa0\x72\xd2\x49\xb4\xf0\x8b\x9c\xe2\x74\x02\x9f\x44\xba\x12\x0b\xb4\x13\x78\x9d\xd2\x3a\x3b\x81\xcf\x46\x2e\x16\x68\xec\x04\x6e\xaa\x9c\x46\xd0\xa5\xd3\x5f\x41\x58\xd8\x60\x9e\xd3\xff\x06\x53\x54\x8e\x57\xac\x99\x9b\x05\xa9\xc0\x2d\x11\x6c\x89\xa9\x9c\x4b\xcc\x40\x89\x02\x6d\x29\x52\x9c\x8e\x96\x45\xeb\x2e\x49\x5e\x83\xd3\x3a\x07\xa7\x83\x20\x13\xa8\x94\xff\x04\x42\x65\x60\xb7\x2a\x05\x5d\xa2\xda\x2c\xa5\x5d\x41\x19\x64\x82\xca\x4a\xb5\x00\x01\x85\x50\x72\x8e\xd6\xf1\x64\x5d\x12\x55\x91\x07\x52\x05\x49\x32\x97\x79\x3d\xfd\x9f\xaf\x3f\xbc\x1f\x83\xd9\x2e\xb5\x71\xfd\x1b\xf0\xc9\xe8\xb5\xcc\xd0\x82\x00\x5b\x15\x85\x30\x5b\xf0\xf3\x41\xcf\x61\xb3\x14\xee\x67\x0b\x33\xc4\xd6\xf6\x7c\x9f\x1a\x03\xa4\x41\x3d\x5a\x74\xa4\xcb\x25\xe6\x65\x60\x0d\x5b\x5d\x99\x51\x2a\x24\x55\x8d\xc7\xb2\x46\x63\x89\x77\x97\x7e\xa4\x72\x2c\x70\x98\x07\xaa\x2a\x66\x68\x58\x3d\x76\xe5\xa1\x8d\xe6\x45\x56\x30\x68\x3f\x6c\x2a\x2c\xec\x75\x89\xea\xcb\xbe\xb0\x33\x74\x1b\xda\x8e\x34\x97\x64\x15\x6c\x5a\x68\xd6\x68\x46\xdb\xf0\x78\x0c\x2d\xeb\x23\x3e\xd1\x9e\xf9\x0f\x7a\xfe\x7f\x69\xcd\xf3\x5c\x2c\x12\x51\xca\x64\xa9\x6d\x97\xe1\x78\x28\xaf\x3f\x5d\xc1\xc3\xdf\xae\x6f\x3f\x3f\x8c\xa4\xd8\xbf\xfd\x2d\xa2\xff\xb8\xbc\xb9\xbd\xba\xfe\x38\x8a\x6e\xe5\x96\xc9\x0a\xb7\x1d\x44\x69\x58\x1b\xf9\x07\xff\x01\x1e\xfe\x7e\xf9\xcf\x31\x44\x53\x34\x2e\x21\xbd\x75\x50\x2d\x85\x5b\xd2\xb6\x90\xad\x4e\x69\x32\x2b\x79\x0c\x61\xad\xe6\xb2\xcb\xd9\xfb\x41\x26\x05\xbf\x64\x38\x17\x55\xee\x40\x5a\xf8\xb7\xbf\x5d\x7f\xb8\xbc\x98\x6e\xec\xaa\x34\xba\xb4\xbf\x8e\xd1\x4a\x9e\xeb\x4d\x12\x68\x74\x5d\x51\x3c\x09\xea\x49\xc3\x54\x1b\xa3\xea\xd3\x4b\xed\x96\x6b\xeb\x1b\x41\xba\x34\xb8\x96\xb8\xe9\xa0\x6b\x97\x0c\x34\x12\xbd\xd8\x3b\x1e\x65\x2e\xd4\x08\x0e\x2b\xdc\x8e\xde\xd2\x15\x6e\xc7\x02\xf7\x9a\x2e\x84\x12\x0b\xcc\x7a\x15\x5d\x1a\xfd\x2f\x4c\x5d\x73\xe7\x3a\x0d\x33\x84\x42\x98\x15\x66\x10\x29\x8c\x51\x15\xd3\x49\xe8\x2e\xe8\x12\x26\xb0\xe2\x29\xc3\x14\xa3\x0b\x19\xd8\xd5\x3d\xa7\x3f\x82\x6c\x7d\x59\x75\xd0\x6d\xc6\x47\x0b\x3d\x80\xd0\xbb\xe7\x1c\xad\x8d\xda\x1e\x41\xda\x3a\x23\x3b\x29\xfb\xad\xab\x2c\x1a\x3a\x28\x52\x61\x06\xa6\x52\x4e\x16\xf5\x25\x35\x82\x83\x33\xdd\x4a\xe0\x31\xd0\x95\x2b\xab\x31\x60\xbd\xb9\xad\xd1\xcc\xb4\xed\x22\x19\x46\x4f\x25\x5a\x0a\x23\x8a\x4e\x05\x1b\x51\xa0\x43\x03\x6b\x91\x57\xc8\x01\x1e\x39\x53\xf8\xc7\xeb\xf7\x77\x97\x0f\x30\xd7\xa6\x10\x27\xb2\xea\x3b\x8d\x0f\xef\xae\xde\x5f\x3e\x40\xaa\x95\x13\x92\x22\x60\x38\x86\xe0\xbf\x6f\xaf\x3f\x0e\xb3\x66\xaf\x9a\x14\xd2\xd2\x0d\xc8\xf7\x45\xf7\x75\xf1\x79\x89\x40\x33\xe8\x8c\xa6\xfe\xce\x20\x5f\x20\x2d\x28\xed\xc0\x93\xaa\x0c\x66\xd3\xff\xe9\xdb\xf7\x03\x8e\xa5\xec\xb9\x4a\x89\x23\xdd\x79\x34\xe5\xfb\xf8\x0c\x1d\x37\xe2\x54\xcf\x39\x8f\x55\x10\xa5\x2f\x75\x3a\x94\xe7\xeb\xe3\xe3\x94\x3e\xef\x76\xf7\x13\x98\x1b\x5d\xc0\xe3\xe3\xd4\xea\xca\xa4\xb8\xdb\x8d\xe2\xe9\x37\x6c\x88\x27\x4d\x8b\x7b\x65\xd1\x9d\xc7\xab\x56\xcf\x10\xb7\x3d\x3d\x92\x88\xf5\x1f\xce\x97\xb3\x94\x8b\x4d\x22\x38\x6b\x4c\x9c\x5e\xa1\x1a\x14\x99\x56\x80\x5f\x01\xbc\xe2\x3c\xe1\x2b\x55\x08\x63\x97\x22\x4f\x72\x9d\x8a\xbc\x83\xe3\x5d\x9c\xd5\x0a\x95\x83\x2b\xb4\x9e\x1f\xaf\x0e\xc7\x73\x24\x43\x85\x6e\xa3\xcd\xea\x6c\x96\x52\x39\x34\x0a\x1d\x08\x47\xe2\x56\x26\x1f\x90\xb5\x89\x1b\x92\x54\xa8\x14\xf3\xbc\xf3\xd6\xbe\xfe\xfb\x14\xde\xf8\x39\xe4\x80\x9a\x95\x63\x19\xcc\x85\xec\xa6\xfe\xb6\x09\x60\x32\x99\x85\xb3\x58\x94\x39\x3a\x04\x5b\xd1\x96\xce\xab\x3c\xdf\x4e\xe1\xa6\x52\xf0\x50\xa7\x3f\x75\x66\xf0\x40\xf7\x9d\xc1\x42\xaf\x91\x7c\xa3\x93\x22\xcf\xb7\x4d\xe6\x28\xac\x45\xd7\xbf\x0b\x2d\xa4\x3e\x0d\x4d\xac\x13\xae\xea\x8a\x16\x9f\x3f\x7f\xfe\xfc\xd5\xab\x57\xaf\x5a\x7b\xd1\x92\xe1\x96\x97\x02\x4d\xa0\x89\xa3\xb8\x72\x01\x05\xb3\x31\x2a\x8a\xaa\xc9\x20\x54\x5d\xbc\x72\xfa\x8d\xec\xfc\xbd\x6e\xaf\x1d\xcf\xa4\x77\xbf\xef\xda\x21\x6b\xef\x8e\x8f\xe6\x37\xa4\xbf\x3d\x96\x67\x68\x30\xd5\x45\x21\x54\x96\x70\xea\xc8\xb7\x35\x79\xb9\x44\xb8\x84\xe2\xad\x0e\xa6\x8f\x8f\xd3\xb4\xc8\x76\xbb\x90\x70\x3e\x3e\x4e\x69\xa1\xdb\x96\xb8\xdb\xb1\xa7\xa4\xb5\xbb\xdd\xfd\x74\xda\xcb\x9b\x83\xe4\x6d\x12\xed\x79\xa0\xd8\xf6\xf8\x48\x21\x7b\x60\x40\x20\x77\xbb\x7b\x58\x8a\x50\x4e\x69\x0b\x5c\x9f\x90\xf1\xdc\xbb\xab\x73\x6f\xe3\x38\x1c\x05\x30\x9d\xf6\xa4\xda\x81\x45\xdc\xd0\x1f\x29\x62\x43\x73\x8c\x90\x71\x76\xb7\x98\x77\xcd\x8c\xa3\x82\xf6\xca\x99\x61\x89\x2a\x43\x95\x9e\xa2\xce\x66\xd1\xf9\x7c\x9a\x23\xd2\xa9\xd3\xb7\x47\xd9\x7c\x8f\xe1\x1c\x47\x41\x8e\xa1\x32\x5d\x71\xd9\xdb\xbd\x4a\xcf\x71\xd1\xff\x1f\xef\x88\x28\xcf\x69\x76\xf2\x7d\x3b\xf8\xd4\xcd\xfd\x98\x3d\x1c\x79\x32\xba\x90\xf4\xef\xe3\xdd\x41\xcd\xee\x9c\x9d\xec\x43\x15\x2a\x04\xe7\xde\x39\x8c\xc8\xdf\x00\x75\x05\xa2\x0f\x0b\x64\x95\xa1\x9d\x0c\x6c\xdb\xf1\xcf\x9f\x67\x6f\x51\xc6\xb9\xae\x54\x96\x04\xbc\xc1\x53\x75\x1a\x40\x8e\xae\xd3\x07\x6f\x96\x32\x5d\xc2\x86\xbb\x14\x84\x2b\xf3\x71\xa3\x5b\x22\xa4\x95\x31\xa4\x98\x28\x60\x2c\x9a\xf0\x25\xe5\x3f\x13\x05\x61\x59\x16\xd2\xdf\xe8\xb0\x20\xd4\xd4\x92\x50\xac\xed\xaa\x77\xfb\x51\x4e\x26\xa0\x55\xef\x33\xc8\x75\x8c\x6c\x02\x22\x6f\x87\xbe\xf5\xb6\x11\x0e\x53\xaf\x08\x4c\x40\x18\xac\x75\x7d\xd1\x58\x3a\x64\xd2\x60\xea\x82\xf5\x1b\x5f\xed\x1e\xea\x23\x5c\xde\xdc\x5c\xdf\xdc\x76\xe0\x7e\x75\xf8\x0f\xfc\x74\x78\x32\xf0\xea\x55\xcf\xf5\x63\xcc\xfe\x41\x5b\x29\xbd\x51\x09\x45\x0a\xc3\x47\x9d\x66\x91\xaa\xc2\xaa\x29\x34\x0d\x02\xd0\x2a\xdf\x82\xad\x4a\xdf\xed\xba\xe0\xb2\xf2\xd4\x6e\xad\xc3\x02\x66\x52\x65\x52\x2d\x2c\x68\x03\x0b\xe9\x96\xd5\x6c\x9a\xea\xa2\x2e\xaa\xf7\xdf\x97\xc6\xc4\x3b\x33\x35\x28\x5c\x17\x4c\xee\x3e\x02\x4f\xd9\x33\xcb\x8d\x74\x4b\xe0\xb6\x25\x14\x68\xad\x58\xe0\x4b\x1a\x44\x63\x76\x3b\x2e\xde\xfb\xb1\x54\x67\x7e\x80\x3e\x0c\x64\x33\x2d\x48\xfe\xac\xf4\x42\xca\x9e\x9c\x94\x3f\x09\xd2\x1c\x31\x4b\xa4\x5a\xeb\x55\x17\xa0\x77\xec\xb6\xc8\x5d\xf8\x69\x7c\x20\x69\x19\x6c\x96\xdc\x00\x0b\x48\x9d\x6f\x3e\x86\xa1\x3f\x07\xed\x0a\xb7\x75\x0d\x85\xe2\x5d\xe1\xb4\xe9\xab\x0f\xd5\x73\xb8\xdc\xf0\x35\x2a\xf3\x9e\xec\x31\xd0\x19\xe4\x19\x4b\xa9\x89\xd2\xce\x3b\xbb\x0e\x86\x1f\xda\x35\x57\xf6\xd5\x3c\x9b\xf2\x5d\x2e\x7a\xb6\x23\xea\x21\xa6\x1c\xbd\x17\xd2\x16\xc2\xa5\x5d\xe1\x3b\x09\x58\x9b\x07\x2d\xc8\x98\x45\x16\xfd\xa9\x54\x87\xc5\x7d\x3f\x1e\x30\x40\xa6\xd1\x17\x96\x98\x09\x6f\x2b\xbb\x37\x9a\x54\xb4\x88\xec\xd5\x92\xfd\x68\x14\xa3\x5f\x88\x90\xff\x93\x79\x89\x5c\x76\xa9\xed\xca\x8f\xd2\x31\x0f\x5b\x52\x97\x6d\x89\x57\xf8\x4c\x58\x9a\xde\xea\x1e\x2a\x6d\x18\xbb\xe0\x2e\x38\xaf\xf1\x1f\xc7\xe8\x39\x42\x1c\x50\xf5\xcd\x29\x80\x0e\xf4\xca\x47\xc1\x23\xfa\xd9\x82\xaf\xf2\x78\x55\xe2\x37\x87\xca\x46\xd0\xf8\x8d\xef\x30\x12\xe7\x7b\x44\xb1\xc9\x02\xbb\x0a\x98\xcd\x51\x5e\xa0\xef\xde\x06\xdf\xdb\x94\xca\x43\xb1\xa6\xb9\xc9\xe8\x7e\x93\x69\xeb\xf8\x8e\xd6\xa9\x87\x9e\x78\x89\xf9\xf4\xd4\xdc\x3a\xf0\xed\x09\xcc\x71\x21\xa9\xb1\xd1\xb2\x50\xdb\xda\x36\xc8\x89\xb4\xb6\x7d\x50\xaf\xa1\x88\x5a\x43\x18\x14\xa3\x32\xf9\xe9\x96\xeb\x0b\x5b\x21\x85\xbe\xbb\x79\xcf\x08\xb8\xd4\xc5\x47\xe9\xeb\x5e\x8e\x7d\xef\x5b\xf2\x63\x80\x14\x22\x9f\x6b\x53\x74\x6a\xee\x43\x1c\xef\x43\x30\x85\xcf\x66\x0b\x62\x21\xa4\x1a\x4a\xe9\x8d\x49\xfe\x65\xb5\xaa\x9d\x6d\x5a\x64\x3d\x9d\x5b\x2e\xee\x4b\x55\x56\x0e\x32\xe1\x04\x7c\x08\xda\xf8\x39\x2d\xb2\x9f\xc9\xf5\xf6\x73\x12\xa5\x6c\x2a\xf0\xde\x68\xb4\x49\x2c\xfe\x5e\xa1\xea\x2c\x91\xfb\x47\x2f\x17\xb7\x61\xd6\xfe\x61\x69\xf9\x77\x6f\xcf\x7b\x3e\x6c\xc2\x55\x6f\x5e\x50\x4a\x9a\x9d\x0a\xe5\x43\x91\x19\xfa\x60\x00\x33\x98\x09\x8b\x19\x68\xd5\x32\xb2\x8b\x08\xe9\x08\xcd\x29\x7c\xca\x51\x58\x84\xaa\xcc\x84\xc3\x03\xa7\xc9\x97\x67\x9a\x57\xd9\x21\x4e\x61\x41\xc0\x06\x67\x87\x1c\x06\x77\x27\xe8\xa9\xdf\x40\x5f\x1f\xf1\x23\xa4\x9a\xb0\x6a\x0a\x57\xce\x67\x5f\xda\x2d\xf9\x2e\xe6\x53\x35\xaf\x54\x38\x53\xf1\xe0\x4d\xbc\x76\xb4\xc2\xd0\x76\x2d\x88\x0a\x7e\x2b\x31\x1d\x73\x92\x02\xd6\xb8\xc5\xd1\x3f\x90\x63\x4c\x88\xeb\x77\xa2\x67\xe0\x8d\x93\x20\xb2\xba\x72\x6d\x67\x31\x85\x2f\x8d\x13\x8e\xae\x82\x96\x4d\x6a\x77\x42\x06\x13\x83\x85\x81\x6b\x2d\x88\x13\xd5\x94\x50\xb6\xe2\x30\xc9\xa4\x19\xe5\xe4\x8e\x8a\x45\x72\xd4\x7a\x2f\xb5\x54\x3e\xa4\xf2\x29\x9a\xc3\x90\x18\x50\x20\xd3\x1c\xe7\x09\xa5\x80\x51\x2a\xcb\x39\xc5\xbe\x87\xeb\x17\x23\x15\x94\xb0\x8b\x35\x26\x99\x4e\x57\xd8\xf5\x40\xef\x8d\x50\x4c\x55\xac\x11\xde\xf2\x44\x90\x05\x07\xe0\x03\x81\xa5\xcc\x31\x11\xb9\x41\x91\x6d\x13\xfc\x26\x6d\xe7\xdb\x86\x77\x74\x42\xc2\x4c\xf0\x33\x07\x68\x67\x72\x3e\x47\x4a\x08\x9b\xac\x44\xa2\xf5\x06\x65\x29\x72\xca\xc5\x0c\xbb\x9a\x23\xd7\x0a\x81\xec\x30\xc7\xc3\xb4\xbf\xf9\x1a\xb7\xc4\x6d\x34\xd4\xcc\xb8\x69\xe2\x75\x4d\xb3\xe3\x37\xef\x58\x97\xd2\xc2\x4a\xaa\x8c\x0e\x48\xb0\xc5\xd0\x94\x7c\x72\xf1\x1c\x78\x0a\xf2\x2f\x2d\x20\x0c\xfd\x08\x9c\xf0\xbe\xec\x89\x5f\x61\x63\xe1\x86\x3a\xc5\x6e\x11\x14\xc4\xb4\x06\x59\x06\x8b\xa5\x30\xf4\x85\xa9\x5b\x1f\x33\x1d\x97\x6d\x9c\xf1\x87\x43\x96\x90\xc8\xa7\xda\xb9\xd2\x5e\x53\x16\xdd\x69\xcc\x4e\xf5\x15\x81\x59\xeb\xbc\x0f\xf0\x8b\xde\x37\x59\x8a\x35\x79\x2a\xb6\x25\x5f\x48\xb7\x01\x4c\xd7\x13\xd2\xf6\x35\x14\xc9\x04\x7f\x15\x4d\x3b\x3e\x4a\x20\x9f\xaf\xa2\x33\xf2\x89\x3e\x87\x62\xb4\x7f\x21\xbb\x9d\xc6\x37\x9d\xe1\x25\x9b\xa7\x67\xf9\xa2\x22\x63\x5a\xd2\x69\xe4\x05\x1c\xb1\x4b\x05\x22\xda\x74\xa4\x30\x70\xf8\xb5\x9a\xe7\x32\x25\x2f\x93\x84\xc4\x8d\x24\x34\xda\xda\x58\x09\xe9\x3a\xae\xad\xf3\x13\x53\x3e\x12\x3a\x7c\x0e\x32\x47\x59\x39\xf8\x2d\xaa\xdc\xc9\x32\xf7\x59\xa3\x3f\x3c\xf4\x29\x44\x24\x9e\x39\xbb\xaf\x78\xf7\x1e\x94\x41\x5c\xbb\x8b\x3b\x01\xe9\xfc\x89\x2a\xb5\xb5\x72\xe6\x4f\x01\x2b\x24\x0a\xe2\xb9\x36\xea\x99\x51\x5c\x52\x5b\x3a\x83\x78\x72\x08\x83\x24\xcc\xe6\x49\xd2\x73\x82\x32\x4d\x95\xe3\x19\x9a\xa4\x65\x21\xbb\xc8\xf1\x98\x0e\x1b\xfc\xd1\xdf\x1f\x04\x12\x2a\xbb\xa0\x43\x1d\x55\xb0\xbf\x25\x53\xff\x20\xf8\x47\x28\x99\x05\x3c\xa6\x61\x61\xad\x4e\x25\x93\x3e\x8e\xf8\x22\x82\x3b\x54\x3e\x0b\x7f\x96\xe6\x85\x69\xde\x54\x70\x33\xbb\xf3\x05\x67\x68\x90\x41\x2e\x15\x82\x30\x8b\x8a\x93\x62\x52\xa1\x59\xec\x76\xed\x78\x91\xe9\x4c\xa0\xf4\x10\xbd\x2f\xdf\xb2\x3e\x78\xe4\x04\x44\x2b\xdc\xfe\x30\x54\x2b\xdc\x5e\x30\x2d\x28\x85\x34\x4f\xe0\xed\x0f\xb3\x7f\xc7\x6f\xa2\x28\x29\xd8\xad\xc9\xad\x70\x3b\x4a\x86\x10\x60\x0d\x3f\xfd\xe9\x12\xe0\x97\xc8\xf2\x57\xf6\xc1\x81\x9e\x7f\x17\xe4\x2f\xae\xba\x14\x32\xf1\x05\xc9\x56\x7a\x19\x8d\x23\x8a\x26\xc0\xaf\xe6\x24\xa3\x21\x31\x54\x7b\xc0\xdf\x2b\x69\xb8\xb6\x55\x56\xce\x8e\xb2\x92\x9b\xb0\xc6\xa7\x32\xfe\xb4\xec\x59\x85\x05\x5c\xa3\x02\x31\x77\x68\x40\x94\x65\xce\xfd\x13\x7e\xd8\x50\x6a\x4f\x27\xf4\x52\x51\xad\xa7\xb0\x16\x46\x8a\x59\x8e\x8d\xc1\x5b\x74\x35\xc5\xfd\x29\xf1\x00\xfb\x2c\xaa\x79\x37\x15\x4f\xc3\xc5\x61\x29\x47\x1b\x4a\x4e\xde\xbc\xbf\xe2\xcd\x9e\xeb\x3c\xd7\x1b\x8f\x86\xb0\xb3\x3e\xfd\xc7\xdd\x2e\x68\xea\x50\x55\x5f\x5e\xdf\x7c\xbc\xfa\xf8\xd7\xf1\xa5\xe3\xb8\xe0\xb4\xe2\xf1\x46\x18\x55\xf7\xa7\x0d\xba\xce\x82\xdd\x0d\x8d\x91\x08\x5f\x63\x63\xfa\x3e\xa8\x9a\x8b\x85\x2f\x7d\x36\x4f\x36\x72\xdf\x97\x71\x04\x7e\xfc\x50\xe7\xe4\xfc\xbd\xfd\xae\xb7\x55\xaf\x83\x0c\xdd\x70\xae\xc3\x9c\xe9\xd0\x67\x58\x1a\x4c\xc9\x15\x26\x06\xcb\x5c\xa4\x9d\xc9\xc0\xe7\xa5\xe7\xa3\xf3\x2c\x54\x26\xf9\x5d\x94\x8f\xf5\xf6\x1b\xf2\x1b\x99\xe7\x60\xb5\x56\x94\xa5\x36\x1c\x6a\x57\x50\x59\x1f\x4b\x72\x4b\x05\x37\x7b\xe4\xac\x43\x31\x12\x7b\xd0\xc4\x39\x45\x55\xbb\xd4\x55\x9e\x11\x3c\x0a\xed\xe0\xce\xfa\xee\xa2\x6f\x7d\x78\xef\x44\xb3\xf9\xd3\xf0\xb3\x82\x1a\x11\xcf\x1f\xd8\x4a\xc2\xe5\x39\xd0\x69\x78\x5a\xec\xa5\xab\xcc\x67\x8d\x27\xb0\xe4\x6c\x4e\xac\x7b\x37\x6f\x88\x29\xaf\x8f\x1b\x1a\xdb\x58\xf1\x37\x13\xed\x1f\x4b\x0c\x03\xcb\x65\x21\x5d\x22\x17\x4a\x9b\x4e\x48\xd1\xa4\x43\x74\xc9\x4b\x7c\xb6\x42\x9f\x0e\x0b\xba\x94\x4c\x7b\x72\x63\xb9\xa7\x4b\xa1\x16\x48\x1e\xab\x03\xc0\xfb\x9a\x63\x5d\x41\xb6\x51\xee\x7c\xeb\x3b\x98\x35\x8d\x29\x5c\x11\x7b\xa9\x16\x63\x6c\x81\x11\xd8\x24\xd7\x8b\xc4\xca\x3f\xba\x00\xe4\x7a\x71\x2b\xff\xe0\x42\x85\x5f\xb0\x27\x71\x63\xa2\x42\xb1\xe3\xa6\xa0\x2f\xfe\x78\xe4\x05\x47\xdb\xbf\xbd\x18\x0d\xa5\xc0\x42\x9b\x6d\x1f\x1a\x3f\xe3\x5c\x40\xbf\xfd\xe5\x3f\x19\xd2\x7f\xfc\xf6\x97\xd1\x98\x9c\x2c\x50\x57\x5d\x15\xe0\x30\x7a\x16\x98\x17\x5e\x3f\xff\xfe\x82\xfe\x0d\xe3\xe1\x66\x5e\x52\x1a\x5d\xa2\x71\xb2\x33\x08\x8e\x1e\xb0\xe5\xaf\x7c\x0b\xd8\x19\x89\x75\x13\xd8\x77\x06\x1b\x62\xb1\x59\x7c\xdc\x27\x46\x97\x98\x69\x36\x38\xf2\x8c\xd2\x81\xae\x9c\x95\x19\x6f\xc4\x67\x23\xd6\xd2\xc2\xac\x92\x79\xd6\xdf\x49\x64\x51\xbc\x3b\x30\x64\xb6\xa3\x5c\x41\x6d\xfd\x7b\x0e\x41\x1d\x38\xf4\xa0\x6d\xee\x8f\x52\xb4\xee\xff\x1a\xd5\xfd\xf8\x38\x2d\xa4\x0a\xdd\x32\xfa\x22\xd2\x81\xda\x3b\x43\x8d\xc5\x35\x7f\xc8\xba\xdc\x44\xec\x67\x84\x59\x14\xdc\x1f\xb4\x36\x8e\x94\x3f\x3b\xbb\x17\x67\xb5\x2c\x18\x6d\x68\x88\x72\x8a\xdd\x5b\x23\x7a\xd2\xeb\xda\x73\x31\x07\xc5\xa3\x26\xda\xca\x31\x75\x20\x94\x76\xcb\x90\xdb\x0d\x43\x8a\x39\xdb\x60\xbb\xef\xf3\x93\x6a\x4c\x3b\x60\x08\xcf\xe1\x31\x03\xa5\xc7\xf5\xac\x99\x7b\xeb\xb9\x08\x2b\x65\x0c\x88\xa3\x8f\x29\xc2\x8d\x73\x18\x35\x6e\x42\x4f\xc5\x77\x26\x8f\xd5\x94\x46\x68\xa8\xf5\xa3\x96\x44\xaf\xd1\x18\x99\x65\xd8\x55\x19\x21\x84\xed\xdf\xb8\x34\xcf\x7d\x9a\xa5\x31\x56\x68\xbf\xe6\x18\xbb\x51\x89\xb4\x49\x59\xcd\x72\xd9\xf5\xeb\x3d\xbf\x2b\x3c\x37\x76\x06\xfc\xcf\x78\x84\x05\xbf\xf0\x49\xd6\x49\xe9\xaf\xf7\x2d\x33\x84\xb5\xf4\x09\x30\x9d\xc3\x54\xb0\xa7\xf1\xef\xb8\x31\x83\xd9\x16\x84\xda\x6a\xd5\xf3\xb3\x18\xc6\x1a\x0b\x59\x38\x4b\xf0\x1b\xbf\xdf\xed\xbf\xc6\x9f\xd6\xb1\xb8\x44\xcf\x8d\x02\x95\xd1\xff\xcf\x3d\x9d\x27\x35\x7a\x3a\x08\xa4\xca\x0d\xce\x26\xfe\x72\x0f\xdf\xc2\x82\x9e\xb4\xc9\x23\x6d\xf5\x62\x08\x6e\x6f\xd5\xab\xab\x42\x4f\x16\xd6\x6e\x6b\x8c\x6a\xb8\xf8\xc4\xa9\x59\x34\x85\x37\x5a\xad\xc9\xdd\x87\x94\xa0\x61\xe1\xf4\x1e\xf9\x61\x93\x3d\x94\x6a\xa0\xb7\xd4\x57\xcd\x6b\x64\x8b\x03\x27\x4a\x57\xb7\x78\x0e\xe5\x6b\x33\xaa\x25\x1c\x6c\x08\xbd\xbd\xfc\xaf\xbb\xbf\x8e\x4e\xe1\x78\xf6\x69\xf9\x5b\x36\x5b\x24\x16\x85\x49\x97\xa4\xbd\x78\xf8\xeb\x86\x44\xa7\x0a\xc3\x8a\xfa\xf0\xef\xb7\x30\xa2\x9f\xa4\xbb\xa3\xb9\x24\x07\xc2\x40\x82\x72\xe8\x21\x7f\xb4\x77\x3c\xd3\x33\x12\xb4\xfa\xea\xf0\x4f\xe2\x7a\x7e\xcd\xfd\xf6\xc8\xbb\x8c\xa0\x91\x97\xf0\x8e\x11\x34\x3f\x1e\xe6\xf2\x1c\x11\x3b\x15\x40\xff\x0f\xf1\x4e\xc7\xd0\x7e\x75\x17\x5f\x89\x06\x48\xcf\xee\x9f\xfd\x6f\x00\x00\x00\xff\xff\x8f\xdc\xdb\x56\x02\x42\x00\x00")
+var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5b\x5f\x6f\x1b\x39\x92\x7f\xcf\xa7\x28\x0c\x0e\x98\x19\x40\x91\x33\x7b\x38\xe0\x10\x20\x0f\xb9\xc4\xd9\xf5\x6d\x12\x07\x76\xbc\xc1\x22\x67\xb4\xa9\xee\x92\xc4\x55\x37\xd9\x43\xb2\xa5\x68\x0c\x7d\xf7\x43\x15\xc9\xee\x96\xac\xfe\x23\x25\x73\x97\x97\x48\x26\x59\xf5\xab\x62\xb1\x58\x7f\xa8\xaf\xcf\x00\x1e\x9f\x01\x00\xfc\x24\xb3\x9f\x5e\xc2\x4f\x85\x5d\x24\xa5\xc1\xb9\xfc\x96\xa0\x31\xda\xfc\x34\xf1\xa3\xce\x08\x65\x73\xe1\xa4\x56\x34\xed\x92\xc7\x9e\x01\xec\x26\x3d\x14\xa4\x9a\xeb\x0e\x02\x57\x34\x34\xb4\xde\x56\x69\x8a\xd6\x76\x90\xb8\x0d\xa3\x43\x54\x36\xc2\x28\xa9\x16\x1d\x54\xbe\x84\xd1\x4e\x2a\x69\x91\x25\x19\xda\x34\xc9\xb5\x5a\x24\x06\x4b\x6d\x5c\x07\xad\x1b\x1e\xb4\xa0\x15\x64\x58\xe6\x7a\x8b\x19\xa0\x72\xd2\x49\xb4\xf0\x8b\x9c\xe2\x74\x02\x9f\x44\xba\x12\x0b\xb4\x13\x78\x9d\xd2\x3a\x3b\x81\xcf\x46\x2e\x16\x68\xec\x04\x6e\xaa\x9c\x46\xd0\xa5\xd3\x5f\x41\x58\xd8\x60\x9e\xd3\xff\x06\x53\x54\x8e\x57\xac\x99\x9b\x05\xa9\xc0\x2d\x11\x6c\x89\xa9\x9c\x4b\xcc\x40\x89\x02\x6d\x29\x52\x9c\x8e\x96\x45\xeb\x2e\x49\x5e\x83\xd3\x3a\x07\xa7\x83\x20\x13\xa8\x94\xff\x04\x42\x65\x60\xb7\x2a\x05\x5d\xa2\xda\x2c\xa5\x5d\x41\x19\x64\x82\xca\x4a\xb5\x00\x01\x85\x50\x72\x8e\xd6\xf1\x64\x5d\x12\x55\x91\x07\x52\x05\x49\x32\x97\x79\x3d\xfd\x9f\xaf\x3f\xbc\x1f\x83\xd9\x2e\xb5\x71\xfd\x1b\xf0\xc9\xe8\xb5\xcc\xd0\x82\x00\x5b\x15\x85\x30\x5b\xf0\xf3\x41\xcf\x61\xb3\x14\xee\x67\x0b\x33\xc4\xd6\xf6\x7c\x9f\x1a\x03\xa4\x41\x3d\x5a\x74\xa4\xcb\x25\xe6\x65\x60\x0d\x5b\x5d\x99\x51\x2a\x24\x55\x8d\xc7\xb2\x46\x63\x89\x77\x97\x7e\xa4\x72\x2c\x70\x98\x07\xaa\x2a\x66\x68\x58\x3d\x76\xe5\xa1\x8d\xe6\x45\x56\x30\x68\x3f\x6c\x2a\x2c\xec\x75\x89\xea\xcb\xbe\xb0\x33\x74\x1b\xda\x8e\x34\x97\x64\x15\x6c\x5a\x68\xd6\x68\x46\xdb\xf0\x78\x0c\x2d\xeb\x23\x3e\xd1\x9e\xf9\x0f\x7a\xfe\x7f\x69\xcd\xf3\x5c\x2c\x12\x51\xca\x64\xa9\x6d\x97\xe1\x78\x28\xaf\x3f\x5d\xc1\xc3\xdf\xae\x6f\x3f\x3f\x8c\xa4\xd8\xbf\xfd\x2d\xa2\xff\xb8\xbc\xb9\xbd\xba\xfe\x38\x8a\x6e\xe5\x96\xc9\x0a\xb7\x1d\x44\x69\x58\x1b\xf9\x07\xff\x01\x1e\xfe\x7e\xf9\xcf\x31\x44\x53\x34\x2e\x21\xbd\x75\x50\x2d\x85\x5b\xd2\xb6\x90\xad\x4e\x69\x32\x2b\x79\x0c\x61\xad\xe6\xb2\xcb\xd9\xfb\x41\x26\x05\xbf\x64\x38\x17\x55\xee\x40\x5a\xf8\xb7\xbf\x5d\x7f\xb8\xbc\x98\x6e\xec\xaa\x34\xba\xb4\xbf\x8e\xd1\x4a\x9e\xeb\x4d\x12\x68\x74\x5d\x51\x3c\x09\xea\x49\xc3\x54\x1b\xa3\xea\xd3\x4b\xed\x96\x6b\xeb\x1b\x41\xba\x34\xb8\x96\xb8\xe9\xa0\x6b\x97\x0c\x34\x12\xbd\xd8\x3b\x1e\x65\x2e\xd4\x08\x0e\x2b\xdc\x8e\xde\xd2\x15\x6e\xc7\x02\xf7\x9a\x2e\x84\x12\x0b\xcc\x7a\x15\x5d\x1a\xfd\x2f\x4c\x5d\x73\xe7\x3a\x0d\x33\x84\x42\x98\x15\x66\x10\x29\x8c\x51\x15\xd3\x49\xe8\x2e\xe8\x12\x26\xb0\xe2\x29\xc3\x14\xa3\x0b\x19\xd8\xd5\x3d\xa7\x3f\x82\x6c\x7d\x59\x75\xd0\x6d\xc6\x47\x0b\x3d\x80\xd0\xbb\xe7\x1c\xad\x8d\xda\x1e\x41\xda\x3a\x23\x3b\x29\xfb\xad\xab\x2c\x1a\x3a\x28\x52\x61\x06\xa6\x52\x4e\x16\xf5\x25\x35\x82\x83\x33\xdd\x4a\xe0\x31\xd0\x95\x2b\xab\x31\x60\xbd\xb9\xad\xd1\xcc\xb4\xed\x22\x19\x46\x4f\x25\x5a\x0a\x23\x8a\x4e\x05\x1b\x51\xa0\x43\x03\x6b\x91\x57\xc8\x01\x1e\x39\x53\xf8\xc7\xeb\xf7\x77\x97\x0f\x30\xd7\xa6\x10\x27\xb2\xea\x3b\x8d\x0f\xef\xae\xde\x5f\x3e\x40\xaa\x95\x13\x92\x22\x60\x38\x86\xe0\xbf\x6f\xaf\x3f\x0e\xb3\x66\xaf\x9a\x14\xd2\xd2\x0d\xc8\xf7\x45\xf7\x75\xf1\x79\x89\x40\x33\xe8\x8c\xa6\xfe\xce\x20\x5f\x20\x2d\x28\xed\xc0\x93\xaa\x0c\x66\xd3\xff\xe9\xdb\xf7\x03\x8e\xa5\xec\xb9\x4a\x89\x23\xdd\x79\x34\xe5\xfb\xf8\x0c\x1d\x37\xe2\x54\xcf\x39\x8f\x55\x10\xa5\x2f\x75\x3a\x94\xe7\xeb\xe3\xe3\x94\x3e\xef\x76\xf7\x13\x98\x1b\x5d\xc0\xe3\xe3\xd4\xea\xca\xa4\xb8\xdb\x8d\xe2\xe9\x37\x6c\x88\x27\x4d\x8b\x7b\x65\xd1\x9d\xc7\xab\x56\xcf\x10\xb7\x3d\x3d\x92\x88\xf5\x1f\xce\x97\xb3\x94\x8b\x4d\x22\x38\x6b\x4c\x9c\x5e\xa1\x1a\x14\x99\x56\x80\x5f\x01\xbc\xe2\x3c\xe1\x2b\x55\x08\x63\x97\x22\x4f\x72\x9d\x8a\xbc\x83\xe3\x5d\x9c\xd5\x0a\x95\x83\x2b\xb4\x9e\x1f\xaf\x0e\xc7\x73\x24\x43\x85\x6e\xa3\xcd\xea\x6c\x96\x52\x39\x34\x0a\x1d\x08\x47\xe2\x56\x26\x1f\x90\xb5\x89\x1b\x92\x54\xa8\x14\xf3\xbc\xf3\xd6\xbe\xfe\xfb\x14\xde\xf8\x39\xe4\x80\x9a\x95\x63\x19\xcc\x85\xec\xa6\xfe\xb6\x09\x60\x32\x99\x85\xb3\x58\x94\x39\x3a\x04\x5b\xd1\x96\xce\xab\x3c\xdf\x4e\xe1\xa6\x52\xf0\x50\xa7\x3f\x75\x66\xf0\x40\xf7\x9d\xc1\x42\xaf\x91\x7c\xa3\x93\x22\xcf\xb7\x4d\xe6\x28\xac\x45\xd7\xbf\x0b\x2d\xa4\x3e\x0d\x4d\xac\x13\xae\xea\x8a\x16\x9f\x3f\x7f\xfe\xfc\xd5\xab\x57\xaf\x5a\x7b\xd1\x92\xe1\x96\x97\x02\x4d\xa0\x89\xa3\xb8\x72\x01\x05\xb3\x31\x2a\x8a\xaa\xc9\x20\x54\x5d\xbc\x72\xfa\x8d\xec\xfc\xbd\x6e\xaf\x1d\xcf\xa4\x77\xbf\xef\xda\x21\x6b\xef\x8e\x8f\xe6\x37\xa4\xbf\x3d\x96\x67\x68\x30\xd5\x45\x21\x54\x96\x70\xea\xc8\xb7\x35\x79\xb9\x44\xb8\x84\xe2\xad\x0e\xa6\x8f\x8f\xd3\xb4\xc8\x76\xbb\x90\x70\x3e\x3e\x4e\x69\xa1\xdb\x96\xb8\xdb\xb1\xa7\xa4\xb5\xbb\xdd\xfd\x74\xda\xcb\x9b\x83\xe4\x6d\x12\xed\x79\xa0\xd8\xf6\xf8\x48\x21\x7b\x60\x40\x20\x77\xbb\x7b\x58\x8a\x50\x4e\x69\x0b\x5c\x9f\x90\xf1\xdc\xbb\xab\x73\x6f\xe3\x38\x1c\x05\x30\x9d\xf6\xa4\xda\x81\x45\xdc\xd0\x1f\x29\x62\x43\x73\x8c\x90\x71\x76\xb7\x98\x77\xcd\x8c\xa3\x82\xf6\xca\x99\x61\x89\x2a\x43\x95\x9e\xa2\xce\x66\xd1\xf9\x7c\x9a\x23\xd2\xa9\xd3\xb7\x47\xd9\x7c\x8f\xe1\x1c\x47\x41\x8e\xa1\x32\x5d\x71\xd9\xdb\xbd\x4a\xcf\x71\xd1\xff\x1f\xef\x88\x28\xcf\x69\x76\xf2\x7d\x3b\xf8\xd4\xcd\xfd\x98\x3d\x1c\x79\x32\xba\x90\xf4\xef\xe3\xdd\x41\xcd\xee\x9c\x9d\xec\x43\x15\x2a\x04\xe7\xde\x39\x8c\xc8\xdf\x00\x75\x05\xa2\x0f\x0b\x64\x95\xa1\x9d\x0c\x6c\xdb\xf1\xcf\x9f\x67\x6f\x51\xc6\xb9\xae\x54\x96\x04\xbc\xc1\x53\x75\x1a\x40\x8e\xae\xd3\x07\x6f\x96\x32\x5d\xc2\x86\xbb\x14\x84\x2b\xf3\x71\xa3\x5b\x22\xa4\x95\x31\xa4\x98\x28\x60\x2c\x9a\xf0\x25\xe5\x3f\x13\x05\x61\x59\x16\xd2\xdf\xe8\xb0\x20\xd4\xd4\x92\x50\xac\xed\xaa\x77\xfb\x51\x4e\x26\xa0\x55\xef\x33\xc8\x75\x8c\x6c\x02\x22\x6f\x87\xbe\xf5\xb6\x11\x0e\x53\xaf\x08\x4c\x40\x18\xac\x75\x7d\xd1\x58\x3a\x64\xd2\x60\xea\x82\xf5\x1b\x5f\xed\x1e\xea\x23\x5c\xde\xdc\x5c\xdf\xdc\x76\xe0\x7e\x75\xf8\x0f\xfc\x74\x78\x32\xf0\xea\x55\xcf\xf5\x63\xcc\xfe\x41\x5b\x29\xbd\x51\x09\x45\x0a\xc3\x47\x9d\x66\x91\xaa\xc2\xaa\x29\x34\x0d\x02\xd0\x2a\xdf\x82\xad\x4a\xdf\xed\xba\xe0\xb2\xf2\xd4\x6e\xad\xc3\x02\x66\x52\x65\x52\x2d\x2c\x68\x03\x0b\xe9\x96\xd5\x6c\x9a\xea\xa2\x2e\xaa\xf7\xdf\x97\xc6\xc4\x3b\x33\x35\x28\x5c\x17\x4c\xee\x3e\x02\x4f\xd9\x33\xcb\x8d\x74\x4b\xe0\xb6\x25\x14\x68\xad\x58\xe0\x4b\x1a\x44\x63\x76\x3b\x2e\xde\xfb\xb1\x54\x67\x7e\x80\x3e\x0c\x64\x33\x2d\x48\xfe\xac\xf4\x42\xca\x9e\x9c\x94\x3f\x09\xd2\x1c\x31\x4b\xa4\x5a\xeb\x55\x17\xa0\x77\xec\xb6\xc8\x5d\xf8\x69\x7c\x20\x69\x19\x6c\x96\xdc\x00\x0b\x48\x9d\x6f\x3e\x86\xa1\x3f\x07\xed\x0a\xb7\x75\x0d\x85\xe2\x5d\xe1\xb4\xe9\xab\x0f\xd5\x73\xb8\xdc\xf0\x35\x2a\xf3\x9e\xec\x31\xd0\x19\xe4\x19\x4b\xa9\x89\xd2\xce\x3b\xbb\x0e\x86\x1f\xda\x35\x57\xf6\xd5\x3c\x9b\xf2\x5d\x2e\x7a\xb6\x23\xea\x21\xa6\x1c\xbd\x17\xd2\x16\xc2\xa5\x5d\xe1\x3b\x09\x58\x9b\x07\x2d\xc8\x98\x45\x16\xfd\xa9\x54\x87\xc5\x7d\x3f\x1e\x30\x40\xa6\xd1\x17\x96\x98\x09\x6f\x2b\xbb\x37\x9a\x54\xb4\x88\xec\xd5\x92\xfd\x68\x14\xa3\x5f\x88\x90\xff\x93\x79\x89\x5c\x76\xa9\xed\xca\x8f\xd2\x31\x0f\x5b\x52\x97\x6d\x89\x57\xf8\x4c\x58\x9a\xde\xea\x1e\x2a\x6d\x18\xbb\xe0\x2e\x38\xaf\xf1\x1f\xc7\xe8\x39\x42\x1c\x50\xf5\xcd\x29\x80\x0e\xf4\xca\x47\xc1\x23\xfa\xd9\x82\xaf\xf2\x78\x55\xe2\x37\x87\xca\x46\xd0\xf8\x8d\xef\x30\x12\xe7\x7b\x44\xb1\xc9\x02\xbb\x0a\x98\xcd\x51\x5e\xa0\xef\xde\x06\xdf\xdb\x94\xca\x43\xb1\xa6\xb9\xc9\xe8\x7e\x93\x69\xeb\xf8\x8e\xd6\xa9\x87\x9e\x78\x89\xf9\xf4\xd4\xdc\x3a\xf0\xed\x09\xcc\x71\x21\xa9\xb1\xd1\xb2\x50\xdb\xda\x36\xc8\x89\xb4\xb6\x7d\x50\xaf\xa1\x88\x5a\x43\x18\x14\xa3\x32\xf9\xe9\x96\xeb\x0b\x5b\x21\x85\xbe\xbb\x79\xcf\x08\xb8\xd4\xc5\x47\xe9\xeb\x5e\x8e\x7d\xef\x5b\xf2\x63\x80\x14\x22\x9f\x6b\x53\x74\x6a\xee\x43\x1c\xef\x43\x30\x85\xcf\x66\x0b\x62\x21\xa4\x1a\x4a\xe9\x8d\x49\xfe\x65\xb5\xaa\x9d\x6d\x5a\x64\x3d\x9d\x5b\x2e\xee\x4b\x55\x56\x0e\x32\xe1\x04\x7c\x08\xda\xf8\x39\x2d\xb2\x9f\xc9\xf5\xf6\x73\x12\xa5\x6c\x2a\xf0\xde\x68\xb4\x49\x2c\xfe\x5e\xa1\xea\x2c\x91\xfb\x47\x2f\x17\xb7\x61\xd6\xfe\x61\x69\xf9\x77\x6f\xcf\x7b\x3e\x6c\xc2\x55\x6f\x5e\x50\x4a\x9a\x9d\x0a\xe5\x43\x91\x19\xfa\x60\x00\x33\x98\x09\x8b\x19\x68\xd5\x32\xb2\x8b\x08\xe9\x08\xcd\x29\x7c\xca\x51\x58\x84\xaa\xcc\x84\xc3\x03\xa7\xc9\x97\x67\x9a\x57\xd9\x21\x4e\x61\x41\xc0\x06\x67\x87\x1c\x06\x77\x27\xe8\xa9\xdf\x40\x5f\x1f\xf1\x23\xa4\x9a\xb0\x6a\x0a\x57\xce\x67\x5f\xda\x2d\xf9\x2e\xe6\x53\x35\xaf\x54\x38\x53\xf1\xe0\x4d\xbc\x76\xb4\xc2\xd0\x76\x2d\x88\x0a\x7e\x2b\x31\x1d\x73\x92\x02\xd6\xb8\xc5\xd1\x3f\x90\x63\x4c\x88\xeb\x77\xa2\x67\xe0\x8d\x93\x20\xb2\xba\x72\x6d\x67\x31\x85\x2f\x8d\x13\x8e\xae\x82\x96\x4d\x6a\x77\x42\x06\x13\x83\x85\x81\x6b\x2d\x88\x13\xd5\x94\x50\xb6\xe2\x30\xc9\xa4\x19\xe5\xe4\x8e\x8a\x45\x72\xd4\x7a\x2f\xb5\x54\x3e\xa4\xf2\x29\x9a\xc3\x90\x18\x50\x20\xd3\x1c\xe7\x09\xa5\x80\x51\x2a\xcb\x39\xc5\xbe\x87\xeb\x17\x23\x15\x94\xb0\x8b\x35\x26\x99\x4e\x57\xd8\xf5\x40\xef\x8d\x50\x4c\x55\xac\x11\xde\xf2\x44\x90\x05\x07\xe0\x03\x81\xa5\xcc\x31\x11\xb9\x41\x91\x6d\x13\xfc\x26\x6d\xe7\xdb\x86\x77\x74\x42\xc2\x4c\xf0\x33\x07\x68\x67\x72\x3e\x47\x4a\x08\x9b\xac\x44\xa2\xf5\x06\x65\x29\x72\xca\xc5\x0c\xbb\x9a\x23\xd7\x0a\x81\xec\x30\xc7\xc3\xb4\xbf\xf9\x1a\xb7\xc4\x6d\x34\xd4\xcc\xb8\x69\xe2\x75\x4d\xb3\xe3\x37\xef\x58\x97\xd2\xc2\x4a\xaa\x8c\x0e\x48\xb0\xc5\xd0\x94\x7c\x72\xf1\x1c\x78\x0a\xf2\x2f\x2d\x20\x0c\xfd\x08\x9c\xf0\xbe\xec\x89\x5f\x61\x63\xe1\x86\x3a\xc5\x6e\x11\x14\xc4\xb4\x06\x59\x06\x8b\xa5\x30\xf4\x85\xa9\x5b\x1f\x33\x1d\x97\x6d\x9c\xf1\x87\x43\x96\x90\xc8\xa7\xda\xb9\xd2\x5e\x53\x16\xdd\x69\xcc\x4e\xf5\x15\x81\x59\xeb\xbc\x0f\xf0\x8b\xde\x37\x59\x8a\x35\x79\x2a\xb6\x25\x5f\x48\xb7\x01\x4c\xd7\x13\xd2\xf6\x35\x14\xc9\x04\x7f\x15\x4d\x3b\x3e\x4a\x20\x9f\xaf\xa2\x33\xf2\x89\x3e\x87\x62\xb4\x7f\x21\xbb\x9d\xc6\x37\x9d\xe1\x25\x9b\xa7\x67\xf9\xa2\x22\x63\x5a\xd2\x69\xe4\x05\x1c\xb1\x4b\x05\x22\xda\x74\xa4\x30\x70\xf8\xb5\x9a\xe7\x32\x25\x2f\x93\x84\xc4\x8d\x24\x34\xda\xda\x58\x09\xe9\x3a\xae\xad\xf3\x13\x53\x3e\x12\x3a\x7c\x0e\x32\x47\x59\x39\xf8\x2d\xaa\xdc\xc9\x32\xf7\x59\xa3\x3f\x3c\xf4\x29\x44\x24\x9e\x39\xbb\xaf\x78\xf7\x1e\x94\x41\x5c\xbb\x8b\x3b\x01\xe9\xfc\x89\x2a\xb5\xb5\x72\xe6\x4f\x01\x2b\x24\x0a\xe2\xb9\x36\xea\x99\x51\x5c\x52\x5b\x3a\x83\x78\x72\x08\x83\x24\xcc\xe6\x49\xd2\x73\x82\x32\x4d\x95\xe3\x19\x9a\xa4\x65\x21\xbb\xc8\xf1\x98\x0e\x1b\xfc\xd1\xdf\x1f\x04\x12\x2a\xbb\xa0\x43\x1d\x55\xb0\xbf\x25\x53\xff\x20\xf8\x47\x28\x99\x05\x3c\xa6\x61\x61\xad\x4e\x25\x93\x3e\x8e\xf8\x22\x82\x3b\x54\x3e\x0b\x7f\x96\xe6\x85\x69\xde\x54\x70\x33\xbb\xf3\x05\x67\x68\x90\x41\x2e\x15\x82\x30\x8b\x8a\x93\x62\x52\xa1\x59\xec\x76\xed\x78\x91\xe9\x4c\xa0\xf4\x10\xbd\x2f\xdf\xb2\x3e\x78\xe4\x04\x44\x2b\xdc\xfe\x30\x54\x2b\xdc\x5e\x30\x2d\x28\x85\x34\x4f\xe0\xed\x0f\xb3\x7f\xc7\x6f\xa2\x28\x29\xd8\xad\xc9\xad\x70\x3b\x4a\x86\x10\x60\x0d\x3f\xfd\xe9\x12\xe0\x97\xc8\xf2\x57\xf6\xc1\x81\x9e\x7f\x17\xe4\x2f\xae\xba\x14\x32\xf1\x05\xc9\x56\x7a\x19\x8d\x23\x8a\x26\xc0\xaf\xe6\x24\xa3\x21\x31\x54\x7b\xc0\xdf\x2b\x69\xb8\xb6\x55\x56\xce\x8e\xb2\x92\x9b\xb0\xc6\xa7\x32\xfe\xb4\xec\x59\x85\x05\x5c\xa3\x02\x31\x77\x68\x40\x94\x65\xce\xfd\x13\x7e\xd8\x50\x6a\x4f\x27\xf4\x52\x51\xad\xa7\xb0\x16\x46\x8a\x59\x8e\x8d\xc1\x5b\x74\x35\xc5\xfd\x29\xf1\x00\xfb\x2c\xaa\x79\x37\x15\x4f\xc3\xc5\x61\x29\x47\x1b\x4a\x4e\xde\xbc\xbf\xe2\xcd\x9e\xeb\x3c\xd7\x1b\x8f\x86\xb0\xb3\x3e\xfd\xc7\xdd\x6e\x5c\xba\x5e\x0a\x63\xd1\xf4\xfe\x58\xa3\xa9\x1f\x18\x74\x46\x22\xbb\x83\x50\x36\xa8\xf7\x2f\x70\x3b\x64\xf7\xe5\xf5\xcd\xc7\xab\x8f\x7f\x1d\x5f\xa8\x8e\x0b\x4e\x2b\x55\x6f\x84\x51\x75\x37\x9c\x50\x76\xe5\xac\x37\x34\x46\x0a\xfb\x1a\xdb\xe0\xf7\x61\x63\x59\x03\x2f\x7d\xed\x80\x24\xba\xef\xcb\x6f\x02\x3f\x7e\x16\x74\x72\xb5\xa0\xfd\x8a\xb8\x55\x1d\x84\x0c\xdd\x70\x66\xc5\x9c\xc9\xc5\x64\x58\x1a\x4c\xc9\xf1\x26\x06\xcb\x5c\xa4\x9d\xa9\xc7\xe7\xa5\xe7\xa3\xf3\x2c\xd4\x41\xf9\x15\x96\x8f\x2c\xf7\xdb\xff\x1b\x99\xe7\x60\xb5\x56\x94\x13\x37\x1c\x6a\xc7\x53\x59\x1f\xb9\x72\x03\x07\x37\x7b\xe4\xac\x43\x31\x12\x7b\xd0\xc4\x39\x25\x5c\xbb\xd4\x55\x9e\x11\x3c\x0a\x24\xe1\xce\xfa\x5e\xa6\x6f\xb4\x78\x5f\x48\xb3\xf9\xd3\xf0\x23\x86\x1a\x11\xcf\x1f\xd8\x4a\xc2\xe5\x39\xd0\xd9\x7b\x5a\x5a\xa6\x8b\xd3\xe7\xa8\x27\xb0\xe4\xdc\x51\xac\x7b\x37\x6f\x88\x29\xaf\x8f\x1b\x1a\x9b\x66\xf1\x17\x1a\xed\x9f\x66\x0c\x03\xcb\x65\x21\x5d\x22\x17\x4a\x9b\x4e\x48\xd1\xa4\x43\x2c\xcb\x4b\x7c\x6e\x44\x9f\x0e\xcb\xc7\x94\xba\x7b\x72\x63\xb9\xa7\x4b\xa1\x16\x48\xfe\xb1\x03\xc0\xfb\x9a\x63\x5d\xaf\xb6\x51\xee\x7c\xeb\xfb\xa5\x35\x8d\x29\x5c\x11\x7b\xa9\x16\x63\x6c\x81\x11\xd8\x24\xd7\x8b\xc4\xca\x3f\xba\x00\xe4\x7a\x71\x2b\xff\xe0\xb2\x88\x5f\xb0\x27\x71\x63\xa2\x42\xf1\x35\x41\x21\x66\xfc\xa9\xca\x0b\x8e\xed\x7f\x7b\x31\x1a\x4a\x81\x85\x36\xdb\x3e\x34\x7e\xc6\xb9\x80\x7e\xfb\xcb\x7f\x32\xa4\xff\xf8\xed\x2f\xa3\x31\x91\xef\xd7\x55\x57\xbd\x39\x8c\x9e\x05\xe6\x85\xd7\xcf\xbf\xbf\xa0\x7f\xc3\x78\xb8\x75\x98\x94\x46\x97\x68\x9c\xec\x0c\xb9\xa3\x07\x6c\xf9\x2b\xdf\x70\xf6\xd7\x59\x68\x39\xfb\x3e\x64\x43\x2c\xb6\xa6\x8f\xfb\xc4\xe8\x12\x33\xcd\x06\x47\x9e\x51\x3a\xd0\x95\xb3\x32\xe3\x8d\xf8\x6c\xc4\x5a\x5a\x98\x55\x32\xcf\xfa\xfb\x96\x2c\x8a\x77\x07\x86\xcc\x76\x94\x2b\xa8\xad\x7f\xcf\x21\xa8\x03\x87\x1e\xb4\xcd\xdd\x58\xca\x0d\xfc\x5f\xa3\xba\x1f\x1f\xa7\x85\x54\xa1\x37\x47\x5f\x44\x3a\x50\xe9\x67\xa8\x31\x76\xf0\x87\xac\xcb\x4d\xc4\xee\x49\x98\x45\xf1\xc3\x41\x23\xe5\x48\xb1\xb5\xb3\x57\x72\x56\x83\x84\xd1\x86\xf6\x2b\x27\xf4\xbd\x15\xa9\x27\x9d\xb5\x3d\x17\x73\x50\xaa\x6a\x62\xbb\x1c\x53\x07\x42\x69\xb7\x0c\x99\xe4\x30\xa4\x98\x21\x0e\x36\x17\x3f\x3f\xa9\xfd\xb4\x03\x86\xf0\xf8\x1e\x33\x50\x7a\x5c\x87\x9c\xb9\xb7\x1e\xa7\xb0\x52\xc6\x80\x38\xfa\x74\x23\xdc\x38\x87\x31\xea\x26\x74\x70\x7c\x1f\xf4\x58\x05\x6b\x84\x86\x5a\x3f\xa1\x49\xf4\x1a\x8d\x91\x59\x86\x5d\x75\x18\x42\xd8\xfe\x45\x4d\xf3\xb8\xa8\x59\x1a\x63\x85\xf6\xdb\x91\xb1\x1b\x95\x48\x9b\x94\xd5\x2c\x97\x5d\xbf\x15\xf4\xbb\xc2\x73\x63\x1f\xc2\xff\x68\x48\x58\xf0\x0b\x9f\xe4\xb8\x94\x6c\x7b\xdf\x32\x43\x58\x4b\x9f\x6e\xd3\x39\x4c\x05\x7b\x1a\xff\x6a\x1c\x33\x98\x6d\x41\xa8\xad\x56\x3d\x3f\xc2\x61\xac\xb1\x6c\x86\xb3\x04\xbf\xf1\x6b\xe1\xfe\x6b\xfc\x69\xd5\x8c\x1b\x02\xdc\x96\x50\x19\xfd\xff\xdc\xd3\x79\xd2\x11\xa0\x83\x40\xaa\xdc\xe0\x6c\xe2\x2f\xf7\xf0\x2d\x2c\xe8\x49\xd2\x3c\xd2\x56\xe7\x87\xe0\xf6\xd6\xd8\xba\xfa\x01\x64\x61\xed\x26\xca\xa8\xf6\x8e\x4f\xd3\x9a\x45\x53\x78\xa3\xd5\x9a\xdc\x7d\x48\x09\x1a\x16\x4e\xef\x91\x1f\x36\xd9\x43\xa9\x06\x3a\x59\x7d\xb5\xc3\x46\xb6\x38\x70\xa2\x74\x75\x43\xe9\x50\xbe\x36\xa3\x5a\xc2\xc1\xf6\xd3\xdb\xcb\xff\xba\xfb\xeb\xe8\x14\x8e\x67\x9f\x96\xbf\x65\xb3\x45\x62\x51\x98\x74\x49\xda\x8b\x87\xbf\x6e\x7f\x74\xaa\x30\xac\xa8\x0f\xff\x7e\xc3\x24\xfa\x49\xba\x3b\x9a\x4b\x72\x20\x0c\x24\x28\x87\x1e\xf2\x47\x7b\xc7\x33\x3d\x23\x41\xab\xaf\x0e\xff\x00\xaf\xe7\xb7\xe3\x6f\x8f\xbc\x02\x09\x1a\x79\x09\xef\x18\x41\xf3\x53\x65\x2e\x06\x12\xb1\x53\x01\xf4\xff\xec\xef\x74\x0c\xed\x37\x7e\xf1\x4d\x6a\x80\xf4\xec\xfe\xd9\xff\x06\x00\x00\xff\xff\x64\x87\x26\x11\x70\x42\x00\x00")
 
 func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
 	return bindataRead(
@@ -112,7 +112,7 @@
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 16898, mode: os.FileMode(420), modTime: time.Unix(1525997024, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 17008, mode: os.FileMode(420), modTime: time.Unix(1528157319, 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 ea6505e..614d434 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -363,6 +363,10 @@
     "id": "msg_err_required_inputs_missing_value",
     "translation": "Required inputs are missing values even after applying interpolation using env. variables. Please set missing env. variables and/or input values in manifest/deployment file or on CLI for following inputs: {{.inputs}}"
   },
+  {
+    "id": "msg_err_runtime_parser_error",
+    "translation": "Failed to retrieve runtimes {{.err}}."
+  },
 
   {
     "id": "WARNINGS",