// Copyright (c) Microsoft Corporation
// All rights reserved. 
//
// Licensed 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 
//
// THIS CODE IS PROVIDED ON AN  *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. 
//
// See the Apache Version 2.0 License for specific language governing permissions and limitations under the License.

// TODO: Verify that this is is still needed..
#define NTDDI_VERSION 0x06010000

#include <v8.h>
#include "nan.h"
#include <string>
#include <ppltasks.h>
#include "CollectionsConverter.h"
#include "CollectionsWrap.h"
#include "node-async.h"
#include "NodeRtUtils.h"
#include "OpaqueWrapper.h"
#include "WrapperBase.h"

#using <Windows.WinMD>

// this undefs fixes the issues of compiling Windows.Data.Json, Windows.Storag.FileProperties, and Windows.Stroage.Search
// Some of the node header files brings windows definitions with the same names as some of the WinRT methods
#undef DocumentProperties
#undef GetObject
#undef CreateEvent
#undef FindText
#undef SendMessage

const char* REGISTRATION_TOKEN_MAP_PROPERTY_NAME = "__registrationTokenMap__";

using v8::Array;
using v8::String;
using v8::Handle;
using v8::Value;
using v8::Boolean;
using v8::Integer;
using v8::FunctionTemplate;
using v8::Object;
using v8::Local;
using v8::Function;
using v8::Date;
using v8::Number;
using v8::PropertyAttribute;
using v8::Primitive;
using Nan::HandleScope;
using Nan::Persistent;
using Nan::Undefined;
using Nan::True;
using Nan::False;
using Nan::Null;
using Nan::MaybeLocal;
using Nan::EscapableHandleScope;
using Nan::HandleScope;
using Nan::TryCatch;
using namespace concurrency;

namespace NodeRT { namespace Windows { namespace ApplicationModel { namespace Activation { 

  v8::Local<v8::Value> WrapPrintTaskSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ UnwrapPrintTaskSettingsActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapPrint3DWorkflowActivatedEventArgs(::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ UnwrapPrint3DWorkflowActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapLockScreenCallActivatedEventArgs(::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ UnwrapLockScreenCallActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapCameraSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ UnwrapCameraSettingsActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContactPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ UnwrapContactPickerActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContactCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ UnwrapContactCallActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContactMessageActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ UnwrapContactMessageActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContactMapActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ UnwrapContactMapActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContactPostActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ UnwrapContactPostActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapContactVideoCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ UnwrapContactVideoCallActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWalletActionActivatedEventArgs(::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ UnwrapWalletActionActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapSplashScreen(::Windows::ApplicationModel::Activation::SplashScreen^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::SplashScreen^ UnwrapSplashScreen(Local<Value> value);
  
  v8::Local<v8::Value> WrapIActivatedEventArgs(::Windows::ApplicationModel::Activation::IActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IActivatedEventArgs^ UnwrapIActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIPrintTaskSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ UnwrapIPrintTaskSettingsActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIPrint3DWorkflowActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ UnwrapIPrint3DWorkflowActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapICameraSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ UnwrapICameraSettingsActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContactPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ UnwrapIContactPickerActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContactActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ UnwrapIContactActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContactCallActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ UnwrapIContactCallActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContactMessageActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ UnwrapIContactMessageActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContactMapActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ UnwrapIContactMapActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContactPostActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ UnwrapIContactPostActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContactVideoCallActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ UnwrapIContactVideoCallActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContactsProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ UnwrapIContactsProviderActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIWalletActionActivatedEventArgs(::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ UnwrapIWalletActionActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIApplicationViewActivatedEventArgs(::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ UnwrapIApplicationViewActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIViewSwitcherProvider(::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ UnwrapIViewSwitcherProvider(Local<Value> value);
  
  v8::Local<v8::Value> WrapIPrelaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ UnwrapIPrelaunchActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapILaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ UnwrapILaunchActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapILockScreenCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ UnwrapILockScreenCallActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ UnwrapLaunchActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapISearchActivatedEventArgs(::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ UnwrapISearchActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapISearchActivatedEventArgsWithLinguisticDetails(::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ UnwrapISearchActivatedEventArgsWithLinguisticDetails(Local<Value> value);
  
  v8::Local<v8::Value> WrapSearchActivatedEventArgs(::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ UnwrapSearchActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIShareTargetActivatedEventArgs(::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ UnwrapIShareTargetActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapShareTargetActivatedEventArgs(::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ UnwrapShareTargetActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ UnwrapIFileActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileActivatedEventArgsWithNeighboringFiles(::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ UnwrapIFileActivatedEventArgsWithNeighboringFiles(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileActivatedEventArgsWithCallerPackageFamilyName(::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ UnwrapIFileActivatedEventArgsWithCallerPackageFamilyName(Local<Value> value);
  
  v8::Local<v8::Value> WrapFileActivatedEventArgs(::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ UnwrapFileActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIProtocolActivatedEventArgs(::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ UnwrapIProtocolActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ UnwrapIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(Local<Value> value);
  
  v8::Local<v8::Value> WrapProtocolActivatedEventArgs(::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ UnwrapProtocolActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIProtocolForResultsActivatedEventArgs(::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ UnwrapIProtocolForResultsActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapProtocolForResultsActivatedEventArgs(::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ UnwrapProtocolForResultsActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileOpenPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ UnwrapIFileOpenPickerActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileOpenPickerActivatedEventArgs2(::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ UnwrapIFileOpenPickerActivatedEventArgs2(Local<Value> value);
  
  v8::Local<v8::Value> WrapFileOpenPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ UnwrapFileOpenPickerActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileSavePickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ UnwrapIFileSavePickerActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileSavePickerActivatedEventArgs2(::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ UnwrapIFileSavePickerActivatedEventArgs2(Local<Value> value);
  
  v8::Local<v8::Value> WrapFileSavePickerActivatedEventArgs(::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ UnwrapFileSavePickerActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapICachedFileUpdaterActivatedEventArgs(::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ UnwrapICachedFileUpdaterActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapCachedFileUpdaterActivatedEventArgs(::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ UnwrapCachedFileUpdaterActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIDeviceActivatedEventArgs(::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ UnwrapIDeviceActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDeviceActivatedEventArgs(::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ UnwrapDeviceActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIAppointmentsProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ UnwrapIAppointmentsProviderActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIAppointmentsProviderAddAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderAddAppointmentActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppointmentsProviderAddAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderAddAppointmentActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIAppointmentsProviderReplaceAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderReplaceAppointmentActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppointmentsProviderReplaceAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderReplaceAppointmentActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIAppointmentsProviderRemoveAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderRemoveAppointmentActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIPickerReturnedActivatedEventArgs(::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ UnwrapIPickerReturnedActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapPickerReturnedActivatedEventArgs(::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ UnwrapPickerReturnedActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppointmentsProviderRemoveAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderRemoveAppointmentActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ UnwrapIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ UnwrapAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIAppointmentsProviderShowTimeFrameActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ UnwrapIAppointmentsProviderShowTimeFrameActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapAppointmentsProviderShowTimeFrameActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ UnwrapAppointmentsProviderShowTimeFrameActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIRestrictedLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ UnwrapIRestrictedLaunchActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapRestrictedLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ UnwrapRestrictedLaunchActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapILockScreenActivatedEventArgs(::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ UnwrapILockScreenActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapLockScreenActivatedEventArgs(::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ UnwrapLockScreenActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIContinuationActivatedEventArgs(::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ UnwrapIContinuationActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileOpenPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ UnwrapIFileOpenPickerContinuationEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapFileOpenPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ UnwrapFileOpenPickerContinuationEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFileSavePickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ UnwrapIFileSavePickerContinuationEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapFileSavePickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ UnwrapFileSavePickerContinuationEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIFolderPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ UnwrapIFolderPickerContinuationEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapFolderPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ UnwrapFolderPickerContinuationEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIWebAuthenticationBrokerContinuationEventArgs(::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ UnwrapIWebAuthenticationBrokerContinuationEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebAuthenticationBrokerContinuationEventArgs(::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ UnwrapWebAuthenticationBrokerContinuationEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIWebAccountProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ UnwrapIWebAccountProviderActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapWebAccountProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ UnwrapWebAccountProviderActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIToastNotificationActivatedEventArgs(::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ UnwrapIToastNotificationActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapToastNotificationActivatedEventArgs(::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ UnwrapToastNotificationActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIDialReceiverActivatedEventArgs(::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ UnwrapIDialReceiverActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDialReceiverActivatedEventArgs(::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ UnwrapDialReceiverActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIDevicePairingActivatedEventArgs(::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ UnwrapIDevicePairingActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapDevicePairingActivatedEventArgs(::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ UnwrapDevicePairingActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapIVoiceCommandActivatedEventArgs(::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ UnwrapIVoiceCommandActivatedEventArgs(Local<Value> value);
  
  v8::Local<v8::Value> WrapVoiceCommandActivatedEventArgs(::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ wintRtInstance);
  ::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ UnwrapVoiceCommandActivatedEventArgs(Local<Value> value);
  


  static void InitApplicationExecutionStateEnum(const Local<Object> exports)
  {
    HandleScope scope;
    
	Local<Object> enumObject = Nan::New<Object>();
    Nan::Set(exports, Nan::New<String>("ApplicationExecutionState").ToLocalChecked(), enumObject);
	Nan::Set(enumObject, Nan::New<String>("notRunning").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ApplicationExecutionState::NotRunning)));
	Nan::Set(enumObject, Nan::New<String>("running").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ApplicationExecutionState::Running)));
	Nan::Set(enumObject, Nan::New<String>("suspended").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ApplicationExecutionState::Suspended)));
	Nan::Set(enumObject, Nan::New<String>("terminated").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ApplicationExecutionState::Terminated)));
	Nan::Set(enumObject, Nan::New<String>("closedByUser").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ApplicationExecutionState::ClosedByUser)));
  }


  static void InitActivationKindEnum(const Local<Object> exports)
  {
    HandleScope scope;
    
	Local<Object> enumObject = Nan::New<Object>();
    Nan::Set(exports, Nan::New<String>("ActivationKind").ToLocalChecked(), enumObject);
	Nan::Set(enumObject, Nan::New<String>("launch").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::Launch)));
	Nan::Set(enumObject, Nan::New<String>("search").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::Search)));
	Nan::Set(enumObject, Nan::New<String>("shareTarget").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::ShareTarget)));
	Nan::Set(enumObject, Nan::New<String>("file").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::File)));
	Nan::Set(enumObject, Nan::New<String>("protocol").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::Protocol)));
	Nan::Set(enumObject, Nan::New<String>("fileOpenPicker").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::FileOpenPicker)));
	Nan::Set(enumObject, Nan::New<String>("fileSavePicker").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::FileSavePicker)));
	Nan::Set(enumObject, Nan::New<String>("cachedFileUpdater").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::CachedFileUpdater)));
	Nan::Set(enumObject, Nan::New<String>("contactPicker").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::ContactPicker)));
	Nan::Set(enumObject, Nan::New<String>("device").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::Device)));
	Nan::Set(enumObject, Nan::New<String>("printTaskSettings").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::PrintTaskSettings)));
	Nan::Set(enumObject, Nan::New<String>("cameraSettings").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::CameraSettings)));
	Nan::Set(enumObject, Nan::New<String>("restrictedLaunch").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::RestrictedLaunch)));
	Nan::Set(enumObject, Nan::New<String>("appointmentsProvider").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::AppointmentsProvider)));
	Nan::Set(enumObject, Nan::New<String>("contact").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::Contact)));
	Nan::Set(enumObject, Nan::New<String>("lockScreenCall").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::LockScreenCall)));
	Nan::Set(enumObject, Nan::New<String>("voiceCommand").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::VoiceCommand)));
	Nan::Set(enumObject, Nan::New<String>("lockScreen").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::LockScreen)));
	Nan::Set(enumObject, Nan::New<String>("pickerReturned").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::PickerReturned)));
	Nan::Set(enumObject, Nan::New<String>("walletAction").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::WalletAction)));
	Nan::Set(enumObject, Nan::New<String>("pickFileContinuation").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::PickFileContinuation)));
	Nan::Set(enumObject, Nan::New<String>("pickSaveFileContinuation").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::PickSaveFileContinuation)));
	Nan::Set(enumObject, Nan::New<String>("pickFolderContinuation").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::PickFolderContinuation)));
	Nan::Set(enumObject, Nan::New<String>("webAuthenticationBrokerContinuation").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::WebAuthenticationBrokerContinuation)));
	Nan::Set(enumObject, Nan::New<String>("webAccountProvider").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::WebAccountProvider)));
	Nan::Set(enumObject, Nan::New<String>("componentUI").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::ComponentUI)));
	Nan::Set(enumObject, Nan::New<String>("protocolForResults").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::ProtocolForResults)));
	Nan::Set(enumObject, Nan::New<String>("toastNotification").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::ToastNotification)));
	Nan::Set(enumObject, Nan::New<String>("print3DWorkflow").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::Print3DWorkflow)));
	Nan::Set(enumObject, Nan::New<String>("dialReceiver").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::DialReceiver)));
	Nan::Set(enumObject, Nan::New<String>("devicePairing").ToLocalChecked(), Nan::New<Integer>(static_cast<int>(::Windows::ApplicationModel::Activation::ActivationKind::DevicePairing)));
  }



  
  static bool IsActivatedEventsContractJsObject(Local<Value> value)
  {
    if (!value->IsObject())
    {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::ApplicationModel::Activation::ActivatedEventsContract ActivatedEventsContractFromJsObject(Local<Value> value)
  {
    HandleScope scope;
    ::Windows::ApplicationModel::Activation::ActivatedEventsContract returnValue;
    
    if (!value->IsObject())
    {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> ActivatedEventsContractToJsObject(::Windows::ApplicationModel::Activation::ActivatedEventsContract value)
  {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();

    
    return scope.Escape(obj);
  }

  
  static bool IsActivationCameraSettingsContractJsObject(Local<Value> value)
  {
    if (!value->IsObject())
    {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::ApplicationModel::Activation::ActivationCameraSettingsContract ActivationCameraSettingsContractFromJsObject(Local<Value> value)
  {
    HandleScope scope;
    ::Windows::ApplicationModel::Activation::ActivationCameraSettingsContract returnValue;
    
    if (!value->IsObject())
    {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> ActivationCameraSettingsContractToJsObject(::Windows::ApplicationModel::Activation::ActivationCameraSettingsContract value)
  {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();

    
    return scope.Escape(obj);
  }

  
  static bool IsContactActivatedEventsContractJsObject(Local<Value> value)
  {
    if (!value->IsObject())
    {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::ApplicationModel::Activation::ContactActivatedEventsContract ContactActivatedEventsContractFromJsObject(Local<Value> value)
  {
    HandleScope scope;
    ::Windows::ApplicationModel::Activation::ContactActivatedEventsContract returnValue;
    
    if (!value->IsObject())
    {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> ContactActivatedEventsContractToJsObject(::Windows::ApplicationModel::Activation::ContactActivatedEventsContract value)
  {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();

    
    return scope.Escape(obj);
  }

  
  static bool IsWebUISearchActivatedEventsContractJsObject(Local<Value> value)
  {
    if (!value->IsObject())
    {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::ApplicationModel::Activation::WebUISearchActivatedEventsContract WebUISearchActivatedEventsContractFromJsObject(Local<Value> value)
  {
    HandleScope scope;
    ::Windows::ApplicationModel::Activation::WebUISearchActivatedEventsContract returnValue;
    
    if (!value->IsObject())
    {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> WebUISearchActivatedEventsContractToJsObject(::Windows::ApplicationModel::Activation::WebUISearchActivatedEventsContract value)
  {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();

    
    return scope.Escape(obj);
  }

  
  static bool IsRectJsObject(Local<Value> value)
  {
    if (!value->IsObject())
    {
      return false;
    }

    Local<String> symbol;
    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();

    return true;
  }

  ::Windows::Foundation::Rect RectFromJsObject(Local<Value> value)
  {
    HandleScope scope;
    ::Windows::Foundation::Rect returnValue;
    
    if (!value->IsObject())
    {
      Nan::ThrowError(Nan::TypeError(NodeRT::Utils::NewString(L"Unexpected type, expected an object")));
      return returnValue;
    }

    Local<Object> obj = Nan::To<Object>(value).ToLocalChecked();
    Local<String> symbol;

    return returnValue;
  }

  Local<Value> RectToJsObject(::Windows::Foundation::Rect value)
  {
    EscapableHandleScope scope;

    Local<Object> obj = Nan::New<Object>();

    
    return scope.Escape(obj);
  }

  
  class PrintTaskSettingsActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("PrintTaskSettingsActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("configuration").ToLocalChecked(), ConfigurationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("PrintTaskSettingsActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    PrintTaskSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PrintTaskSettingsActivatedEventArgs *wrapperInstance = new PrintTaskSettingsActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapPrintTaskSettingsActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      PrintTaskSettingsActivatedEventArgs *wrapper = PrintTaskSettingsActivatedEventArgs::Unwrap<PrintTaskSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      PrintTaskSettingsActivatedEventArgs *wrapper = PrintTaskSettingsActivatedEventArgs::Unwrap<PrintTaskSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      PrintTaskSettingsActivatedEventArgs *wrapper = PrintTaskSettingsActivatedEventArgs::Unwrap<PrintTaskSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ConfigurationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      PrintTaskSettingsActivatedEventArgs *wrapper = PrintTaskSettingsActivatedEventArgs::Unwrap<PrintTaskSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Devices::Printers::Extensions::PrintTaskConfiguration^ result = wrapper->_instance->Configuration;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Devices.Printers.Extensions", "PrintTaskConfiguration", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapPrintTaskSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ UnwrapPrintTaskSettingsActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> PrintTaskSettingsActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapPrintTaskSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PrintTaskSettingsActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs^ UnwrapPrintTaskSettingsActivatedEventArgs(Local<Value> value)
  {
     return PrintTaskSettingsActivatedEventArgs::Unwrap<PrintTaskSettingsActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPrintTaskSettingsActivatedEventArgs(Local<Object> exports)
  {
    PrintTaskSettingsActivatedEventArgs::Init(exports);
  }

  class Print3DWorkflowActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("Print3DWorkflowActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("workflow").ToLocalChecked(), WorkflowGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("Print3DWorkflowActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    Print3DWorkflowActivatedEventArgs(::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      Print3DWorkflowActivatedEventArgs *wrapperInstance = new Print3DWorkflowActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapPrint3DWorkflowActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^>(info.This()))
      {
        return;
      }

      Print3DWorkflowActivatedEventArgs *wrapper = Print3DWorkflowActivatedEventArgs::Unwrap<Print3DWorkflowActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^>(info.This()))
      {
        return;
      }

      Print3DWorkflowActivatedEventArgs *wrapper = Print3DWorkflowActivatedEventArgs::Unwrap<Print3DWorkflowActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^>(info.This()))
      {
        return;
      }

      Print3DWorkflowActivatedEventArgs *wrapper = Print3DWorkflowActivatedEventArgs::Unwrap<Print3DWorkflowActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void WorkflowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^>(info.This()))
      {
        return;
      }

      Print3DWorkflowActivatedEventArgs *wrapper = Print3DWorkflowActivatedEventArgs::Unwrap<Print3DWorkflowActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Devices::Printers::Extensions::Print3DWorkflow^ result = wrapper->_instance->Workflow;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Devices.Printers.Extensions", "Print3DWorkflow", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapPrint3DWorkflowActivatedEventArgs(::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ UnwrapPrint3DWorkflowActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> Print3DWorkflowActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapPrint3DWorkflowActivatedEventArgs(::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(Print3DWorkflowActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs^ UnwrapPrint3DWorkflowActivatedEventArgs(Local<Value> value)
  {
     return Print3DWorkflowActivatedEventArgs::Unwrap<Print3DWorkflowActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPrint3DWorkflowActivatedEventArgs(Local<Object> exports)
  {
    Print3DWorkflowActivatedEventArgs::Init(exports);
  }

  class LockScreenCallActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("LockScreenCallActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("arguments").ToLocalChecked(), ArgumentsGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tileId").ToLocalChecked(), TileIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callUI").ToLocalChecked(), CallUIGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("LockScreenCallActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    LockScreenCallActivatedEventArgs(::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      LockScreenCallActivatedEventArgs *wrapperInstance = new LockScreenCallActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapLockScreenCallActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenCallActivatedEventArgs *wrapper = LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenCallActivatedEventArgs *wrapper = LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenCallActivatedEventArgs *wrapper = LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenCallActivatedEventArgs *wrapper = LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ArgumentsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenCallActivatedEventArgs *wrapper = LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Arguments;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void TileIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenCallActivatedEventArgs *wrapper = LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->TileId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CallUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenCallActivatedEventArgs *wrapper = LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Calls::LockScreenCallUI^ result = wrapper->_instance->CallUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Calls", "LockScreenCallUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenCallActivatedEventArgs *wrapper = LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapLockScreenCallActivatedEventArgs(::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ UnwrapLockScreenCallActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> LockScreenCallActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapLockScreenCallActivatedEventArgs(::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(LockScreenCallActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs^ UnwrapLockScreenCallActivatedEventArgs(Local<Value> value)
  {
     return LockScreenCallActivatedEventArgs::Unwrap<LockScreenCallActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitLockScreenCallActivatedEventArgs(Local<Object> exports)
  {
    LockScreenCallActivatedEventArgs::Init(exports);
  }

  class CameraSettingsActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("CameraSettingsActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("videoDeviceController").ToLocalChecked(), VideoDeviceControllerGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("videoDeviceExtension").ToLocalChecked(), VideoDeviceExtensionGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("CameraSettingsActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    CameraSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CameraSettingsActivatedEventArgs *wrapperInstance = new CameraSettingsActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapCameraSettingsActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CameraSettingsActivatedEventArgs *wrapper = CameraSettingsActivatedEventArgs::Unwrap<CameraSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CameraSettingsActivatedEventArgs *wrapper = CameraSettingsActivatedEventArgs::Unwrap<CameraSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CameraSettingsActivatedEventArgs *wrapper = CameraSettingsActivatedEventArgs::Unwrap<CameraSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VideoDeviceControllerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CameraSettingsActivatedEventArgs *wrapper = CameraSettingsActivatedEventArgs::Unwrap<CameraSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::Object^ result = wrapper->_instance->VideoDeviceController;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VideoDeviceExtensionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CameraSettingsActivatedEventArgs *wrapper = CameraSettingsActivatedEventArgs::Unwrap<CameraSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::Object^ result = wrapper->_instance->VideoDeviceExtension;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapCameraSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ UnwrapCameraSettingsActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> CameraSettingsActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapCameraSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CameraSettingsActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs^ UnwrapCameraSettingsActivatedEventArgs(Local<Value> value)
  {
     return CameraSettingsActivatedEventArgs::Unwrap<CameraSettingsActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCameraSettingsActivatedEventArgs(Local<Object> exports)
  {
    CameraSettingsActivatedEventArgs::Init(exports);
  }

  class ContactPickerActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ContactPickerActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contactPickerUI").ToLocalChecked(), ContactPickerUIGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ContactPickerActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ContactPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContactPickerActivatedEventArgs *wrapperInstance = new ContactPickerActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapContactPickerActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPickerActivatedEventArgs *wrapper = ContactPickerActivatedEventArgs::Unwrap<ContactPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPickerActivatedEventArgs *wrapper = ContactPickerActivatedEventArgs::Unwrap<ContactPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPickerActivatedEventArgs *wrapper = ContactPickerActivatedEventArgs::Unwrap<ContactPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContactPickerUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPickerActivatedEventArgs *wrapper = ContactPickerActivatedEventArgs::Unwrap<ContactPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Provider::ContactPickerUI^ result = wrapper->_instance->ContactPickerUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts.Provider", "ContactPickerUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapContactPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ UnwrapContactPickerActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ContactPickerActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContactPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContactPickerActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs^ UnwrapContactPickerActivatedEventArgs(Local<Value> value)
  {
     return ContactPickerActivatedEventArgs::Unwrap<ContactPickerActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContactPickerActivatedEventArgs(Local<Object> exports)
  {
    ContactPickerActivatedEventArgs::Init(exports);
  }

  class ContactCallActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ContactCallActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceId").ToLocalChecked(), ServiceIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceUserId").ToLocalChecked(), ServiceUserIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ContactCallActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ContactCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContactCallActivatedEventArgs *wrapperInstance = new ContactCallActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapContactCallActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactCallActivatedEventArgs *wrapper = ContactCallActivatedEventArgs::Unwrap<ContactCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactCallActivatedEventArgs *wrapper = ContactCallActivatedEventArgs::Unwrap<ContactCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactCallActivatedEventArgs *wrapper = ContactCallActivatedEventArgs::Unwrap<ContactCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactCallActivatedEventArgs *wrapper = ContactCallActivatedEventArgs::Unwrap<ContactCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactCallActivatedEventArgs *wrapper = ContactCallActivatedEventArgs::Unwrap<ContactCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactCallActivatedEventArgs *wrapper = ContactCallActivatedEventArgs::Unwrap<ContactCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceUserIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactCallActivatedEventArgs *wrapper = ContactCallActivatedEventArgs::Unwrap<ContactCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceUserId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapContactCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ UnwrapContactCallActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ContactCallActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContactCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContactCallActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs^ UnwrapContactCallActivatedEventArgs(Local<Value> value)
  {
     return ContactCallActivatedEventArgs::Unwrap<ContactCallActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContactCallActivatedEventArgs(Local<Object> exports)
  {
    ContactCallActivatedEventArgs::Init(exports);
  }

  class ContactMessageActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ContactMessageActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceId").ToLocalChecked(), ServiceIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceUserId").ToLocalChecked(), ServiceUserIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ContactMessageActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ContactMessageActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContactMessageActivatedEventArgs *wrapperInstance = new ContactMessageActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapContactMessageActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMessageActivatedEventArgs *wrapper = ContactMessageActivatedEventArgs::Unwrap<ContactMessageActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMessageActivatedEventArgs *wrapper = ContactMessageActivatedEventArgs::Unwrap<ContactMessageActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMessageActivatedEventArgs *wrapper = ContactMessageActivatedEventArgs::Unwrap<ContactMessageActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMessageActivatedEventArgs *wrapper = ContactMessageActivatedEventArgs::Unwrap<ContactMessageActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMessageActivatedEventArgs *wrapper = ContactMessageActivatedEventArgs::Unwrap<ContactMessageActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMessageActivatedEventArgs *wrapper = ContactMessageActivatedEventArgs::Unwrap<ContactMessageActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceUserIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMessageActivatedEventArgs *wrapper = ContactMessageActivatedEventArgs::Unwrap<ContactMessageActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceUserId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapContactMessageActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ UnwrapContactMessageActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ContactMessageActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContactMessageActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContactMessageActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs^ UnwrapContactMessageActivatedEventArgs(Local<Value> value)
  {
     return ContactMessageActivatedEventArgs::Unwrap<ContactMessageActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContactMessageActivatedEventArgs(Local<Object> exports)
  {
    ContactMessageActivatedEventArgs::Init(exports);
  }

  class ContactMapActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ContactMapActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("address").ToLocalChecked(), AddressGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ContactMapActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ContactMapActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContactMapActivatedEventArgs *wrapperInstance = new ContactMapActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapContactMapActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMapActivatedEventArgs *wrapper = ContactMapActivatedEventArgs::Unwrap<ContactMapActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMapActivatedEventArgs *wrapper = ContactMapActivatedEventArgs::Unwrap<ContactMapActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMapActivatedEventArgs *wrapper = ContactMapActivatedEventArgs::Unwrap<ContactMapActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMapActivatedEventArgs *wrapper = ContactMapActivatedEventArgs::Unwrap<ContactMapActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void AddressGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMapActivatedEventArgs *wrapper = ContactMapActivatedEventArgs::Unwrap<ContactMapActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::ContactAddress^ result = wrapper->_instance->Address;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "ContactAddress", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactMapActivatedEventArgs *wrapper = ContactMapActivatedEventArgs::Unwrap<ContactMapActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapContactMapActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ UnwrapContactMapActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ContactMapActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContactMapActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContactMapActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs^ UnwrapContactMapActivatedEventArgs(Local<Value> value)
  {
     return ContactMapActivatedEventArgs::Unwrap<ContactMapActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContactMapActivatedEventArgs(Local<Object> exports)
  {
    ContactMapActivatedEventArgs::Init(exports);
  }

  class ContactPostActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ContactPostActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceId").ToLocalChecked(), ServiceIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceUserId").ToLocalChecked(), ServiceUserIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ContactPostActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ContactPostActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContactPostActivatedEventArgs *wrapperInstance = new ContactPostActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapContactPostActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPostActivatedEventArgs *wrapper = ContactPostActivatedEventArgs::Unwrap<ContactPostActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPostActivatedEventArgs *wrapper = ContactPostActivatedEventArgs::Unwrap<ContactPostActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPostActivatedEventArgs *wrapper = ContactPostActivatedEventArgs::Unwrap<ContactPostActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPostActivatedEventArgs *wrapper = ContactPostActivatedEventArgs::Unwrap<ContactPostActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPostActivatedEventArgs *wrapper = ContactPostActivatedEventArgs::Unwrap<ContactPostActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPostActivatedEventArgs *wrapper = ContactPostActivatedEventArgs::Unwrap<ContactPostActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceUserIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactPostActivatedEventArgs *wrapper = ContactPostActivatedEventArgs::Unwrap<ContactPostActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceUserId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapContactPostActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ UnwrapContactPostActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ContactPostActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContactPostActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContactPostActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs^ UnwrapContactPostActivatedEventArgs(Local<Value> value)
  {
     return ContactPostActivatedEventArgs::Unwrap<ContactPostActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContactPostActivatedEventArgs(Local<Object> exports)
  {
    ContactPostActivatedEventArgs::Init(exports);
  }

  class ContactVideoCallActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ContactVideoCallActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceId").ToLocalChecked(), ServiceIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceUserId").ToLocalChecked(), ServiceUserIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ContactVideoCallActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ContactVideoCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ContactVideoCallActivatedEventArgs *wrapperInstance = new ContactVideoCallActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapContactVideoCallActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactVideoCallActivatedEventArgs *wrapper = ContactVideoCallActivatedEventArgs::Unwrap<ContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactVideoCallActivatedEventArgs *wrapper = ContactVideoCallActivatedEventArgs::Unwrap<ContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactVideoCallActivatedEventArgs *wrapper = ContactVideoCallActivatedEventArgs::Unwrap<ContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactVideoCallActivatedEventArgs *wrapper = ContactVideoCallActivatedEventArgs::Unwrap<ContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactVideoCallActivatedEventArgs *wrapper = ContactVideoCallActivatedEventArgs::Unwrap<ContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactVideoCallActivatedEventArgs *wrapper = ContactVideoCallActivatedEventArgs::Unwrap<ContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceUserIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ContactVideoCallActivatedEventArgs *wrapper = ContactVideoCallActivatedEventArgs::Unwrap<ContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceUserId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapContactVideoCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ UnwrapContactVideoCallActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ContactVideoCallActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapContactVideoCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ContactVideoCallActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs^ UnwrapContactVideoCallActivatedEventArgs(Local<Value> value)
  {
     return ContactVideoCallActivatedEventArgs::Unwrap<ContactVideoCallActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitContactVideoCallActivatedEventArgs(Local<Object> exports)
  {
    ContactVideoCallActivatedEventArgs::Init(exports);
  }

  class WalletActionActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("WalletActionActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actionId").ToLocalChecked(), ActionIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actionKind").ToLocalChecked(), ActionKindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemId").ToLocalChecked(), ItemIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("WalletActionActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    WalletActionActivatedEventArgs(::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WalletActionActivatedEventArgs *wrapperInstance = new WalletActionActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapWalletActionActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WalletActionActivatedEventArgs *wrapper = WalletActionActivatedEventArgs::Unwrap<WalletActionActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WalletActionActivatedEventArgs *wrapper = WalletActionActivatedEventArgs::Unwrap<WalletActionActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WalletActionActivatedEventArgs *wrapper = WalletActionActivatedEventArgs::Unwrap<WalletActionActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ActionIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WalletActionActivatedEventArgs *wrapper = WalletActionActivatedEventArgs::Unwrap<WalletActionActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ActionId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ActionKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WalletActionActivatedEventArgs *wrapper = WalletActionActivatedEventArgs::Unwrap<WalletActionActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Wallet::WalletActionKind result = wrapper->_instance->ActionKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ItemIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WalletActionActivatedEventArgs *wrapper = WalletActionActivatedEventArgs::Unwrap<WalletActionActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ItemId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapWalletActionActivatedEventArgs(::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ UnwrapWalletActionActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> WalletActionActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWalletActionActivatedEventArgs(::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WalletActionActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs^ UnwrapWalletActionActivatedEventArgs(Local<Value> value)
  {
     return WalletActionActivatedEventArgs::Unwrap<WalletActionActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWalletActionActivatedEventArgs(Local<Object> exports)
  {
    WalletActionActivatedEventArgs::Init(exports);
  }

  class SplashScreen : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("SplashScreen").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                        
      Nan::SetPrototypeMethod(localRef,"addListener", AddListener);
      Nan::SetPrototypeMethod(localRef,"on", AddListener);
      Nan::SetPrototypeMethod(localRef,"removeListener", RemoveListener);
      Nan::SetPrototypeMethod(localRef, "off", RemoveListener);
            
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("imageLocation").ToLocalChecked(), ImageLocationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("SplashScreen").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    SplashScreen(::Windows::ApplicationModel::Activation::SplashScreen^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::SplashScreen^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SplashScreen^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::SplashScreen^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SplashScreen *wrapperInstance = new SplashScreen(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SplashScreen^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::SplashScreen^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::SplashScreen^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapSplashScreen(winRtInstance));
    }


  



    static void ImageLocationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SplashScreen^>(info.This()))
      {
        return;
      }

      SplashScreen *wrapper = SplashScreen::Unwrap<SplashScreen>(info.This());

      try 
      {
        ::Windows::Foundation::Rect result = wrapper->_instance->ImageLocation;
        info.GetReturnValue().Set(NodeRT::Utils::RectToJs(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


    static void AddListener(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction())
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected arguments are eventName(string),callback(function)")));
		return;
      }

      String::Value eventName(info[0]);
      auto str = *eventName;
      
      Local<Function> callback = info[1].As<Function>();
      
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      if (NodeRT::Utils::CaseInsenstiveEquals(L"dismissed", str))
      {
        if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SplashScreen^>(info.This()))
        {
          Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
		  return;
        }
        SplashScreen *wrapper = SplashScreen::Unwrap<SplashScreen>(info.This());
      
        try
        {
          Persistent<Object>* perstPtr = new Persistent<Object>();
          perstPtr->Reset(NodeRT::Utils::CreateCallbackObjectInDomain(callback));
          std::shared_ptr<Persistent<Object>> callbackObjPtr(perstPtr, 
            [] (Persistent<Object> *ptr ) {
              NodeUtils::Async::RunOnMain([ptr]() {
                ptr->Reset();
                delete ptr;
            });
          });

          registrationToken = wrapper->_instance->Dismissed::add(
            ref new ::Windows::Foundation::TypedEventHandler<::Windows::ApplicationModel::Activation::SplashScreen^, ::Platform::Object^>(
            [callbackObjPtr](::Windows::ApplicationModel::Activation::SplashScreen^ arg0, ::Platform::Object^ arg1) {
              NodeUtils::Async::RunOnMain([callbackObjPtr , arg0, arg1]() {
           	    HandleScope scope;
                TryCatch tryCatch;
              
                Local<Value> error;

                Local<Value> wrappedArg0 = WrapSplashScreen(arg0);
                Local<Value> wrappedArg1 = CreateOpaqueWrapper(arg1);

                if (tryCatch.HasCaught())
                {
                  error = Nan::To<Object>(tryCatch.Exception()).ToLocalChecked();
                }
                else 
                {
                  error = Undefined();
                }

				// TODO: this is ugly! Needed due to the possibility of expception occuring inside object convertors
				// can be fixed by wrapping the conversion code in a function and calling it on the fly
				// we must clear the try catch block here so the invoked inner method exception won't get swollen (issue #52) 
				tryCatch.~TryCatch();


                if (wrappedArg0.IsEmpty()) wrappedArg0 = Undefined();
                if (wrappedArg1.IsEmpty()) wrappedArg1 = Undefined();

                Local<Value> args[] = { wrappedArg0, wrappedArg1 };
                Local<Object> callbackObjLocalRef = Nan::New<Object>(*callbackObjPtr);
                NodeRT::Utils::CallCallbackInDomain(callbackObjLocalRef, _countof(args), args);
              });
            })
          );
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }

      }
      else 
      {
        Nan::ThrowError(Nan::Error(String::Concat(NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
		return;
      }

      Local<Value> tokenMapVal = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
      Local<Object> tokenMap;

      if (tokenMapVal.IsEmpty() || Nan::Equals(tokenMapVal, Undefined()).FromMaybe(false))
      {
        tokenMap = Nan::New<Object>();
        NodeRT::Utils::SetHiddenValueWithObject(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked(), tokenMap);
      }
      else
      {
        tokenMap = Nan::To<Object>(tokenMapVal).ToLocalChecked();
      }

      Nan::Set(tokenMap, info[0], CreateOpaqueWrapper(::Windows::Foundation::PropertyValue::CreateInt64(registrationToken.Value)));
    }

    static void RemoveListener(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

      if (info.Length() < 2 || !info[0]->IsString() || !info[1]->IsFunction())
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"wrong arguments, expected a string and a callback")));
        return;
      }

      String::Value eventName(info[0]);
      auto str = *eventName;

      if ((NodeRT::Utils::CaseInsenstiveEquals(L"dismissed", str)))
      {
        Nan::ThrowError(Nan::Error(String::Concat(NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
        return;
      }

      Local<Function> callback = info[1].As<Function>();
      Local<Value> tokenMap = NodeRT::Utils::GetHiddenValue(callback, Nan::New<String>(REGISTRATION_TOKEN_MAP_PROPERTY_NAME).ToLocalChecked());
                
      if (tokenMap.IsEmpty() || Nan::Equals(tokenMap, Undefined()).FromMaybe(false))
      {
        return;
      }

      Local<Value> opaqueWrapperObj =  Nan::Get(Nan::To<Object>(tokenMap).ToLocalChecked(), info[0]).ToLocalChecked();

      if (opaqueWrapperObj.IsEmpty() || Nan::Equals(opaqueWrapperObj,Undefined()).FromMaybe(false))
      {
        return;
      }

      OpaqueWrapper *opaqueWrapper = OpaqueWrapper::Unwrap<OpaqueWrapper>(opaqueWrapperObj.As<Object>());
            
      long long tokenValue = (long long) opaqueWrapper->GetObjectInstance();
      ::Windows::Foundation::EventRegistrationToken registrationToken;
      registrationToken.Value = tokenValue;
        
      try 
      {
        if (NodeRT::Utils::CaseInsenstiveEquals(L"dismissed", str))
        {
          if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SplashScreen^>(info.This()))
          {
            Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"The caller of this method isn't of the expected type or internal WinRt object was disposed")));
            return;
          }
          SplashScreen *wrapper = SplashScreen::Unwrap<SplashScreen>(info.This());
          wrapper->_instance->Dismissed::remove(registrationToken);
        }
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
      }

      Nan::Delete(Nan::To<Object>(tokenMap).ToLocalChecked(), Nan::To<String>(info[0]).ToLocalChecked());
    }
  private:
    ::Windows::ApplicationModel::Activation::SplashScreen^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapSplashScreen(::Windows::ApplicationModel::Activation::SplashScreen^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::SplashScreen^ UnwrapSplashScreen(Local<Value> value);
  };
  Persistent<FunctionTemplate> SplashScreen::s_constructorTemplate;

  v8::Local<v8::Value> WrapSplashScreen(::Windows::ApplicationModel::Activation::SplashScreen^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SplashScreen::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::SplashScreen^ UnwrapSplashScreen(Local<Value> value)
  {
     return SplashScreen::Unwrap<SplashScreen>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSplashScreen(Local<Object> exports)
  {
    SplashScreen::Init(exports);
  }

  class IActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IActivatedEventArgs(::Windows::ApplicationModel::Activation::IActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IActivatedEventArgs *wrapperInstance = new IActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IActivatedEventArgs *wrapper = IActivatedEventArgs::Unwrap<IActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IActivatedEventArgs *wrapper = IActivatedEventArgs::Unwrap<IActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IActivatedEventArgs *wrapper = IActivatedEventArgs::Unwrap<IActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIActivatedEventArgs(::Windows::ApplicationModel::Activation::IActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IActivatedEventArgs^ UnwrapIActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIActivatedEventArgs(::Windows::ApplicationModel::Activation::IActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IActivatedEventArgs^ UnwrapIActivatedEventArgs(Local<Value> value)
  {
     return IActivatedEventArgs::Unwrap<IActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIActivatedEventArgs(Local<Object> exports)
  {
    IActivatedEventArgs::Init(exports);
  }

  class IPrintTaskSettingsActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IPrintTaskSettingsActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("configuration").ToLocalChecked(), ConfigurationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IPrintTaskSettingsActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IPrintTaskSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IPrintTaskSettingsActivatedEventArgs *wrapperInstance = new IPrintTaskSettingsActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIPrintTaskSettingsActivatedEventArgs(winRtInstance));
    }


  



    static void ConfigurationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IPrintTaskSettingsActivatedEventArgs *wrapper = IPrintTaskSettingsActivatedEventArgs::Unwrap<IPrintTaskSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Devices::Printers::Extensions::PrintTaskConfiguration^ result = wrapper->_instance->Configuration;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Devices.Printers.Extensions", "PrintTaskConfiguration", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIPrintTaskSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ UnwrapIPrintTaskSettingsActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IPrintTaskSettingsActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIPrintTaskSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IPrintTaskSettingsActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs^ UnwrapIPrintTaskSettingsActivatedEventArgs(Local<Value> value)
  {
     return IPrintTaskSettingsActivatedEventArgs::Unwrap<IPrintTaskSettingsActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIPrintTaskSettingsActivatedEventArgs(Local<Object> exports)
  {
    IPrintTaskSettingsActivatedEventArgs::Init(exports);
  }

  class IPrint3DWorkflowActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IPrint3DWorkflowActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("workflow").ToLocalChecked(), WorkflowGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IPrint3DWorkflowActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IPrint3DWorkflowActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IPrint3DWorkflowActivatedEventArgs *wrapperInstance = new IPrint3DWorkflowActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIPrint3DWorkflowActivatedEventArgs(winRtInstance));
    }


  



    static void WorkflowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IPrint3DWorkflowActivatedEventArgs *wrapper = IPrint3DWorkflowActivatedEventArgs::Unwrap<IPrint3DWorkflowActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Devices::Printers::Extensions::Print3DWorkflow^ result = wrapper->_instance->Workflow;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Devices.Printers.Extensions", "Print3DWorkflow", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIPrint3DWorkflowActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ UnwrapIPrint3DWorkflowActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IPrint3DWorkflowActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIPrint3DWorkflowActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IPrint3DWorkflowActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs^ UnwrapIPrint3DWorkflowActivatedEventArgs(Local<Value> value)
  {
     return IPrint3DWorkflowActivatedEventArgs::Unwrap<IPrint3DWorkflowActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIPrint3DWorkflowActivatedEventArgs(Local<Object> exports)
  {
    IPrint3DWorkflowActivatedEventArgs::Init(exports);
  }

  class ICameraSettingsActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ICameraSettingsActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("videoDeviceController").ToLocalChecked(), VideoDeviceControllerGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("videoDeviceExtension").ToLocalChecked(), VideoDeviceExtensionGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ICameraSettingsActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ICameraSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ICameraSettingsActivatedEventArgs *wrapperInstance = new ICameraSettingsActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapICameraSettingsActivatedEventArgs(winRtInstance));
    }


  



    static void VideoDeviceControllerGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ICameraSettingsActivatedEventArgs *wrapper = ICameraSettingsActivatedEventArgs::Unwrap<ICameraSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::Object^ result = wrapper->_instance->VideoDeviceController;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VideoDeviceExtensionGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ICameraSettingsActivatedEventArgs *wrapper = ICameraSettingsActivatedEventArgs::Unwrap<ICameraSettingsActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::Object^ result = wrapper->_instance->VideoDeviceExtension;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapICameraSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ UnwrapICameraSettingsActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ICameraSettingsActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapICameraSettingsActivatedEventArgs(::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ICameraSettingsActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs^ UnwrapICameraSettingsActivatedEventArgs(Local<Value> value)
  {
     return ICameraSettingsActivatedEventArgs::Unwrap<ICameraSettingsActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitICameraSettingsActivatedEventArgs(Local<Object> exports)
  {
    ICameraSettingsActivatedEventArgs::Init(exports);
  }

  class IContactPickerActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContactPickerActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contactPickerUI").ToLocalChecked(), ContactPickerUIGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContactPickerActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContactPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContactPickerActivatedEventArgs *wrapperInstance = new IContactPickerActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContactPickerActivatedEventArgs(winRtInstance));
    }


  



    static void ContactPickerUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactPickerActivatedEventArgs *wrapper = IContactPickerActivatedEventArgs::Unwrap<IContactPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Provider::ContactPickerUI^ result = wrapper->_instance->ContactPickerUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts.Provider", "ContactPickerUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContactPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ UnwrapIContactPickerActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContactPickerActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContactPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContactPickerActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs^ UnwrapIContactPickerActivatedEventArgs(Local<Value> value)
  {
     return IContactPickerActivatedEventArgs::Unwrap<IContactPickerActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContactPickerActivatedEventArgs(Local<Object> exports)
  {
    IContactPickerActivatedEventArgs::Init(exports);
  }

  class IContactActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContactActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContactActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContactActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContactActivatedEventArgs *wrapperInstance = new IContactActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContactActivatedEventArgs(winRtInstance));
    }


  



    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactActivatedEventArgs *wrapper = IContactActivatedEventArgs::Unwrap<IContactActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContactActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ UnwrapIContactActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContactActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContactActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContactActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContactActivatedEventArgs^ UnwrapIContactActivatedEventArgs(Local<Value> value)
  {
     return IContactActivatedEventArgs::Unwrap<IContactActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContactActivatedEventArgs(Local<Object> exports)
  {
    IContactActivatedEventArgs::Init(exports);
  }

  class IContactCallActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContactCallActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceId").ToLocalChecked(), ServiceIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceUserId").ToLocalChecked(), ServiceUserIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContactCallActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContactCallActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContactCallActivatedEventArgs *wrapperInstance = new IContactCallActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContactCallActivatedEventArgs(winRtInstance));
    }


  



    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactCallActivatedEventArgs *wrapper = IContactCallActivatedEventArgs::Unwrap<IContactCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactCallActivatedEventArgs *wrapper = IContactCallActivatedEventArgs::Unwrap<IContactCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceUserIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactCallActivatedEventArgs *wrapper = IContactCallActivatedEventArgs::Unwrap<IContactCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceUserId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContactCallActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ UnwrapIContactCallActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContactCallActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContactCallActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContactCallActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs^ UnwrapIContactCallActivatedEventArgs(Local<Value> value)
  {
     return IContactCallActivatedEventArgs::Unwrap<IContactCallActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContactCallActivatedEventArgs(Local<Object> exports)
  {
    IContactCallActivatedEventArgs::Init(exports);
  }

  class IContactMessageActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContactMessageActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceId").ToLocalChecked(), ServiceIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceUserId").ToLocalChecked(), ServiceUserIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContactMessageActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContactMessageActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContactMessageActivatedEventArgs *wrapperInstance = new IContactMessageActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContactMessageActivatedEventArgs(winRtInstance));
    }


  



    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactMessageActivatedEventArgs *wrapper = IContactMessageActivatedEventArgs::Unwrap<IContactMessageActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactMessageActivatedEventArgs *wrapper = IContactMessageActivatedEventArgs::Unwrap<IContactMessageActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceUserIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactMessageActivatedEventArgs *wrapper = IContactMessageActivatedEventArgs::Unwrap<IContactMessageActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceUserId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContactMessageActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ UnwrapIContactMessageActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContactMessageActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContactMessageActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContactMessageActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs^ UnwrapIContactMessageActivatedEventArgs(Local<Value> value)
  {
     return IContactMessageActivatedEventArgs::Unwrap<IContactMessageActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContactMessageActivatedEventArgs(Local<Object> exports)
  {
    IContactMessageActivatedEventArgs::Init(exports);
  }

  class IContactMapActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContactMapActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("address").ToLocalChecked(), AddressGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContactMapActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContactMapActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContactMapActivatedEventArgs *wrapperInstance = new IContactMapActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContactMapActivatedEventArgs(winRtInstance));
    }


  



    static void AddressGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactMapActivatedEventArgs *wrapper = IContactMapActivatedEventArgs::Unwrap<IContactMapActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::ContactAddress^ result = wrapper->_instance->Address;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "ContactAddress", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactMapActivatedEventArgs *wrapper = IContactMapActivatedEventArgs::Unwrap<IContactMapActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContactMapActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ UnwrapIContactMapActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContactMapActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContactMapActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContactMapActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs^ UnwrapIContactMapActivatedEventArgs(Local<Value> value)
  {
     return IContactMapActivatedEventArgs::Unwrap<IContactMapActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContactMapActivatedEventArgs(Local<Object> exports)
  {
    IContactMapActivatedEventArgs::Init(exports);
  }

  class IContactPostActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContactPostActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceId").ToLocalChecked(), ServiceIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceUserId").ToLocalChecked(), ServiceUserIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContactPostActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContactPostActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContactPostActivatedEventArgs *wrapperInstance = new IContactPostActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContactPostActivatedEventArgs(winRtInstance));
    }


  



    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactPostActivatedEventArgs *wrapper = IContactPostActivatedEventArgs::Unwrap<IContactPostActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactPostActivatedEventArgs *wrapper = IContactPostActivatedEventArgs::Unwrap<IContactPostActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceUserIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactPostActivatedEventArgs *wrapper = IContactPostActivatedEventArgs::Unwrap<IContactPostActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceUserId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContactPostActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ UnwrapIContactPostActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContactPostActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContactPostActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContactPostActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs^ UnwrapIContactPostActivatedEventArgs(Local<Value> value)
  {
     return IContactPostActivatedEventArgs::Unwrap<IContactPostActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContactPostActivatedEventArgs(Local<Object> exports)
  {
    IContactPostActivatedEventArgs::Init(exports);
  }

  class IContactVideoCallActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContactVideoCallActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("contact").ToLocalChecked(), ContactGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceId").ToLocalChecked(), ServiceIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("serviceUserId").ToLocalChecked(), ServiceUserIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContactVideoCallActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContactVideoCallActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContactVideoCallActivatedEventArgs *wrapperInstance = new IContactVideoCallActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContactVideoCallActivatedEventArgs(winRtInstance));
    }


  



    static void ContactGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactVideoCallActivatedEventArgs *wrapper = IContactVideoCallActivatedEventArgs::Unwrap<IContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Contacts::Contact^ result = wrapper->_instance->Contact;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Contacts", "Contact", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactVideoCallActivatedEventArgs *wrapper = IContactVideoCallActivatedEventArgs::Unwrap<IContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ServiceUserIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactVideoCallActivatedEventArgs *wrapper = IContactVideoCallActivatedEventArgs::Unwrap<IContactVideoCallActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ServiceUserId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContactVideoCallActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ UnwrapIContactVideoCallActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContactVideoCallActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContactVideoCallActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContactVideoCallActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs^ UnwrapIContactVideoCallActivatedEventArgs(Local<Value> value)
  {
     return IContactVideoCallActivatedEventArgs::Unwrap<IContactVideoCallActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContactVideoCallActivatedEventArgs(Local<Object> exports)
  {
    IContactVideoCallActivatedEventArgs::Init(exports);
  }

  class IContactsProviderActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContactsProviderActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContactsProviderActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContactsProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContactsProviderActivatedEventArgs *wrapperInstance = new IContactsProviderActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContactsProviderActivatedEventArgs(winRtInstance));
    }


  



    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContactsProviderActivatedEventArgs *wrapper = IContactsProviderActivatedEventArgs::Unwrap<IContactsProviderActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContactsProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ UnwrapIContactsProviderActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContactsProviderActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContactsProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContactsProviderActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs^ UnwrapIContactsProviderActivatedEventArgs(Local<Value> value)
  {
     return IContactsProviderActivatedEventArgs::Unwrap<IContactsProviderActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContactsProviderActivatedEventArgs(Local<Object> exports)
  {
    IContactsProviderActivatedEventArgs::Init(exports);
  }

  class IWalletActionActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IWalletActionActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actionId").ToLocalChecked(), ActionIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("actionKind").ToLocalChecked(), ActionKindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("itemId").ToLocalChecked(), ItemIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IWalletActionActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IWalletActionActivatedEventArgs(::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IWalletActionActivatedEventArgs *wrapperInstance = new IWalletActionActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIWalletActionActivatedEventArgs(winRtInstance));
    }


  



    static void ActionIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IWalletActionActivatedEventArgs *wrapper = IWalletActionActivatedEventArgs::Unwrap<IWalletActionActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ActionId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ActionKindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IWalletActionActivatedEventArgs *wrapper = IWalletActionActivatedEventArgs::Unwrap<IWalletActionActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Wallet::WalletActionKind result = wrapper->_instance->ActionKind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ItemIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IWalletActionActivatedEventArgs *wrapper = IWalletActionActivatedEventArgs::Unwrap<IWalletActionActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->ItemId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIWalletActionActivatedEventArgs(::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ UnwrapIWalletActionActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IWalletActionActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIWalletActionActivatedEventArgs(::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IWalletActionActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs^ UnwrapIWalletActionActivatedEventArgs(Local<Value> value)
  {
     return IWalletActionActivatedEventArgs::Unwrap<IWalletActionActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIWalletActionActivatedEventArgs(Local<Object> exports)
  {
    IWalletActionActivatedEventArgs::Init(exports);
  }

  class IApplicationViewActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IApplicationViewActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IApplicationViewActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IApplicationViewActivatedEventArgs(::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IApplicationViewActivatedEventArgs *wrapperInstance = new IApplicationViewActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIApplicationViewActivatedEventArgs(winRtInstance));
    }


  



    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IApplicationViewActivatedEventArgs *wrapper = IApplicationViewActivatedEventArgs::Unwrap<IApplicationViewActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIApplicationViewActivatedEventArgs(::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ UnwrapIApplicationViewActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IApplicationViewActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIApplicationViewActivatedEventArgs(::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IApplicationViewActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs^ UnwrapIApplicationViewActivatedEventArgs(Local<Value> value)
  {
     return IApplicationViewActivatedEventArgs::Unwrap<IApplicationViewActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIApplicationViewActivatedEventArgs(Local<Object> exports)
  {
    IApplicationViewActivatedEventArgs::Init(exports);
  }

  class IViewSwitcherProvider : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IViewSwitcherProvider").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IViewSwitcherProvider").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IViewSwitcherProvider(::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IViewSwitcherProvider^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IViewSwitcherProvider^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IViewSwitcherProvider *wrapperInstance = new IViewSwitcherProvider(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IViewSwitcherProvider^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IViewSwitcherProvider^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIViewSwitcherProvider(winRtInstance));
    }


  



    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IViewSwitcherProvider^>(info.This()))
      {
        return;
      }

      IViewSwitcherProvider *wrapper = IViewSwitcherProvider::Unwrap<IViewSwitcherProvider>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIViewSwitcherProvider(::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ UnwrapIViewSwitcherProvider(Local<Value> value);
  };
  Persistent<FunctionTemplate> IViewSwitcherProvider::s_constructorTemplate;

  v8::Local<v8::Value> WrapIViewSwitcherProvider(::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IViewSwitcherProvider::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IViewSwitcherProvider^ UnwrapIViewSwitcherProvider(Local<Value> value)
  {
     return IViewSwitcherProvider::Unwrap<IViewSwitcherProvider>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIViewSwitcherProvider(Local<Object> exports)
  {
    IViewSwitcherProvider::Init(exports);
  }

  class IPrelaunchActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IPrelaunchActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("prelaunchActivated").ToLocalChecked(), PrelaunchActivatedGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IPrelaunchActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IPrelaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IPrelaunchActivatedEventArgs *wrapperInstance = new IPrelaunchActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIPrelaunchActivatedEventArgs(winRtInstance));
    }


  



    static void PrelaunchActivatedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IPrelaunchActivatedEventArgs *wrapper = IPrelaunchActivatedEventArgs::Unwrap<IPrelaunchActivatedEventArgs>(info.This());

      try 
      {
        bool result = wrapper->_instance->PrelaunchActivated;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIPrelaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ UnwrapIPrelaunchActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IPrelaunchActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIPrelaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IPrelaunchActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs^ UnwrapIPrelaunchActivatedEventArgs(Local<Value> value)
  {
     return IPrelaunchActivatedEventArgs::Unwrap<IPrelaunchActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIPrelaunchActivatedEventArgs(Local<Object> exports)
  {
    IPrelaunchActivatedEventArgs::Init(exports);
  }

  class ILaunchActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ILaunchActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("arguments").ToLocalChecked(), ArgumentsGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tileId").ToLocalChecked(), TileIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ILaunchActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ILaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ILaunchActivatedEventArgs *wrapperInstance = new ILaunchActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapILaunchActivatedEventArgs(winRtInstance));
    }


  



    static void ArgumentsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ILaunchActivatedEventArgs *wrapper = ILaunchActivatedEventArgs::Unwrap<ILaunchActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Arguments;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void TileIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ILaunchActivatedEventArgs *wrapper = ILaunchActivatedEventArgs::Unwrap<ILaunchActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->TileId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapILaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ UnwrapILaunchActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ILaunchActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapILaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ILaunchActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs^ UnwrapILaunchActivatedEventArgs(Local<Value> value)
  {
     return ILaunchActivatedEventArgs::Unwrap<ILaunchActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitILaunchActivatedEventArgs(Local<Object> exports)
  {
    ILaunchActivatedEventArgs::Init(exports);
  }

  class ILockScreenCallActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ILockScreenCallActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callUI").ToLocalChecked(), CallUIGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ILockScreenCallActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ILockScreenCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ILockScreenCallActivatedEventArgs *wrapperInstance = new ILockScreenCallActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapILockScreenCallActivatedEventArgs(winRtInstance));
    }


  



    static void CallUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ILockScreenCallActivatedEventArgs *wrapper = ILockScreenCallActivatedEventArgs::Unwrap<ILockScreenCallActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Calls::LockScreenCallUI^ result = wrapper->_instance->CallUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Calls", "LockScreenCallUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapILockScreenCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ UnwrapILockScreenCallActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ILockScreenCallActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapILockScreenCallActivatedEventArgs(::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ILockScreenCallActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs^ UnwrapILockScreenCallActivatedEventArgs(Local<Value> value)
  {
     return ILockScreenCallActivatedEventArgs::Unwrap<ILockScreenCallActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitILockScreenCallActivatedEventArgs(Local<Object> exports)
  {
    ILockScreenCallActivatedEventArgs::Init(exports);
  }

  class LaunchActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("LaunchActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("arguments").ToLocalChecked(), ArgumentsGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tileId").ToLocalChecked(), TileIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("prelaunchActivated").ToLocalChecked(), PrelaunchActivatedGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("LaunchActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    LaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      LaunchActivatedEventArgs *wrapperInstance = new LaunchActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapLaunchActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LaunchActivatedEventArgs *wrapper = LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LaunchActivatedEventArgs *wrapper = LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LaunchActivatedEventArgs *wrapper = LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LaunchActivatedEventArgs *wrapper = LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ArgumentsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LaunchActivatedEventArgs *wrapper = LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Arguments;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void TileIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LaunchActivatedEventArgs *wrapper = LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->TileId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PrelaunchActivatedGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LaunchActivatedEventArgs *wrapper = LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(info.This());

      try 
      {
        bool result = wrapper->_instance->PrelaunchActivated;
        info.GetReturnValue().Set(Nan::New<Boolean>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LaunchActivatedEventArgs *wrapper = LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ UnwrapLaunchActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> LaunchActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(LaunchActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ UnwrapLaunchActivatedEventArgs(Local<Value> value)
  {
     return LaunchActivatedEventArgs::Unwrap<LaunchActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitLaunchActivatedEventArgs(Local<Object> exports)
  {
    LaunchActivatedEventArgs::Init(exports);
  }

  class ISearchActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ISearchActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("queryText").ToLocalChecked(), QueryTextGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ISearchActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ISearchActivatedEventArgs(::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ISearchActivatedEventArgs *wrapperInstance = new ISearchActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapISearchActivatedEventArgs(winRtInstance));
    }


  



    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ISearchActivatedEventArgs *wrapper = ISearchActivatedEventArgs::Unwrap<ISearchActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void QueryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ISearchActivatedEventArgs *wrapper = ISearchActivatedEventArgs::Unwrap<ISearchActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->QueryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapISearchActivatedEventArgs(::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ UnwrapISearchActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ISearchActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapISearchActivatedEventArgs(::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ISearchActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs^ UnwrapISearchActivatedEventArgs(Local<Value> value)
  {
     return ISearchActivatedEventArgs::Unwrap<ISearchActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitISearchActivatedEventArgs(Local<Object> exports)
  {
    ISearchActivatedEventArgs::Init(exports);
  }

  class ISearchActivatedEventArgsWithLinguisticDetails : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ISearchActivatedEventArgsWithLinguisticDetails").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("linguisticDetails").ToLocalChecked(), LinguisticDetailsGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ISearchActivatedEventArgsWithLinguisticDetails").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ISearchActivatedEventArgsWithLinguisticDetails(::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ISearchActivatedEventArgsWithLinguisticDetails *wrapperInstance = new ISearchActivatedEventArgsWithLinguisticDetails(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapISearchActivatedEventArgsWithLinguisticDetails(winRtInstance));
    }


  



    static void LinguisticDetailsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^>(info.This()))
      {
        return;
      }

      ISearchActivatedEventArgsWithLinguisticDetails *wrapper = ISearchActivatedEventArgsWithLinguisticDetails::Unwrap<ISearchActivatedEventArgsWithLinguisticDetails>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Search::SearchPaneQueryLinguisticDetails^ result = wrapper->_instance->LinguisticDetails;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Search", "SearchPaneQueryLinguisticDetails", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapISearchActivatedEventArgsWithLinguisticDetails(::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ UnwrapISearchActivatedEventArgsWithLinguisticDetails(Local<Value> value);
  };
  Persistent<FunctionTemplate> ISearchActivatedEventArgsWithLinguisticDetails::s_constructorTemplate;

  v8::Local<v8::Value> WrapISearchActivatedEventArgsWithLinguisticDetails(::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ISearchActivatedEventArgsWithLinguisticDetails::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails^ UnwrapISearchActivatedEventArgsWithLinguisticDetails(Local<Value> value)
  {
     return ISearchActivatedEventArgsWithLinguisticDetails::Unwrap<ISearchActivatedEventArgsWithLinguisticDetails>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitISearchActivatedEventArgsWithLinguisticDetails(Local<Object> exports)
  {
    ISearchActivatedEventArgsWithLinguisticDetails::Init(exports);
  }

  class SearchActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("SearchActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("language").ToLocalChecked(), LanguageGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("queryText").ToLocalChecked(), QueryTextGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("linguisticDetails").ToLocalChecked(), LinguisticDetailsGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("SearchActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    SearchActivatedEventArgs(::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      SearchActivatedEventArgs *wrapperInstance = new SearchActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapSearchActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      SearchActivatedEventArgs *wrapper = SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      SearchActivatedEventArgs *wrapper = SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      SearchActivatedEventArgs *wrapper = SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      SearchActivatedEventArgs *wrapper = SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void LanguageGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      SearchActivatedEventArgs *wrapper = SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Language;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void QueryTextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      SearchActivatedEventArgs *wrapper = SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->QueryText;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void LinguisticDetailsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      SearchActivatedEventArgs *wrapper = SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Search::SearchPaneQueryLinguisticDetails^ result = wrapper->_instance->LinguisticDetails;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Search", "SearchPaneQueryLinguisticDetails", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      SearchActivatedEventArgs *wrapper = SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapSearchActivatedEventArgs(::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ UnwrapSearchActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> SearchActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapSearchActivatedEventArgs(::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(SearchActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::SearchActivatedEventArgs^ UnwrapSearchActivatedEventArgs(Local<Value> value)
  {
     return SearchActivatedEventArgs::Unwrap<SearchActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitSearchActivatedEventArgs(Local<Object> exports)
  {
    SearchActivatedEventArgs::Init(exports);
  }

  class IShareTargetActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IShareTargetActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("shareOperation").ToLocalChecked(), ShareOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IShareTargetActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IShareTargetActivatedEventArgs(::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IShareTargetActivatedEventArgs *wrapperInstance = new IShareTargetActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIShareTargetActivatedEventArgs(winRtInstance));
    }


  



    static void ShareOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IShareTargetActivatedEventArgs *wrapper = IShareTargetActivatedEventArgs::Unwrap<IShareTargetActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::DataTransfer::ShareTarget::ShareOperation^ result = wrapper->_instance->ShareOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.DataTransfer.ShareTarget", "ShareOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIShareTargetActivatedEventArgs(::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ UnwrapIShareTargetActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IShareTargetActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIShareTargetActivatedEventArgs(::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IShareTargetActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs^ UnwrapIShareTargetActivatedEventArgs(Local<Value> value)
  {
     return IShareTargetActivatedEventArgs::Unwrap<IShareTargetActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIShareTargetActivatedEventArgs(Local<Object> exports)
  {
    IShareTargetActivatedEventArgs::Init(exports);
  }

  class ShareTargetActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ShareTargetActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("shareOperation").ToLocalChecked(), ShareOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ShareTargetActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ShareTargetActivatedEventArgs(::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ShareTargetActivatedEventArgs *wrapperInstance = new ShareTargetActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapShareTargetActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ShareTargetActivatedEventArgs *wrapper = ShareTargetActivatedEventArgs::Unwrap<ShareTargetActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ShareTargetActivatedEventArgs *wrapper = ShareTargetActivatedEventArgs::Unwrap<ShareTargetActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ShareTargetActivatedEventArgs *wrapper = ShareTargetActivatedEventArgs::Unwrap<ShareTargetActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ShareOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ShareTargetActivatedEventArgs *wrapper = ShareTargetActivatedEventArgs::Unwrap<ShareTargetActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::DataTransfer::ShareTarget::ShareOperation^ result = wrapper->_instance->ShareOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.DataTransfer.ShareTarget", "ShareOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapShareTargetActivatedEventArgs(::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ UnwrapShareTargetActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ShareTargetActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapShareTargetActivatedEventArgs(::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ShareTargetActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs^ UnwrapShareTargetActivatedEventArgs(Local<Value> value)
  {
     return ShareTargetActivatedEventArgs::Unwrap<ShareTargetActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitShareTargetActivatedEventArgs(Local<Object> exports)
  {
    ShareTargetActivatedEventArgs::Init(exports);
  }

  class IFileActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("files").ToLocalChecked(), FilesGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileActivatedEventArgs *wrapperInstance = new IFileActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileActivatedEventArgs(winRtInstance));
    }


  



    static void FilesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IFileActivatedEventArgs *wrapper = IFileActivatedEventArgs::Unwrap<IFileActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::IVectorView<::Windows::Storage::IStorageItem^>^ result = wrapper->_instance->Files;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::Storage::IStorageItem^>::CreateVectorViewWrapper(result, 
            [](::Windows::Storage::IStorageItem^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage", "IStorageItem", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::Storage::IStorageItem^>(value);
            },
            [](Local<Value> value) -> ::Windows::Storage::IStorageItem^ {
              return dynamic_cast<::Windows::Storage::IStorageItem^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IFileActivatedEventArgs *wrapper = IFileActivatedEventArgs::Unwrap<IFileActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ UnwrapIFileActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileActivatedEventArgs^ UnwrapIFileActivatedEventArgs(Local<Value> value)
  {
     return IFileActivatedEventArgs::Unwrap<IFileActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileActivatedEventArgs(Local<Object> exports)
  {
    IFileActivatedEventArgs::Init(exports);
  }

  class IFileActivatedEventArgsWithNeighboringFiles : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileActivatedEventArgsWithNeighboringFiles").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("neighboringFilesQuery").ToLocalChecked(), NeighboringFilesQueryGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileActivatedEventArgsWithNeighboringFiles").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileActivatedEventArgsWithNeighboringFiles(::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileActivatedEventArgsWithNeighboringFiles *wrapperInstance = new IFileActivatedEventArgsWithNeighboringFiles(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileActivatedEventArgsWithNeighboringFiles(winRtInstance));
    }


  



    static void NeighboringFilesQueryGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^>(info.This()))
      {
        return;
      }

      IFileActivatedEventArgsWithNeighboringFiles *wrapper = IFileActivatedEventArgsWithNeighboringFiles::Unwrap<IFileActivatedEventArgsWithNeighboringFiles>(info.This());

      try 
      {
        ::Windows::Storage::Search::StorageFileQueryResult^ result = wrapper->_instance->NeighboringFilesQuery;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage.Search", "StorageFileQueryResult", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileActivatedEventArgsWithNeighboringFiles(::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ UnwrapIFileActivatedEventArgsWithNeighboringFiles(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileActivatedEventArgsWithNeighboringFiles::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileActivatedEventArgsWithNeighboringFiles(::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileActivatedEventArgsWithNeighboringFiles::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles^ UnwrapIFileActivatedEventArgsWithNeighboringFiles(Local<Value> value)
  {
     return IFileActivatedEventArgsWithNeighboringFiles::Unwrap<IFileActivatedEventArgsWithNeighboringFiles>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileActivatedEventArgsWithNeighboringFiles(Local<Object> exports)
  {
    IFileActivatedEventArgsWithNeighboringFiles::Init(exports);
  }

  class IFileActivatedEventArgsWithCallerPackageFamilyName : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileActivatedEventArgsWithCallerPackageFamilyName").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileActivatedEventArgsWithCallerPackageFamilyName").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileActivatedEventArgsWithCallerPackageFamilyName(::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileActivatedEventArgsWithCallerPackageFamilyName *wrapperInstance = new IFileActivatedEventArgsWithCallerPackageFamilyName(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileActivatedEventArgsWithCallerPackageFamilyName(winRtInstance));
    }


  



    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^>(info.This()))
      {
        return;
      }

      IFileActivatedEventArgsWithCallerPackageFamilyName *wrapper = IFileActivatedEventArgsWithCallerPackageFamilyName::Unwrap<IFileActivatedEventArgsWithCallerPackageFamilyName>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileActivatedEventArgsWithCallerPackageFamilyName(::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ UnwrapIFileActivatedEventArgsWithCallerPackageFamilyName(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileActivatedEventArgsWithCallerPackageFamilyName::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileActivatedEventArgsWithCallerPackageFamilyName(::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileActivatedEventArgsWithCallerPackageFamilyName::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName^ UnwrapIFileActivatedEventArgsWithCallerPackageFamilyName(Local<Value> value)
  {
     return IFileActivatedEventArgsWithCallerPackageFamilyName::Unwrap<IFileActivatedEventArgsWithCallerPackageFamilyName>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileActivatedEventArgsWithCallerPackageFamilyName(Local<Object> exports)
  {
    IFileActivatedEventArgsWithCallerPackageFamilyName::Init(exports);
  }

  class FileActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("FileActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("files").ToLocalChecked(), FilesGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("neighboringFilesQuery").ToLocalChecked(), NeighboringFilesQueryGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("FileActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    FileActivatedEventArgs(::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::FileActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FileActivatedEventArgs *wrapperInstance = new FileActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::FileActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapFileActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void FilesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::IVectorView<::Windows::Storage::IStorageItem^>^ result = wrapper->_instance->Files;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::Storage::IStorageItem^>::CreateVectorViewWrapper(result, 
            [](::Windows::Storage::IStorageItem^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage", "IStorageItem", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::Storage::IStorageItem^>(value);
            },
            [](Local<Value> value) -> ::Windows::Storage::IStorageItem^ {
              return dynamic_cast<::Windows::Storage::IStorageItem^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void NeighboringFilesQueryGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::Search::StorageFileQueryResult^ result = wrapper->_instance->NeighboringFilesQuery;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage.Search", "StorageFileQueryResult", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileActivatedEventArgs *wrapper = FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapFileActivatedEventArgs(::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ UnwrapFileActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> FileActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapFileActivatedEventArgs(::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FileActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::FileActivatedEventArgs^ UnwrapFileActivatedEventArgs(Local<Value> value)
  {
     return FileActivatedEventArgs::Unwrap<FileActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFileActivatedEventArgs(Local<Object> exports)
  {
    FileActivatedEventArgs::Init(exports);
  }

  class IProtocolActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IProtocolActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IProtocolActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IProtocolActivatedEventArgs(::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IProtocolActivatedEventArgs *wrapperInstance = new IProtocolActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIProtocolActivatedEventArgs(winRtInstance));
    }


  



    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IProtocolActivatedEventArgs *wrapper = IProtocolActivatedEventArgs::Unwrap<IProtocolActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIProtocolActivatedEventArgs(::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ UnwrapIProtocolActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IProtocolActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIProtocolActivatedEventArgs(::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IProtocolActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs^ UnwrapIProtocolActivatedEventArgs(Local<Value> value)
  {
     return IProtocolActivatedEventArgs::Unwrap<IProtocolActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIProtocolActivatedEventArgs(Local<Object> exports)
  {
    IProtocolActivatedEventArgs::Init(exports);
  }

  class IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("data").ToLocalChecked(), DataGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData *wrapperInstance = new IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(winRtInstance));
    }


  



    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^>(info.This()))
      {
        return;
      }

      IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData *wrapper = IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData::Unwrap<IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void DataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^>(info.This()))
      {
        return;
      }

      IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData *wrapper = IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData::Unwrap<IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->Data;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ UnwrapIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(Local<Value> value);
  };
  Persistent<FunctionTemplate> IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData::s_constructorTemplate;

  v8::Local<v8::Value> WrapIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData^ UnwrapIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(Local<Value> value)
  {
     return IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData::Unwrap<IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(Local<Object> exports)
  {
    IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData::Init(exports);
  }

  class ProtocolActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ProtocolActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("data").ToLocalChecked(), DataGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ProtocolActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ProtocolActivatedEventArgs(::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ProtocolActivatedEventArgs *wrapperInstance = new ProtocolActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapProtocolActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolActivatedEventArgs *wrapper = ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolActivatedEventArgs *wrapper = ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolActivatedEventArgs *wrapper = ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolActivatedEventArgs *wrapper = ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolActivatedEventArgs *wrapper = ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolActivatedEventArgs *wrapper = ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void DataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolActivatedEventArgs *wrapper = ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->Data;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolActivatedEventArgs *wrapper = ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapProtocolActivatedEventArgs(::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ UnwrapProtocolActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ProtocolActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapProtocolActivatedEventArgs(::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ProtocolActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ UnwrapProtocolActivatedEventArgs(Local<Value> value)
  {
     return ProtocolActivatedEventArgs::Unwrap<ProtocolActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitProtocolActivatedEventArgs(Local<Object> exports)
  {
    ProtocolActivatedEventArgs::Init(exports);
  }

  class IProtocolForResultsActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IProtocolForResultsActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("protocolForResultsOperation").ToLocalChecked(), ProtocolForResultsOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IProtocolForResultsActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IProtocolForResultsActivatedEventArgs(::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IProtocolForResultsActivatedEventArgs *wrapperInstance = new IProtocolForResultsActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIProtocolForResultsActivatedEventArgs(winRtInstance));
    }


  



    static void ProtocolForResultsOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IProtocolForResultsActivatedEventArgs *wrapper = IProtocolForResultsActivatedEventArgs::Unwrap<IProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::System::ProtocolForResultsOperation^ result = wrapper->_instance->ProtocolForResultsOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.System", "ProtocolForResultsOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIProtocolForResultsActivatedEventArgs(::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ UnwrapIProtocolForResultsActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IProtocolForResultsActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIProtocolForResultsActivatedEventArgs(::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IProtocolForResultsActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs^ UnwrapIProtocolForResultsActivatedEventArgs(Local<Value> value)
  {
     return IProtocolForResultsActivatedEventArgs::Unwrap<IProtocolForResultsActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIProtocolForResultsActivatedEventArgs(Local<Object> exports)
  {
    IProtocolForResultsActivatedEventArgs::Init(exports);
  }

  class ProtocolForResultsActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ProtocolForResultsActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("uri").ToLocalChecked(), UriGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("data").ToLocalChecked(), DataGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("protocolForResultsOperation").ToLocalChecked(), ProtocolForResultsOperationGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ProtocolForResultsActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ProtocolForResultsActivatedEventArgs(::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ProtocolForResultsActivatedEventArgs *wrapperInstance = new ProtocolForResultsActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapProtocolForResultsActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void UriGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Uri^ result = wrapper->_instance->Uri;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation", "Uri", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void DataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->Data;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ProtocolForResultsOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::System::ProtocolForResultsOperation^ result = wrapper->_instance->ProtocolForResultsOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.System", "ProtocolForResultsOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ProtocolForResultsActivatedEventArgs *wrapper = ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapProtocolForResultsActivatedEventArgs(::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ UnwrapProtocolForResultsActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ProtocolForResultsActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapProtocolForResultsActivatedEventArgs(::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ProtocolForResultsActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs^ UnwrapProtocolForResultsActivatedEventArgs(Local<Value> value)
  {
     return ProtocolForResultsActivatedEventArgs::Unwrap<ProtocolForResultsActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitProtocolForResultsActivatedEventArgs(Local<Object> exports)
  {
    ProtocolForResultsActivatedEventArgs::Init(exports);
  }

  class IFileOpenPickerActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileOpenPickerActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fileOpenPickerUI").ToLocalChecked(), FileOpenPickerUIGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileOpenPickerActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileOpenPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileOpenPickerActivatedEventArgs *wrapperInstance = new IFileOpenPickerActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileOpenPickerActivatedEventArgs(winRtInstance));
    }


  



    static void FileOpenPickerUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IFileOpenPickerActivatedEventArgs *wrapper = IFileOpenPickerActivatedEventArgs::Unwrap<IFileOpenPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::Pickers::Provider::FileOpenPickerUI^ result = wrapper->_instance->FileOpenPickerUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage.Pickers.Provider", "FileOpenPickerUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileOpenPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ UnwrapIFileOpenPickerActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileOpenPickerActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileOpenPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileOpenPickerActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs^ UnwrapIFileOpenPickerActivatedEventArgs(Local<Value> value)
  {
     return IFileOpenPickerActivatedEventArgs::Unwrap<IFileOpenPickerActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileOpenPickerActivatedEventArgs(Local<Object> exports)
  {
    IFileOpenPickerActivatedEventArgs::Init(exports);
  }

  class IFileOpenPickerActivatedEventArgs2 : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileOpenPickerActivatedEventArgs2").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileOpenPickerActivatedEventArgs2").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileOpenPickerActivatedEventArgs2(::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileOpenPickerActivatedEventArgs2 *wrapperInstance = new IFileOpenPickerActivatedEventArgs2(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileOpenPickerActivatedEventArgs2(winRtInstance));
    }


  



    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^>(info.This()))
      {
        return;
      }

      IFileOpenPickerActivatedEventArgs2 *wrapper = IFileOpenPickerActivatedEventArgs2::Unwrap<IFileOpenPickerActivatedEventArgs2>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileOpenPickerActivatedEventArgs2(::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ UnwrapIFileOpenPickerActivatedEventArgs2(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileOpenPickerActivatedEventArgs2::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileOpenPickerActivatedEventArgs2(::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileOpenPickerActivatedEventArgs2::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2^ UnwrapIFileOpenPickerActivatedEventArgs2(Local<Value> value)
  {
     return IFileOpenPickerActivatedEventArgs2::Unwrap<IFileOpenPickerActivatedEventArgs2>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileOpenPickerActivatedEventArgs2(Local<Object> exports)
  {
    IFileOpenPickerActivatedEventArgs2::Init(exports);
  }

  class FileOpenPickerActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("FileOpenPickerActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fileOpenPickerUI").ToLocalChecked(), FileOpenPickerUIGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("FileOpenPickerActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    FileOpenPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FileOpenPickerActivatedEventArgs *wrapperInstance = new FileOpenPickerActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapFileOpenPickerActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerActivatedEventArgs *wrapper = FileOpenPickerActivatedEventArgs::Unwrap<FileOpenPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerActivatedEventArgs *wrapper = FileOpenPickerActivatedEventArgs::Unwrap<FileOpenPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerActivatedEventArgs *wrapper = FileOpenPickerActivatedEventArgs::Unwrap<FileOpenPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void FileOpenPickerUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerActivatedEventArgs *wrapper = FileOpenPickerActivatedEventArgs::Unwrap<FileOpenPickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::Pickers::Provider::FileOpenPickerUI^ result = wrapper->_instance->FileOpenPickerUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage.Pickers.Provider", "FileOpenPickerUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerActivatedEventArgs *wrapper = FileOpenPickerActivatedEventArgs::Unwrap<FileOpenPickerActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapFileOpenPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ UnwrapFileOpenPickerActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> FileOpenPickerActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapFileOpenPickerActivatedEventArgs(::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FileOpenPickerActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs^ UnwrapFileOpenPickerActivatedEventArgs(Local<Value> value)
  {
     return FileOpenPickerActivatedEventArgs::Unwrap<FileOpenPickerActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFileOpenPickerActivatedEventArgs(Local<Object> exports)
  {
    FileOpenPickerActivatedEventArgs::Init(exports);
  }

  class IFileSavePickerActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileSavePickerActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fileSavePickerUI").ToLocalChecked(), FileSavePickerUIGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileSavePickerActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileSavePickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileSavePickerActivatedEventArgs *wrapperInstance = new IFileSavePickerActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileSavePickerActivatedEventArgs(winRtInstance));
    }


  



    static void FileSavePickerUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IFileSavePickerActivatedEventArgs *wrapper = IFileSavePickerActivatedEventArgs::Unwrap<IFileSavePickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::Pickers::Provider::FileSavePickerUI^ result = wrapper->_instance->FileSavePickerUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage.Pickers.Provider", "FileSavePickerUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileSavePickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ UnwrapIFileSavePickerActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileSavePickerActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileSavePickerActivatedEventArgs(::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileSavePickerActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs^ UnwrapIFileSavePickerActivatedEventArgs(Local<Value> value)
  {
     return IFileSavePickerActivatedEventArgs::Unwrap<IFileSavePickerActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileSavePickerActivatedEventArgs(Local<Object> exports)
  {
    IFileSavePickerActivatedEventArgs::Init(exports);
  }

  class IFileSavePickerActivatedEventArgs2 : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileSavePickerActivatedEventArgs2").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("enterpriseId").ToLocalChecked(), EnterpriseIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileSavePickerActivatedEventArgs2").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileSavePickerActivatedEventArgs2(::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileSavePickerActivatedEventArgs2 *wrapperInstance = new IFileSavePickerActivatedEventArgs2(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileSavePickerActivatedEventArgs2(winRtInstance));
    }


  



    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^>(info.This()))
      {
        return;
      }

      IFileSavePickerActivatedEventArgs2 *wrapper = IFileSavePickerActivatedEventArgs2::Unwrap<IFileSavePickerActivatedEventArgs2>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void EnterpriseIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^>(info.This()))
      {
        return;
      }

      IFileSavePickerActivatedEventArgs2 *wrapper = IFileSavePickerActivatedEventArgs2::Unwrap<IFileSavePickerActivatedEventArgs2>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->EnterpriseId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileSavePickerActivatedEventArgs2(::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ UnwrapIFileSavePickerActivatedEventArgs2(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileSavePickerActivatedEventArgs2::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileSavePickerActivatedEventArgs2(::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileSavePickerActivatedEventArgs2::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2^ UnwrapIFileSavePickerActivatedEventArgs2(Local<Value> value)
  {
     return IFileSavePickerActivatedEventArgs2::Unwrap<IFileSavePickerActivatedEventArgs2>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileSavePickerActivatedEventArgs2(Local<Object> exports)
  {
    IFileSavePickerActivatedEventArgs2::Init(exports);
  }

  class FileSavePickerActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("FileSavePickerActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("fileSavePickerUI").ToLocalChecked(), FileSavePickerUIGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("callerPackageFamilyName").ToLocalChecked(), CallerPackageFamilyNameGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("enterpriseId").ToLocalChecked(), EnterpriseIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("FileSavePickerActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    FileSavePickerActivatedEventArgs(::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FileSavePickerActivatedEventArgs *wrapperInstance = new FileSavePickerActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapFileSavePickerActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerActivatedEventArgs *wrapper = FileSavePickerActivatedEventArgs::Unwrap<FileSavePickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerActivatedEventArgs *wrapper = FileSavePickerActivatedEventArgs::Unwrap<FileSavePickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerActivatedEventArgs *wrapper = FileSavePickerActivatedEventArgs::Unwrap<FileSavePickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void FileSavePickerUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerActivatedEventArgs *wrapper = FileSavePickerActivatedEventArgs::Unwrap<FileSavePickerActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::Pickers::Provider::FileSavePickerUI^ result = wrapper->_instance->FileSavePickerUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage.Pickers.Provider", "FileSavePickerUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CallerPackageFamilyNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerActivatedEventArgs *wrapper = FileSavePickerActivatedEventArgs::Unwrap<FileSavePickerActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->CallerPackageFamilyName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void EnterpriseIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerActivatedEventArgs *wrapper = FileSavePickerActivatedEventArgs::Unwrap<FileSavePickerActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->EnterpriseId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapFileSavePickerActivatedEventArgs(::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ UnwrapFileSavePickerActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> FileSavePickerActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapFileSavePickerActivatedEventArgs(::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FileSavePickerActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs^ UnwrapFileSavePickerActivatedEventArgs(Local<Value> value)
  {
     return FileSavePickerActivatedEventArgs::Unwrap<FileSavePickerActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFileSavePickerActivatedEventArgs(Local<Object> exports)
  {
    FileSavePickerActivatedEventArgs::Init(exports);
  }

  class ICachedFileUpdaterActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ICachedFileUpdaterActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cachedFileUpdaterUI").ToLocalChecked(), CachedFileUpdaterUIGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ICachedFileUpdaterActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ICachedFileUpdaterActivatedEventArgs(::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ICachedFileUpdaterActivatedEventArgs *wrapperInstance = new ICachedFileUpdaterActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapICachedFileUpdaterActivatedEventArgs(winRtInstance));
    }


  



    static void CachedFileUpdaterUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ICachedFileUpdaterActivatedEventArgs *wrapper = ICachedFileUpdaterActivatedEventArgs::Unwrap<ICachedFileUpdaterActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::Provider::CachedFileUpdaterUI^ result = wrapper->_instance->CachedFileUpdaterUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage.Provider", "CachedFileUpdaterUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapICachedFileUpdaterActivatedEventArgs(::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ UnwrapICachedFileUpdaterActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ICachedFileUpdaterActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapICachedFileUpdaterActivatedEventArgs(::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ICachedFileUpdaterActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs^ UnwrapICachedFileUpdaterActivatedEventArgs(Local<Value> value)
  {
     return ICachedFileUpdaterActivatedEventArgs::Unwrap<ICachedFileUpdaterActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitICachedFileUpdaterActivatedEventArgs(Local<Object> exports)
  {
    ICachedFileUpdaterActivatedEventArgs::Init(exports);
  }

  class CachedFileUpdaterActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("CachedFileUpdaterActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("cachedFileUpdaterUI").ToLocalChecked(), CachedFileUpdaterUIGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("CachedFileUpdaterActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    CachedFileUpdaterActivatedEventArgs(::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      CachedFileUpdaterActivatedEventArgs *wrapperInstance = new CachedFileUpdaterActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapCachedFileUpdaterActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CachedFileUpdaterActivatedEventArgs *wrapper = CachedFileUpdaterActivatedEventArgs::Unwrap<CachedFileUpdaterActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CachedFileUpdaterActivatedEventArgs *wrapper = CachedFileUpdaterActivatedEventArgs::Unwrap<CachedFileUpdaterActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CachedFileUpdaterActivatedEventArgs *wrapper = CachedFileUpdaterActivatedEventArgs::Unwrap<CachedFileUpdaterActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CachedFileUpdaterUIGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^>(info.This()))
      {
        return;
      }

      CachedFileUpdaterActivatedEventArgs *wrapper = CachedFileUpdaterActivatedEventArgs::Unwrap<CachedFileUpdaterActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::Provider::CachedFileUpdaterUI^ result = wrapper->_instance->CachedFileUpdaterUI;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage.Provider", "CachedFileUpdaterUI", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapCachedFileUpdaterActivatedEventArgs(::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ UnwrapCachedFileUpdaterActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> CachedFileUpdaterActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapCachedFileUpdaterActivatedEventArgs(::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(CachedFileUpdaterActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs^ UnwrapCachedFileUpdaterActivatedEventArgs(Local<Value> value)
  {
     return CachedFileUpdaterActivatedEventArgs::Unwrap<CachedFileUpdaterActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitCachedFileUpdaterActivatedEventArgs(Local<Object> exports)
  {
    CachedFileUpdaterActivatedEventArgs::Init(exports);
  }

  class IDeviceActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IDeviceActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("deviceInformationId").ToLocalChecked(), DeviceInformationIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IDeviceActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IDeviceActivatedEventArgs(::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IDeviceActivatedEventArgs *wrapperInstance = new IDeviceActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIDeviceActivatedEventArgs(winRtInstance));
    }


  



    static void DeviceInformationIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IDeviceActivatedEventArgs *wrapper = IDeviceActivatedEventArgs::Unwrap<IDeviceActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->DeviceInformationId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IDeviceActivatedEventArgs *wrapper = IDeviceActivatedEventArgs::Unwrap<IDeviceActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIDeviceActivatedEventArgs(::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ UnwrapIDeviceActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IDeviceActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIDeviceActivatedEventArgs(::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IDeviceActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs^ UnwrapIDeviceActivatedEventArgs(Local<Value> value)
  {
     return IDeviceActivatedEventArgs::Unwrap<IDeviceActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIDeviceActivatedEventArgs(Local<Object> exports)
  {
    IDeviceActivatedEventArgs::Init(exports);
  }

  class DeviceActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("DeviceActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("deviceInformationId").ToLocalChecked(), DeviceInformationIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("DeviceActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    DeviceActivatedEventArgs(::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DeviceActivatedEventArgs *wrapperInstance = new DeviceActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapDeviceActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DeviceActivatedEventArgs *wrapper = DeviceActivatedEventArgs::Unwrap<DeviceActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DeviceActivatedEventArgs *wrapper = DeviceActivatedEventArgs::Unwrap<DeviceActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DeviceActivatedEventArgs *wrapper = DeviceActivatedEventArgs::Unwrap<DeviceActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DeviceActivatedEventArgs *wrapper = DeviceActivatedEventArgs::Unwrap<DeviceActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void DeviceInformationIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DeviceActivatedEventArgs *wrapper = DeviceActivatedEventArgs::Unwrap<DeviceActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->DeviceInformationId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DeviceActivatedEventArgs *wrapper = DeviceActivatedEventArgs::Unwrap<DeviceActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DeviceActivatedEventArgs *wrapper = DeviceActivatedEventArgs::Unwrap<DeviceActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapDeviceActivatedEventArgs(::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ UnwrapDeviceActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> DeviceActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapDeviceActivatedEventArgs(::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DeviceActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs^ UnwrapDeviceActivatedEventArgs(Local<Value> value)
  {
     return DeviceActivatedEventArgs::Unwrap<DeviceActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDeviceActivatedEventArgs(Local<Object> exports)
  {
    DeviceActivatedEventArgs::Init(exports);
  }

  class IAppointmentsProviderActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IAppointmentsProviderActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IAppointmentsProviderActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IAppointmentsProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IAppointmentsProviderActivatedEventArgs *wrapperInstance = new IAppointmentsProviderActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIAppointmentsProviderActivatedEventArgs(winRtInstance));
    }


  



    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderActivatedEventArgs *wrapper = IAppointmentsProviderActivatedEventArgs::Unwrap<IAppointmentsProviderActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIAppointmentsProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ UnwrapIAppointmentsProviderActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IAppointmentsProviderActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIAppointmentsProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IAppointmentsProviderActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs^ UnwrapIAppointmentsProviderActivatedEventArgs(Local<Value> value)
  {
     return IAppointmentsProviderActivatedEventArgs::Unwrap<IAppointmentsProviderActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIAppointmentsProviderActivatedEventArgs(Local<Object> exports)
  {
    IAppointmentsProviderActivatedEventArgs::Init(exports);
  }

  class IAppointmentsProviderAddAppointmentActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IAppointmentsProviderAddAppointmentActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("addAppointmentOperation").ToLocalChecked(), AddAppointmentOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IAppointmentsProviderAddAppointmentActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IAppointmentsProviderAddAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IAppointmentsProviderAddAppointmentActivatedEventArgs *wrapperInstance = new IAppointmentsProviderAddAppointmentActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIAppointmentsProviderAddAppointmentActivatedEventArgs(winRtInstance));
    }


  



    static void AddAppointmentOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderAddAppointmentActivatedEventArgs *wrapper = IAppointmentsProviderAddAppointmentActivatedEventArgs::Unwrap<IAppointmentsProviderAddAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Appointments::AppointmentsProvider::AddAppointmentOperation^ result = wrapper->_instance->AddAppointmentOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Appointments.AppointmentsProvider", "AddAppointmentOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIAppointmentsProviderAddAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderAddAppointmentActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IAppointmentsProviderAddAppointmentActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIAppointmentsProviderAddAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IAppointmentsProviderAddAppointmentActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderAddAppointmentActivatedEventArgs(Local<Value> value)
  {
     return IAppointmentsProviderAddAppointmentActivatedEventArgs::Unwrap<IAppointmentsProviderAddAppointmentActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIAppointmentsProviderAddAppointmentActivatedEventArgs(Local<Object> exports)
  {
    IAppointmentsProviderAddAppointmentActivatedEventArgs::Init(exports);
  }

  class AppointmentsProviderAddAppointmentActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("AppointmentsProviderAddAppointmentActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("addAppointmentOperation").ToLocalChecked(), AddAppointmentOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("AppointmentsProviderAddAppointmentActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    AppointmentsProviderAddAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppointmentsProviderAddAppointmentActivatedEventArgs *wrapperInstance = new AppointmentsProviderAddAppointmentActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapAppointmentsProviderAddAppointmentActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderAddAppointmentActivatedEventArgs *wrapper = AppointmentsProviderAddAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderAddAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderAddAppointmentActivatedEventArgs *wrapper = AppointmentsProviderAddAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderAddAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderAddAppointmentActivatedEventArgs *wrapper = AppointmentsProviderAddAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderAddAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderAddAppointmentActivatedEventArgs *wrapper = AppointmentsProviderAddAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderAddAppointmentActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void AddAppointmentOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderAddAppointmentActivatedEventArgs *wrapper = AppointmentsProviderAddAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderAddAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Appointments::AppointmentsProvider::AddAppointmentOperation^ result = wrapper->_instance->AddAppointmentOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Appointments.AppointmentsProvider", "AddAppointmentOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapAppointmentsProviderAddAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderAddAppointmentActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> AppointmentsProviderAddAppointmentActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppointmentsProviderAddAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppointmentsProviderAddAppointmentActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderAddAppointmentActivatedEventArgs(Local<Value> value)
  {
     return AppointmentsProviderAddAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderAddAppointmentActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppointmentsProviderAddAppointmentActivatedEventArgs(Local<Object> exports)
  {
    AppointmentsProviderAddAppointmentActivatedEventArgs::Init(exports);
  }

  class IAppointmentsProviderReplaceAppointmentActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IAppointmentsProviderReplaceAppointmentActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("replaceAppointmentOperation").ToLocalChecked(), ReplaceAppointmentOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IAppointmentsProviderReplaceAppointmentActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IAppointmentsProviderReplaceAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IAppointmentsProviderReplaceAppointmentActivatedEventArgs *wrapperInstance = new IAppointmentsProviderReplaceAppointmentActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIAppointmentsProviderReplaceAppointmentActivatedEventArgs(winRtInstance));
    }


  



    static void ReplaceAppointmentOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderReplaceAppointmentActivatedEventArgs *wrapper = IAppointmentsProviderReplaceAppointmentActivatedEventArgs::Unwrap<IAppointmentsProviderReplaceAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Appointments::AppointmentsProvider::ReplaceAppointmentOperation^ result = wrapper->_instance->ReplaceAppointmentOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Appointments.AppointmentsProvider", "ReplaceAppointmentOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIAppointmentsProviderReplaceAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderReplaceAppointmentActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IAppointmentsProviderReplaceAppointmentActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIAppointmentsProviderReplaceAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IAppointmentsProviderReplaceAppointmentActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderReplaceAppointmentActivatedEventArgs(Local<Value> value)
  {
     return IAppointmentsProviderReplaceAppointmentActivatedEventArgs::Unwrap<IAppointmentsProviderReplaceAppointmentActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIAppointmentsProviderReplaceAppointmentActivatedEventArgs(Local<Object> exports)
  {
    IAppointmentsProviderReplaceAppointmentActivatedEventArgs::Init(exports);
  }

  class AppointmentsProviderReplaceAppointmentActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("AppointmentsProviderReplaceAppointmentActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("replaceAppointmentOperation").ToLocalChecked(), ReplaceAppointmentOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("AppointmentsProviderReplaceAppointmentActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    AppointmentsProviderReplaceAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppointmentsProviderReplaceAppointmentActivatedEventArgs *wrapperInstance = new AppointmentsProviderReplaceAppointmentActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapAppointmentsProviderReplaceAppointmentActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderReplaceAppointmentActivatedEventArgs *wrapper = AppointmentsProviderReplaceAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderReplaceAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderReplaceAppointmentActivatedEventArgs *wrapper = AppointmentsProviderReplaceAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderReplaceAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderReplaceAppointmentActivatedEventArgs *wrapper = AppointmentsProviderReplaceAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderReplaceAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderReplaceAppointmentActivatedEventArgs *wrapper = AppointmentsProviderReplaceAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderReplaceAppointmentActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ReplaceAppointmentOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderReplaceAppointmentActivatedEventArgs *wrapper = AppointmentsProviderReplaceAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderReplaceAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Appointments::AppointmentsProvider::ReplaceAppointmentOperation^ result = wrapper->_instance->ReplaceAppointmentOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Appointments.AppointmentsProvider", "ReplaceAppointmentOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapAppointmentsProviderReplaceAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderReplaceAppointmentActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> AppointmentsProviderReplaceAppointmentActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppointmentsProviderReplaceAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppointmentsProviderReplaceAppointmentActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderReplaceAppointmentActivatedEventArgs(Local<Value> value)
  {
     return AppointmentsProviderReplaceAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderReplaceAppointmentActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppointmentsProviderReplaceAppointmentActivatedEventArgs(Local<Object> exports)
  {
    AppointmentsProviderReplaceAppointmentActivatedEventArgs::Init(exports);
  }

  class IAppointmentsProviderRemoveAppointmentActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IAppointmentsProviderRemoveAppointmentActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("removeAppointmentOperation").ToLocalChecked(), RemoveAppointmentOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IAppointmentsProviderRemoveAppointmentActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IAppointmentsProviderRemoveAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IAppointmentsProviderRemoveAppointmentActivatedEventArgs *wrapperInstance = new IAppointmentsProviderRemoveAppointmentActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIAppointmentsProviderRemoveAppointmentActivatedEventArgs(winRtInstance));
    }


  



    static void RemoveAppointmentOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderRemoveAppointmentActivatedEventArgs *wrapper = IAppointmentsProviderRemoveAppointmentActivatedEventArgs::Unwrap<IAppointmentsProviderRemoveAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Appointments::AppointmentsProvider::RemoveAppointmentOperation^ result = wrapper->_instance->RemoveAppointmentOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Appointments.AppointmentsProvider", "RemoveAppointmentOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIAppointmentsProviderRemoveAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderRemoveAppointmentActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IAppointmentsProviderRemoveAppointmentActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIAppointmentsProviderRemoveAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IAppointmentsProviderRemoveAppointmentActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs^ UnwrapIAppointmentsProviderRemoveAppointmentActivatedEventArgs(Local<Value> value)
  {
     return IAppointmentsProviderRemoveAppointmentActivatedEventArgs::Unwrap<IAppointmentsProviderRemoveAppointmentActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIAppointmentsProviderRemoveAppointmentActivatedEventArgs(Local<Object> exports)
  {
    IAppointmentsProviderRemoveAppointmentActivatedEventArgs::Init(exports);
  }

  class IPickerReturnedActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IPickerReturnedActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pickerOperationId").ToLocalChecked(), PickerOperationIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IPickerReturnedActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IPickerReturnedActivatedEventArgs(::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IPickerReturnedActivatedEventArgs *wrapperInstance = new IPickerReturnedActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIPickerReturnedActivatedEventArgs(winRtInstance));
    }


  



    static void PickerOperationIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IPickerReturnedActivatedEventArgs *wrapper = IPickerReturnedActivatedEventArgs::Unwrap<IPickerReturnedActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->PickerOperationId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIPickerReturnedActivatedEventArgs(::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ UnwrapIPickerReturnedActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IPickerReturnedActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIPickerReturnedActivatedEventArgs(::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IPickerReturnedActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs^ UnwrapIPickerReturnedActivatedEventArgs(Local<Value> value)
  {
     return IPickerReturnedActivatedEventArgs::Unwrap<IPickerReturnedActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIPickerReturnedActivatedEventArgs(Local<Object> exports)
  {
    IPickerReturnedActivatedEventArgs::Init(exports);
  }

  class PickerReturnedActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("PickerReturnedActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("pickerOperationId").ToLocalChecked(), PickerOperationIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("PickerReturnedActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    PickerReturnedActivatedEventArgs(::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      PickerReturnedActivatedEventArgs *wrapperInstance = new PickerReturnedActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapPickerReturnedActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^>(info.This()))
      {
        return;
      }

      PickerReturnedActivatedEventArgs *wrapper = PickerReturnedActivatedEventArgs::Unwrap<PickerReturnedActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^>(info.This()))
      {
        return;
      }

      PickerReturnedActivatedEventArgs *wrapper = PickerReturnedActivatedEventArgs::Unwrap<PickerReturnedActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^>(info.This()))
      {
        return;
      }

      PickerReturnedActivatedEventArgs *wrapper = PickerReturnedActivatedEventArgs::Unwrap<PickerReturnedActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PickerOperationIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^>(info.This()))
      {
        return;
      }

      PickerReturnedActivatedEventArgs *wrapper = PickerReturnedActivatedEventArgs::Unwrap<PickerReturnedActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->PickerOperationId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapPickerReturnedActivatedEventArgs(::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ UnwrapPickerReturnedActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> PickerReturnedActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapPickerReturnedActivatedEventArgs(::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(PickerReturnedActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs^ UnwrapPickerReturnedActivatedEventArgs(Local<Value> value)
  {
     return PickerReturnedActivatedEventArgs::Unwrap<PickerReturnedActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitPickerReturnedActivatedEventArgs(Local<Object> exports)
  {
    PickerReturnedActivatedEventArgs::Init(exports);
  }

  class AppointmentsProviderRemoveAppointmentActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("AppointmentsProviderRemoveAppointmentActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("removeAppointmentOperation").ToLocalChecked(), RemoveAppointmentOperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("AppointmentsProviderRemoveAppointmentActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    AppointmentsProviderRemoveAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppointmentsProviderRemoveAppointmentActivatedEventArgs *wrapperInstance = new AppointmentsProviderRemoveAppointmentActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapAppointmentsProviderRemoveAppointmentActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderRemoveAppointmentActivatedEventArgs *wrapper = AppointmentsProviderRemoveAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderRemoveAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderRemoveAppointmentActivatedEventArgs *wrapper = AppointmentsProviderRemoveAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderRemoveAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderRemoveAppointmentActivatedEventArgs *wrapper = AppointmentsProviderRemoveAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderRemoveAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderRemoveAppointmentActivatedEventArgs *wrapper = AppointmentsProviderRemoveAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderRemoveAppointmentActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void RemoveAppointmentOperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderRemoveAppointmentActivatedEventArgs *wrapper = AppointmentsProviderRemoveAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderRemoveAppointmentActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Appointments::AppointmentsProvider::RemoveAppointmentOperation^ result = wrapper->_instance->RemoveAppointmentOperation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.ApplicationModel.Appointments.AppointmentsProvider", "RemoveAppointmentOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapAppointmentsProviderRemoveAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderRemoveAppointmentActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> AppointmentsProviderRemoveAppointmentActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppointmentsProviderRemoveAppointmentActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppointmentsProviderRemoveAppointmentActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs^ UnwrapAppointmentsProviderRemoveAppointmentActivatedEventArgs(Local<Value> value)
  {
     return AppointmentsProviderRemoveAppointmentActivatedEventArgs::Unwrap<AppointmentsProviderRemoveAppointmentActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppointmentsProviderRemoveAppointmentActivatedEventArgs(Local<Object> exports)
  {
    AppointmentsProviderRemoveAppointmentActivatedEventArgs::Init(exports);
  }

  class IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("instanceStartDate").ToLocalChecked(), InstanceStartDateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("localId").ToLocalChecked(), LocalIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("roamingId").ToLocalChecked(), RoamingIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapperInstance = new IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(winRtInstance));
    }


  



    static void InstanceStartDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::IBox<::Windows::Foundation::DateTime>^ result = wrapper->_instance->InstanceStartDate;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(NodeRT::Utils::DateTimeToJS(result->Value)) : Undefined());
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void LocalIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->LocalId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void RoamingIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->RoamingId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ UnwrapIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ UnwrapIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(Local<Value> value)
  {
     return IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(Local<Object> exports)
  {
    IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Init(exports);
  }

  class AppointmentsProviderShowAppointmentDetailsActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("AppointmentsProviderShowAppointmentDetailsActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("instanceStartDate").ToLocalChecked(), InstanceStartDateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("localId").ToLocalChecked(), LocalIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("roamingId").ToLocalChecked(), RoamingIdGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("AppointmentsProviderShowAppointmentDetailsActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    AppointmentsProviderShowAppointmentDetailsActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapperInstance = new AppointmentsProviderShowAppointmentDetailsActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void InstanceStartDateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::IBox<::Windows::Foundation::DateTime>^ result = wrapper->_instance->InstanceStartDate;
        info.GetReturnValue().Set(result ? static_cast<Local<Value>>(NodeRT::Utils::DateTimeToJS(result->Value)) : Undefined());
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void LocalIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->LocalId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void RoamingIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowAppointmentDetailsActivatedEventArgs *wrapper = AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->RoamingId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ UnwrapAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs^ UnwrapAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(Local<Value> value)
  {
     return AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Unwrap<AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(Local<Object> exports)
  {
    AppointmentsProviderShowAppointmentDetailsActivatedEventArgs::Init(exports);
  }

  class IAppointmentsProviderShowTimeFrameActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IAppointmentsProviderShowTimeFrameActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("duration").ToLocalChecked(), DurationGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("timeToShow").ToLocalChecked(), TimeToShowGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IAppointmentsProviderShowTimeFrameActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IAppointmentsProviderShowTimeFrameActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IAppointmentsProviderShowTimeFrameActivatedEventArgs *wrapperInstance = new IAppointmentsProviderShowTimeFrameActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIAppointmentsProviderShowTimeFrameActivatedEventArgs(winRtInstance));
    }


  



    static void DurationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderShowTimeFrameActivatedEventArgs *wrapper = IAppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<IAppointmentsProviderShowTimeFrameActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->Duration;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void TimeToShowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IAppointmentsProviderShowTimeFrameActivatedEventArgs *wrapper = IAppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<IAppointmentsProviderShowTimeFrameActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::DateTime result = wrapper->_instance->TimeToShow;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIAppointmentsProviderShowTimeFrameActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ UnwrapIAppointmentsProviderShowTimeFrameActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IAppointmentsProviderShowTimeFrameActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIAppointmentsProviderShowTimeFrameActivatedEventArgs(::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IAppointmentsProviderShowTimeFrameActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs^ UnwrapIAppointmentsProviderShowTimeFrameActivatedEventArgs(Local<Value> value)
  {
     return IAppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<IAppointmentsProviderShowTimeFrameActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIAppointmentsProviderShowTimeFrameActivatedEventArgs(Local<Object> exports)
  {
    IAppointmentsProviderShowTimeFrameActivatedEventArgs::Init(exports);
  }

  class AppointmentsProviderShowTimeFrameActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("AppointmentsProviderShowTimeFrameActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("verb").ToLocalChecked(), VerbGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("duration").ToLocalChecked(), DurationGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("timeToShow").ToLocalChecked(), TimeToShowGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("AppointmentsProviderShowTimeFrameActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    AppointmentsProviderShowTimeFrameActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      AppointmentsProviderShowTimeFrameActivatedEventArgs *wrapperInstance = new AppointmentsProviderShowTimeFrameActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapAppointmentsProviderShowTimeFrameActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowTimeFrameActivatedEventArgs *wrapper = AppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<AppointmentsProviderShowTimeFrameActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowTimeFrameActivatedEventArgs *wrapper = AppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<AppointmentsProviderShowTimeFrameActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowTimeFrameActivatedEventArgs *wrapper = AppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<AppointmentsProviderShowTimeFrameActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void VerbGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowTimeFrameActivatedEventArgs *wrapper = AppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<AppointmentsProviderShowTimeFrameActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Verb;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void DurationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowTimeFrameActivatedEventArgs *wrapper = AppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<AppointmentsProviderShowTimeFrameActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::TimeSpan result = wrapper->_instance->Duration;
        info.GetReturnValue().Set(Nan::New<Number>(result.Duration/10000.0));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void TimeToShowGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^>(info.This()))
      {
        return;
      }

      AppointmentsProviderShowTimeFrameActivatedEventArgs *wrapper = AppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<AppointmentsProviderShowTimeFrameActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::DateTime result = wrapper->_instance->TimeToShow;
        info.GetReturnValue().Set(NodeRT::Utils::DateTimeToJS(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapAppointmentsProviderShowTimeFrameActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ UnwrapAppointmentsProviderShowTimeFrameActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> AppointmentsProviderShowTimeFrameActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapAppointmentsProviderShowTimeFrameActivatedEventArgs(::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(AppointmentsProviderShowTimeFrameActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs^ UnwrapAppointmentsProviderShowTimeFrameActivatedEventArgs(Local<Value> value)
  {
     return AppointmentsProviderShowTimeFrameActivatedEventArgs::Unwrap<AppointmentsProviderShowTimeFrameActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitAppointmentsProviderShowTimeFrameActivatedEventArgs(Local<Object> exports)
  {
    AppointmentsProviderShowTimeFrameActivatedEventArgs::Init(exports);
  }

  class IRestrictedLaunchActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IRestrictedLaunchActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("sharedContext").ToLocalChecked(), SharedContextGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IRestrictedLaunchActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IRestrictedLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IRestrictedLaunchActivatedEventArgs *wrapperInstance = new IRestrictedLaunchActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIRestrictedLaunchActivatedEventArgs(winRtInstance));
    }


  



    static void SharedContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IRestrictedLaunchActivatedEventArgs *wrapper = IRestrictedLaunchActivatedEventArgs::Unwrap<IRestrictedLaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::Object^ result = wrapper->_instance->SharedContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIRestrictedLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ UnwrapIRestrictedLaunchActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IRestrictedLaunchActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIRestrictedLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IRestrictedLaunchActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs^ UnwrapIRestrictedLaunchActivatedEventArgs(Local<Value> value)
  {
     return IRestrictedLaunchActivatedEventArgs::Unwrap<IRestrictedLaunchActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIRestrictedLaunchActivatedEventArgs(Local<Object> exports)
  {
    IRestrictedLaunchActivatedEventArgs::Init(exports);
  }

  class RestrictedLaunchActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("RestrictedLaunchActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("sharedContext").ToLocalChecked(), SharedContextGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("RestrictedLaunchActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    RestrictedLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      RestrictedLaunchActivatedEventArgs *wrapperInstance = new RestrictedLaunchActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapRestrictedLaunchActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      RestrictedLaunchActivatedEventArgs *wrapper = RestrictedLaunchActivatedEventArgs::Unwrap<RestrictedLaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      RestrictedLaunchActivatedEventArgs *wrapper = RestrictedLaunchActivatedEventArgs::Unwrap<RestrictedLaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      RestrictedLaunchActivatedEventArgs *wrapper = RestrictedLaunchActivatedEventArgs::Unwrap<RestrictedLaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SharedContextGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^>(info.This()))
      {
        return;
      }

      RestrictedLaunchActivatedEventArgs *wrapper = RestrictedLaunchActivatedEventArgs::Unwrap<RestrictedLaunchActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::Object^ result = wrapper->_instance->SharedContext;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapRestrictedLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ UnwrapRestrictedLaunchActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> RestrictedLaunchActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapRestrictedLaunchActivatedEventArgs(::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(RestrictedLaunchActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs^ UnwrapRestrictedLaunchActivatedEventArgs(Local<Value> value)
  {
     return RestrictedLaunchActivatedEventArgs::Unwrap<RestrictedLaunchActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitRestrictedLaunchActivatedEventArgs(Local<Object> exports)
  {
    RestrictedLaunchActivatedEventArgs::Init(exports);
  }

  class ILockScreenActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ILockScreenActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("info").ToLocalChecked(), InfoGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ILockScreenActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ILockScreenActivatedEventArgs(::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ILockScreenActivatedEventArgs *wrapperInstance = new ILockScreenActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapILockScreenActivatedEventArgs(winRtInstance));
    }


  



    static void InfoGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ILockScreenActivatedEventArgs *wrapper = ILockScreenActivatedEventArgs::Unwrap<ILockScreenActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::Object^ result = wrapper->_instance->Info;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapILockScreenActivatedEventArgs(::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ UnwrapILockScreenActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ILockScreenActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapILockScreenActivatedEventArgs(::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ILockScreenActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs^ UnwrapILockScreenActivatedEventArgs(Local<Value> value)
  {
     return ILockScreenActivatedEventArgs::Unwrap<ILockScreenActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitILockScreenActivatedEventArgs(Local<Object> exports)
  {
    ILockScreenActivatedEventArgs::Init(exports);
  }

  class LockScreenActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("LockScreenActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("info").ToLocalChecked(), InfoGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("LockScreenActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    LockScreenActivatedEventArgs(::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      LockScreenActivatedEventArgs *wrapperInstance = new LockScreenActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapLockScreenActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenActivatedEventArgs *wrapper = LockScreenActivatedEventArgs::Unwrap<LockScreenActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenActivatedEventArgs *wrapper = LockScreenActivatedEventArgs::Unwrap<LockScreenActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenActivatedEventArgs *wrapper = LockScreenActivatedEventArgs::Unwrap<LockScreenActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void InfoGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^>(info.This()))
      {
        return;
      }

      LockScreenActivatedEventArgs *wrapper = LockScreenActivatedEventArgs::Unwrap<LockScreenActivatedEventArgs>(info.This());

      try 
      {
        ::Platform::Object^ result = wrapper->_instance->Info;
        info.GetReturnValue().Set(CreateOpaqueWrapper(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapLockScreenActivatedEventArgs(::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ UnwrapLockScreenActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> LockScreenActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapLockScreenActivatedEventArgs(::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(LockScreenActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs^ UnwrapLockScreenActivatedEventArgs(Local<Value> value)
  {
     return LockScreenActivatedEventArgs::Unwrap<LockScreenActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitLockScreenActivatedEventArgs(Local<Object> exports)
  {
    LockScreenActivatedEventArgs::Init(exports);
  }

  class IContinuationActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IContinuationActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("continuationData").ToLocalChecked(), ContinuationDataGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IContinuationActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IContinuationActivatedEventArgs(::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IContinuationActivatedEventArgs *wrapperInstance = new IContinuationActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIContinuationActivatedEventArgs(winRtInstance));
    }


  



    static void ContinuationDataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IContinuationActivatedEventArgs *wrapper = IContinuationActivatedEventArgs::Unwrap<IContinuationActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->ContinuationData;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIContinuationActivatedEventArgs(::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ UnwrapIContinuationActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IContinuationActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIContinuationActivatedEventArgs(::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IContinuationActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs^ UnwrapIContinuationActivatedEventArgs(Local<Value> value)
  {
     return IContinuationActivatedEventArgs::Unwrap<IContinuationActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIContinuationActivatedEventArgs(Local<Object> exports)
  {
    IContinuationActivatedEventArgs::Init(exports);
  }

  class IFileOpenPickerContinuationEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileOpenPickerContinuationEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("files").ToLocalChecked(), FilesGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileOpenPickerContinuationEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileOpenPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileOpenPickerContinuationEventArgs *wrapperInstance = new IFileOpenPickerContinuationEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileOpenPickerContinuationEventArgs(winRtInstance));
    }


  



    static void FilesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      IFileOpenPickerContinuationEventArgs *wrapper = IFileOpenPickerContinuationEventArgs::Unwrap<IFileOpenPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::IVectorView<::Windows::Storage::StorageFile^>^ result = wrapper->_instance->Files;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::Storage::StorageFile^>::CreateVectorViewWrapper(result, 
            [](::Windows::Storage::StorageFile^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage", "StorageFile", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::Storage::StorageFile^>(value);
            },
            [](Local<Value> value) -> ::Windows::Storage::StorageFile^ {
              return dynamic_cast<::Windows::Storage::StorageFile^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileOpenPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ UnwrapIFileOpenPickerContinuationEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileOpenPickerContinuationEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileOpenPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileOpenPickerContinuationEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs^ UnwrapIFileOpenPickerContinuationEventArgs(Local<Value> value)
  {
     return IFileOpenPickerContinuationEventArgs::Unwrap<IFileOpenPickerContinuationEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileOpenPickerContinuationEventArgs(Local<Object> exports)
  {
    IFileOpenPickerContinuationEventArgs::Init(exports);
  }

  class FileOpenPickerContinuationEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("FileOpenPickerContinuationEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("continuationData").ToLocalChecked(), ContinuationDataGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("files").ToLocalChecked(), FilesGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("FileOpenPickerContinuationEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    FileOpenPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FileOpenPickerContinuationEventArgs *wrapperInstance = new FileOpenPickerContinuationEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapFileOpenPickerContinuationEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerContinuationEventArgs *wrapper = FileOpenPickerContinuationEventArgs::Unwrap<FileOpenPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerContinuationEventArgs *wrapper = FileOpenPickerContinuationEventArgs::Unwrap<FileOpenPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerContinuationEventArgs *wrapper = FileOpenPickerContinuationEventArgs::Unwrap<FileOpenPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContinuationDataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerContinuationEventArgs *wrapper = FileOpenPickerContinuationEventArgs::Unwrap<FileOpenPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->ContinuationData;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void FilesGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileOpenPickerContinuationEventArgs *wrapper = FileOpenPickerContinuationEventArgs::Unwrap<FileOpenPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::IVectorView<::Windows::Storage::StorageFile^>^ result = wrapper->_instance->Files;
        info.GetReturnValue().Set(NodeRT::Collections::VectorViewWrapper<::Windows::Storage::StorageFile^>::CreateVectorViewWrapper(result, 
            [](::Windows::Storage::StorageFile^ val) -> Local<Value> {
              return NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage", "StorageFile", val);
            },
            [](Local<Value> value) -> bool {
              return NodeRT::Utils::IsWinRtWrapperOf<::Windows::Storage::StorageFile^>(value);
            },
            [](Local<Value> value) -> ::Windows::Storage::StorageFile^ {
              return dynamic_cast<::Windows::Storage::StorageFile^>(NodeRT::Utils::GetObjectInstance(value));
            }
          ));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapFileOpenPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ UnwrapFileOpenPickerContinuationEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> FileOpenPickerContinuationEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapFileOpenPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FileOpenPickerContinuationEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs^ UnwrapFileOpenPickerContinuationEventArgs(Local<Value> value)
  {
     return FileOpenPickerContinuationEventArgs::Unwrap<FileOpenPickerContinuationEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFileOpenPickerContinuationEventArgs(Local<Object> exports)
  {
    FileOpenPickerContinuationEventArgs::Init(exports);
  }

  class IFileSavePickerContinuationEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFileSavePickerContinuationEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("file").ToLocalChecked(), FileGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFileSavePickerContinuationEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFileSavePickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFileSavePickerContinuationEventArgs *wrapperInstance = new IFileSavePickerContinuationEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFileSavePickerContinuationEventArgs(winRtInstance));
    }


  



    static void FileGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      IFileSavePickerContinuationEventArgs *wrapper = IFileSavePickerContinuationEventArgs::Unwrap<IFileSavePickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::StorageFile^ result = wrapper->_instance->File;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage", "StorageFile", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFileSavePickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ UnwrapIFileSavePickerContinuationEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFileSavePickerContinuationEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFileSavePickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFileSavePickerContinuationEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs^ UnwrapIFileSavePickerContinuationEventArgs(Local<Value> value)
  {
     return IFileSavePickerContinuationEventArgs::Unwrap<IFileSavePickerContinuationEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFileSavePickerContinuationEventArgs(Local<Object> exports)
  {
    IFileSavePickerContinuationEventArgs::Init(exports);
  }

  class FileSavePickerContinuationEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("FileSavePickerContinuationEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("continuationData").ToLocalChecked(), ContinuationDataGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("file").ToLocalChecked(), FileGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("FileSavePickerContinuationEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    FileSavePickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FileSavePickerContinuationEventArgs *wrapperInstance = new FileSavePickerContinuationEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapFileSavePickerContinuationEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerContinuationEventArgs *wrapper = FileSavePickerContinuationEventArgs::Unwrap<FileSavePickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerContinuationEventArgs *wrapper = FileSavePickerContinuationEventArgs::Unwrap<FileSavePickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerContinuationEventArgs *wrapper = FileSavePickerContinuationEventArgs::Unwrap<FileSavePickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContinuationDataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerContinuationEventArgs *wrapper = FileSavePickerContinuationEventArgs::Unwrap<FileSavePickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->ContinuationData;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void FileGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FileSavePickerContinuationEventArgs *wrapper = FileSavePickerContinuationEventArgs::Unwrap<FileSavePickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::StorageFile^ result = wrapper->_instance->File;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage", "StorageFile", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapFileSavePickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ UnwrapFileSavePickerContinuationEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> FileSavePickerContinuationEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapFileSavePickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FileSavePickerContinuationEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs^ UnwrapFileSavePickerContinuationEventArgs(Local<Value> value)
  {
     return FileSavePickerContinuationEventArgs::Unwrap<FileSavePickerContinuationEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFileSavePickerContinuationEventArgs(Local<Object> exports)
  {
    FileSavePickerContinuationEventArgs::Init(exports);
  }

  class IFolderPickerContinuationEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IFolderPickerContinuationEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("folder").ToLocalChecked(), FolderGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IFolderPickerContinuationEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IFolderPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IFolderPickerContinuationEventArgs *wrapperInstance = new IFolderPickerContinuationEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIFolderPickerContinuationEventArgs(winRtInstance));
    }


  



    static void FolderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      IFolderPickerContinuationEventArgs *wrapper = IFolderPickerContinuationEventArgs::Unwrap<IFolderPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::StorageFolder^ result = wrapper->_instance->Folder;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage", "StorageFolder", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIFolderPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ UnwrapIFolderPickerContinuationEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IFolderPickerContinuationEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIFolderPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IFolderPickerContinuationEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs^ UnwrapIFolderPickerContinuationEventArgs(Local<Value> value)
  {
     return IFolderPickerContinuationEventArgs::Unwrap<IFolderPickerContinuationEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIFolderPickerContinuationEventArgs(Local<Object> exports)
  {
    IFolderPickerContinuationEventArgs::Init(exports);
  }

  class FolderPickerContinuationEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("FolderPickerContinuationEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("continuationData").ToLocalChecked(), ContinuationDataGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("folder").ToLocalChecked(), FolderGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("FolderPickerContinuationEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    FolderPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      FolderPickerContinuationEventArgs *wrapperInstance = new FolderPickerContinuationEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapFolderPickerContinuationEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FolderPickerContinuationEventArgs *wrapper = FolderPickerContinuationEventArgs::Unwrap<FolderPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FolderPickerContinuationEventArgs *wrapper = FolderPickerContinuationEventArgs::Unwrap<FolderPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FolderPickerContinuationEventArgs *wrapper = FolderPickerContinuationEventArgs::Unwrap<FolderPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContinuationDataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FolderPickerContinuationEventArgs *wrapper = FolderPickerContinuationEventArgs::Unwrap<FolderPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->ContinuationData;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void FolderGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      FolderPickerContinuationEventArgs *wrapper = FolderPickerContinuationEventArgs::Unwrap<FolderPickerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Storage::StorageFolder^ result = wrapper->_instance->Folder;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Storage", "StorageFolder", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapFolderPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ UnwrapFolderPickerContinuationEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> FolderPickerContinuationEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapFolderPickerContinuationEventArgs(::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(FolderPickerContinuationEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs^ UnwrapFolderPickerContinuationEventArgs(Local<Value> value)
  {
     return FolderPickerContinuationEventArgs::Unwrap<FolderPickerContinuationEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitFolderPickerContinuationEventArgs(Local<Object> exports)
  {
    FolderPickerContinuationEventArgs::Init(exports);
  }

  class IWebAuthenticationBrokerContinuationEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IWebAuthenticationBrokerContinuationEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("webAuthenticationResult").ToLocalChecked(), WebAuthenticationResultGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IWebAuthenticationBrokerContinuationEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IWebAuthenticationBrokerContinuationEventArgs(::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IWebAuthenticationBrokerContinuationEventArgs *wrapperInstance = new IWebAuthenticationBrokerContinuationEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIWebAuthenticationBrokerContinuationEventArgs(winRtInstance));
    }


  



    static void WebAuthenticationResultGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      IWebAuthenticationBrokerContinuationEventArgs *wrapper = IWebAuthenticationBrokerContinuationEventArgs::Unwrap<IWebAuthenticationBrokerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Security::Authentication::Web::WebAuthenticationResult^ result = wrapper->_instance->WebAuthenticationResult;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Security.Authentication.Web", "WebAuthenticationResult", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIWebAuthenticationBrokerContinuationEventArgs(::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ UnwrapIWebAuthenticationBrokerContinuationEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IWebAuthenticationBrokerContinuationEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIWebAuthenticationBrokerContinuationEventArgs(::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IWebAuthenticationBrokerContinuationEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs^ UnwrapIWebAuthenticationBrokerContinuationEventArgs(Local<Value> value)
  {
     return IWebAuthenticationBrokerContinuationEventArgs::Unwrap<IWebAuthenticationBrokerContinuationEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIWebAuthenticationBrokerContinuationEventArgs(Local<Object> exports)
  {
    IWebAuthenticationBrokerContinuationEventArgs::Init(exports);
  }

  class WebAuthenticationBrokerContinuationEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("WebAuthenticationBrokerContinuationEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("continuationData").ToLocalChecked(), ContinuationDataGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("webAuthenticationResult").ToLocalChecked(), WebAuthenticationResultGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("WebAuthenticationBrokerContinuationEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    WebAuthenticationBrokerContinuationEventArgs(::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebAuthenticationBrokerContinuationEventArgs *wrapperInstance = new WebAuthenticationBrokerContinuationEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapWebAuthenticationBrokerContinuationEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      WebAuthenticationBrokerContinuationEventArgs *wrapper = WebAuthenticationBrokerContinuationEventArgs::Unwrap<WebAuthenticationBrokerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      WebAuthenticationBrokerContinuationEventArgs *wrapper = WebAuthenticationBrokerContinuationEventArgs::Unwrap<WebAuthenticationBrokerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      WebAuthenticationBrokerContinuationEventArgs *wrapper = WebAuthenticationBrokerContinuationEventArgs::Unwrap<WebAuthenticationBrokerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ContinuationDataGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      WebAuthenticationBrokerContinuationEventArgs *wrapper = WebAuthenticationBrokerContinuationEventArgs::Unwrap<WebAuthenticationBrokerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->ContinuationData;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void WebAuthenticationResultGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^>(info.This()))
      {
        return;
      }

      WebAuthenticationBrokerContinuationEventArgs *wrapper = WebAuthenticationBrokerContinuationEventArgs::Unwrap<WebAuthenticationBrokerContinuationEventArgs>(info.This());

      try 
      {
        ::Windows::Security::Authentication::Web::WebAuthenticationResult^ result = wrapper->_instance->WebAuthenticationResult;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Security.Authentication.Web", "WebAuthenticationResult", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapWebAuthenticationBrokerContinuationEventArgs(::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ UnwrapWebAuthenticationBrokerContinuationEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> WebAuthenticationBrokerContinuationEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebAuthenticationBrokerContinuationEventArgs(::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebAuthenticationBrokerContinuationEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs^ UnwrapWebAuthenticationBrokerContinuationEventArgs(Local<Value> value)
  {
     return WebAuthenticationBrokerContinuationEventArgs::Unwrap<WebAuthenticationBrokerContinuationEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebAuthenticationBrokerContinuationEventArgs(Local<Object> exports)
  {
    WebAuthenticationBrokerContinuationEventArgs::Init(exports);
  }

  class IWebAccountProviderActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IWebAccountProviderActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("operation").ToLocalChecked(), OperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IWebAccountProviderActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IWebAccountProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IWebAccountProviderActivatedEventArgs *wrapperInstance = new IWebAccountProviderActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIWebAccountProviderActivatedEventArgs(winRtInstance));
    }


  



    static void OperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IWebAccountProviderActivatedEventArgs *wrapper = IWebAccountProviderActivatedEventArgs::Unwrap<IWebAccountProviderActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Security::Authentication::Web::Provider::IWebAccountProviderOperation^ result = wrapper->_instance->Operation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Security.Authentication.Web.Provider", "IWebAccountProviderOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIWebAccountProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ UnwrapIWebAccountProviderActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IWebAccountProviderActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIWebAccountProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IWebAccountProviderActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs^ UnwrapIWebAccountProviderActivatedEventArgs(Local<Value> value)
  {
     return IWebAccountProviderActivatedEventArgs::Unwrap<IWebAccountProviderActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIWebAccountProviderActivatedEventArgs(Local<Object> exports)
  {
    IWebAccountProviderActivatedEventArgs::Init(exports);
  }

  class WebAccountProviderActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("WebAccountProviderActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("operation").ToLocalChecked(), OperationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("WebAccountProviderActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    WebAccountProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      WebAccountProviderActivatedEventArgs *wrapperInstance = new WebAccountProviderActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapWebAccountProviderActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WebAccountProviderActivatedEventArgs *wrapper = WebAccountProviderActivatedEventArgs::Unwrap<WebAccountProviderActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WebAccountProviderActivatedEventArgs *wrapper = WebAccountProviderActivatedEventArgs::Unwrap<WebAccountProviderActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WebAccountProviderActivatedEventArgs *wrapper = WebAccountProviderActivatedEventArgs::Unwrap<WebAccountProviderActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void OperationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^>(info.This()))
      {
        return;
      }

      WebAccountProviderActivatedEventArgs *wrapper = WebAccountProviderActivatedEventArgs::Unwrap<WebAccountProviderActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Security::Authentication::Web::Provider::IWebAccountProviderOperation^ result = wrapper->_instance->Operation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Security.Authentication.Web.Provider", "IWebAccountProviderOperation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapWebAccountProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ UnwrapWebAccountProviderActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> WebAccountProviderActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapWebAccountProviderActivatedEventArgs(::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(WebAccountProviderActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs^ UnwrapWebAccountProviderActivatedEventArgs(Local<Value> value)
  {
     return WebAccountProviderActivatedEventArgs::Unwrap<WebAccountProviderActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitWebAccountProviderActivatedEventArgs(Local<Object> exports)
  {
    WebAccountProviderActivatedEventArgs::Init(exports);
  }

  class IToastNotificationActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IToastNotificationActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("argument").ToLocalChecked(), ArgumentGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("userInput").ToLocalChecked(), UserInputGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IToastNotificationActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IToastNotificationActivatedEventArgs(::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IToastNotificationActivatedEventArgs *wrapperInstance = new IToastNotificationActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIToastNotificationActivatedEventArgs(winRtInstance));
    }


  



    static void ArgumentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IToastNotificationActivatedEventArgs *wrapper = IToastNotificationActivatedEventArgs::Unwrap<IToastNotificationActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Argument;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void UserInputGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IToastNotificationActivatedEventArgs *wrapper = IToastNotificationActivatedEventArgs::Unwrap<IToastNotificationActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->UserInput;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIToastNotificationActivatedEventArgs(::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ UnwrapIToastNotificationActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IToastNotificationActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIToastNotificationActivatedEventArgs(::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IToastNotificationActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs^ UnwrapIToastNotificationActivatedEventArgs(Local<Value> value)
  {
     return IToastNotificationActivatedEventArgs::Unwrap<IToastNotificationActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIToastNotificationActivatedEventArgs(Local<Object> exports)
  {
    IToastNotificationActivatedEventArgs::Init(exports);
  }

  class ToastNotificationActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("ToastNotificationActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("argument").ToLocalChecked(), ArgumentGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("userInput").ToLocalChecked(), UserInputGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("ToastNotificationActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    ToastNotificationActivatedEventArgs(::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      ToastNotificationActivatedEventArgs *wrapperInstance = new ToastNotificationActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapToastNotificationActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ToastNotificationActivatedEventArgs *wrapper = ToastNotificationActivatedEventArgs::Unwrap<ToastNotificationActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ToastNotificationActivatedEventArgs *wrapper = ToastNotificationActivatedEventArgs::Unwrap<ToastNotificationActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ToastNotificationActivatedEventArgs *wrapper = ToastNotificationActivatedEventArgs::Unwrap<ToastNotificationActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ArgumentGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ToastNotificationActivatedEventArgs *wrapper = ToastNotificationActivatedEventArgs::Unwrap<ToastNotificationActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Argument;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void UserInputGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^>(info.This()))
      {
        return;
      }

      ToastNotificationActivatedEventArgs *wrapper = ToastNotificationActivatedEventArgs::Unwrap<ToastNotificationActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Foundation::Collections::ValueSet^ result = wrapper->_instance->UserInput;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Foundation.Collections", "ValueSet", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapToastNotificationActivatedEventArgs(::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ UnwrapToastNotificationActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> ToastNotificationActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapToastNotificationActivatedEventArgs(::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(ToastNotificationActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs^ UnwrapToastNotificationActivatedEventArgs(Local<Value> value)
  {
     return ToastNotificationActivatedEventArgs::Unwrap<ToastNotificationActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitToastNotificationActivatedEventArgs(Local<Object> exports)
  {
    ToastNotificationActivatedEventArgs::Init(exports);
  }

  class IDialReceiverActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IDialReceiverActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("appName").ToLocalChecked(), AppNameGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IDialReceiverActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IDialReceiverActivatedEventArgs(::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IDialReceiverActivatedEventArgs *wrapperInstance = new IDialReceiverActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIDialReceiverActivatedEventArgs(winRtInstance));
    }


  



    static void AppNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IDialReceiverActivatedEventArgs *wrapper = IDialReceiverActivatedEventArgs::Unwrap<IDialReceiverActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->AppName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIDialReceiverActivatedEventArgs(::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ UnwrapIDialReceiverActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IDialReceiverActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIDialReceiverActivatedEventArgs(::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IDialReceiverActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs^ UnwrapIDialReceiverActivatedEventArgs(Local<Value> value)
  {
     return IDialReceiverActivatedEventArgs::Unwrap<IDialReceiverActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIDialReceiverActivatedEventArgs(Local<Object> exports)
  {
    IDialReceiverActivatedEventArgs::Init(exports);
  }

  class DialReceiverActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("DialReceiverActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("currentlyShownApplicationViewId").ToLocalChecked(), CurrentlyShownApplicationViewIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("appName").ToLocalChecked(), AppNameGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("arguments").ToLocalChecked(), ArgumentsGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("tileId").ToLocalChecked(), TileIdGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("viewSwitcher").ToLocalChecked(), ViewSwitcherGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("DialReceiverActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    DialReceiverActivatedEventArgs(::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DialReceiverActivatedEventArgs *wrapperInstance = new DialReceiverActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapDialReceiverActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DialReceiverActivatedEventArgs *wrapper = DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DialReceiverActivatedEventArgs *wrapper = DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DialReceiverActivatedEventArgs *wrapper = DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void CurrentlyShownApplicationViewIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DialReceiverActivatedEventArgs *wrapper = DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(info.This());

      try 
      {
        int result = wrapper->_instance->CurrentlyShownApplicationViewId;
        info.GetReturnValue().Set(Nan::New<Integer>(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void AppNameGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DialReceiverActivatedEventArgs *wrapper = DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->AppName;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ArgumentsGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DialReceiverActivatedEventArgs *wrapper = DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->Arguments;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void TileIdGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DialReceiverActivatedEventArgs *wrapper = DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(info.This());

      try 
      {
        Platform::String^ result = wrapper->_instance->TileId;
        info.GetReturnValue().Set(NodeRT::Utils::NewString(result->Data()));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ViewSwitcherGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DialReceiverActivatedEventArgs *wrapper = DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::UI::ViewManagement::ActivationViewSwitcher^ result = wrapper->_instance->ViewSwitcher;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.UI.ViewManagement", "ActivationViewSwitcher", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapDialReceiverActivatedEventArgs(::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ UnwrapDialReceiverActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> DialReceiverActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapDialReceiverActivatedEventArgs(::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DialReceiverActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs^ UnwrapDialReceiverActivatedEventArgs(Local<Value> value)
  {
     return DialReceiverActivatedEventArgs::Unwrap<DialReceiverActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDialReceiverActivatedEventArgs(Local<Object> exports)
  {
    DialReceiverActivatedEventArgs::Init(exports);
  }

  class IDevicePairingActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IDevicePairingActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("deviceInformation").ToLocalChecked(), DeviceInformationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IDevicePairingActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IDevicePairingActivatedEventArgs(::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IDevicePairingActivatedEventArgs *wrapperInstance = new IDevicePairingActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIDevicePairingActivatedEventArgs(winRtInstance));
    }


  



    static void DeviceInformationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IDevicePairingActivatedEventArgs *wrapper = IDevicePairingActivatedEventArgs::Unwrap<IDevicePairingActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Devices::Enumeration::DeviceInformation^ result = wrapper->_instance->DeviceInformation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Devices.Enumeration", "DeviceInformation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIDevicePairingActivatedEventArgs(::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ UnwrapIDevicePairingActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IDevicePairingActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIDevicePairingActivatedEventArgs(::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IDevicePairingActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs^ UnwrapIDevicePairingActivatedEventArgs(Local<Value> value)
  {
     return IDevicePairingActivatedEventArgs::Unwrap<IDevicePairingActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIDevicePairingActivatedEventArgs(Local<Object> exports)
  {
    IDevicePairingActivatedEventArgs::Init(exports);
  }

  class DevicePairingActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("DevicePairingActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("deviceInformation").ToLocalChecked(), DeviceInformationGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("DevicePairingActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    DevicePairingActivatedEventArgs(::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      DevicePairingActivatedEventArgs *wrapperInstance = new DevicePairingActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapDevicePairingActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DevicePairingActivatedEventArgs *wrapper = DevicePairingActivatedEventArgs::Unwrap<DevicePairingActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DevicePairingActivatedEventArgs *wrapper = DevicePairingActivatedEventArgs::Unwrap<DevicePairingActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DevicePairingActivatedEventArgs *wrapper = DevicePairingActivatedEventArgs::Unwrap<DevicePairingActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void DeviceInformationGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^>(info.This()))
      {
        return;
      }

      DevicePairingActivatedEventArgs *wrapper = DevicePairingActivatedEventArgs::Unwrap<DevicePairingActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Devices::Enumeration::DeviceInformation^ result = wrapper->_instance->DeviceInformation;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Devices.Enumeration", "DeviceInformation", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapDevicePairingActivatedEventArgs(::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ UnwrapDevicePairingActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> DevicePairingActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapDevicePairingActivatedEventArgs(::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(DevicePairingActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs^ UnwrapDevicePairingActivatedEventArgs(Local<Value> value)
  {
     return DevicePairingActivatedEventArgs::Unwrap<DevicePairingActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitDevicePairingActivatedEventArgs(Local<Object> exports)
  {
    DevicePairingActivatedEventArgs::Init(exports);
  }

  class IVoiceCommandActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("IVoiceCommandActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("result").ToLocalChecked(), ResultGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("IVoiceCommandActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    IVoiceCommandActivatedEventArgs(::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      IVoiceCommandActivatedEventArgs *wrapperInstance = new IVoiceCommandActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapIVoiceCommandActivatedEventArgs(winRtInstance));
    }


  



    static void ResultGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^>(info.This()))
      {
        return;
      }

      IVoiceCommandActivatedEventArgs *wrapper = IVoiceCommandActivatedEventArgs::Unwrap<IVoiceCommandActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Media::SpeechRecognition::SpeechRecognitionResult^ result = wrapper->_instance->Result;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.SpeechRecognition", "SpeechRecognitionResult", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapIVoiceCommandActivatedEventArgs(::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ UnwrapIVoiceCommandActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> IVoiceCommandActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapIVoiceCommandActivatedEventArgs(::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(IVoiceCommandActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs^ UnwrapIVoiceCommandActivatedEventArgs(Local<Value> value)
  {
     return IVoiceCommandActivatedEventArgs::Unwrap<IVoiceCommandActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitIVoiceCommandActivatedEventArgs(Local<Object> exports)
  {
    IVoiceCommandActivatedEventArgs::Init(exports);
  }

  class VoiceCommandActivatedEventArgs : public WrapperBase
  {
  public:    
    static void Init(const Local<Object> exports)
    {
      HandleScope scope;
      
      Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(New);
      s_constructorTemplate.Reset(localRef);
      localRef->SetClassName(Nan::New<String>("VoiceCommandActivatedEventArgs").ToLocalChecked());
      localRef->InstanceTemplate()->SetInternalFieldCount(1);
      
                              
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("kind").ToLocalChecked(), KindGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("previousExecutionState").ToLocalChecked(), PreviousExecutionStateGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("splashScreen").ToLocalChecked(), SplashScreenGetter);
      Nan::SetAccessor(localRef->PrototypeTemplate(), Nan::New<String>("result").ToLocalChecked(), ResultGetter);
      
      Local<Object> constructor = Nan::To<Object>(Nan::GetFunction(localRef).ToLocalChecked()).ToLocalChecked();
	  Nan::SetMethod(constructor, "castFrom", CastFrom);


      Nan::Set(exports, Nan::New<String>("VoiceCommandActivatedEventArgs").ToLocalChecked(), constructor);
    }


    virtual ::Platform::Object^ GetObjectInstance() const override
    {
      return _instance;
    }

  private:
    
    VoiceCommandActivatedEventArgs(::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ instance)
    {
      _instance = instance;
    }
    
    
    static void New(Nan::NAN_METHOD_ARGS_TYPE info)
    {
      HandleScope scope;

	    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(s_constructorTemplate);

      // in case the constructor was called without the new operator
      if (!localRef->HasInstance(info.This()))
      {
        if (info.Length() > 0)
        {
          std::unique_ptr<Local<Value> []> constructorArgs(new Local<Value>[info.Length()]);

          Local<Value> *argsPtr = constructorArgs.get();
          for (int i = 0; i < info.Length(); i++)
          {
            argsPtr[i] = info[i];
          }

		  MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), constructorArgs.get());
		  if (res.IsEmpty())
		  {
			  return;
		  }
		  info.GetReturnValue().Set(res.ToLocalChecked());
		  return;
		}
		else
		{
          MaybeLocal<Object> res = Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(), info.Length(), nullptr);
          if (res.IsEmpty())
          {
            return;
          }
          info.GetReturnValue().Set(res.ToLocalChecked());
          return;
        }
      }
      
      ::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ winRtInstance;


      if (info.Length() == 1 && OpaqueWrapper::IsOpaqueWrapper(info[0]) &&
        NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^>(info[0]))
      {
        try 
        {
          winRtInstance = (::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
        }
        catch (Platform::Exception ^exception)
        {
          NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
          return;
        }
      }
      else
      {
        Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no suitable constructor found")));
	    	return;
      }

      NodeRT::Utils::SetHiddenValue(info.This(), Nan::New<String>("__winRtInstance__").ToLocalChecked(), True());

      VoiceCommandActivatedEventArgs *wrapperInstance = new VoiceCommandActivatedEventArgs(winRtInstance);
      wrapperInstance->Wrap(info.This());

      info.GetReturnValue().Set(info.This());
    }


	
    static void CastFrom(Nan::NAN_METHOD_ARGS_TYPE info)
    {
		HandleScope scope;
		if (info.Length() < 1 || !NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^>(info[0]))
		{
			Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"Invalid arguments, no object provided, or given object could not be casted to requested type")));
			return;
		}

		::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ winRtInstance;
		try
		{
			winRtInstance = (::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^) NodeRT::Utils::GetObjectInstance(info[0]);
		}
		catch (Platform::Exception ^exception)
		{
			NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
			return;
		}

		info.GetReturnValue().Set(WrapVoiceCommandActivatedEventArgs(winRtInstance));
    }


  



    static void KindGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^>(info.This()))
      {
        return;
      }

      VoiceCommandActivatedEventArgs *wrapper = VoiceCommandActivatedEventArgs::Unwrap<VoiceCommandActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ActivationKind result = wrapper->_instance->Kind;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void PreviousExecutionStateGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^>(info.This()))
      {
        return;
      }

      VoiceCommandActivatedEventArgs *wrapper = VoiceCommandActivatedEventArgs::Unwrap<VoiceCommandActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::ApplicationExecutionState result = wrapper->_instance->PreviousExecutionState;
        info.GetReturnValue().Set(Nan::New<Integer>(static_cast<int>(result)));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void SplashScreenGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^>(info.This()))
      {
        return;
      }

      VoiceCommandActivatedEventArgs *wrapper = VoiceCommandActivatedEventArgs::Unwrap<VoiceCommandActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::ApplicationModel::Activation::SplashScreen^ result = wrapper->_instance->SplashScreen;
        info.GetReturnValue().Set(WrapSplashScreen(result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    
    static void ResultGetter(Local<String> property, const Nan::PropertyCallbackInfo<v8::Value> &info)
    {
      HandleScope scope;
      
      if (!NodeRT::Utils::IsWinRtWrapperOf<::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^>(info.This()))
      {
        return;
      }

      VoiceCommandActivatedEventArgs *wrapper = VoiceCommandActivatedEventArgs::Unwrap<VoiceCommandActivatedEventArgs>(info.This());

      try 
      {
        ::Windows::Media::SpeechRecognition::SpeechRecognitionResult^ result = wrapper->_instance->Result;
        info.GetReturnValue().Set(NodeRT::Utils::CreateExternalWinRTObject("Windows.Media.SpeechRecognition", "SpeechRecognitionResult", result));
        return;
      }
      catch (Platform::Exception ^exception)
      {
        NodeRT::Utils::ThrowWinRtExceptionInJs(exception);
        return;
      }
    }
    


  private:
    ::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ _instance;
    static Persistent<FunctionTemplate> s_constructorTemplate;

    friend v8::Local<v8::Value> WrapVoiceCommandActivatedEventArgs(::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ wintRtInstance);
    friend ::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ UnwrapVoiceCommandActivatedEventArgs(Local<Value> value);
  };
  Persistent<FunctionTemplate> VoiceCommandActivatedEventArgs::s_constructorTemplate;

  v8::Local<v8::Value> WrapVoiceCommandActivatedEventArgs(::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ winRtInstance)
  {
    EscapableHandleScope scope;

    if (winRtInstance == nullptr)
    {
      return scope.Escape(Undefined());
    }

    Local<Value> opaqueWrapper = CreateOpaqueWrapper(winRtInstance);
    Local<Value> args[] = {opaqueWrapper};
    Local<FunctionTemplate> localRef = Nan::New<FunctionTemplate>(VoiceCommandActivatedEventArgs::s_constructorTemplate);
    return scope.Escape(Nan::NewInstance(Nan::GetFunction(localRef).ToLocalChecked(),_countof(args), args).ToLocalChecked());
  }

  ::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs^ UnwrapVoiceCommandActivatedEventArgs(Local<Value> value)
  {
     return VoiceCommandActivatedEventArgs::Unwrap<VoiceCommandActivatedEventArgs>(Nan::To<Object>(value).ToLocalChecked())->_instance;
  }

  void InitVoiceCommandActivatedEventArgs(Local<Object> exports)
  {
    VoiceCommandActivatedEventArgs::Init(exports);
  }

} } } } 

NAN_MODULE_INIT(init)
{
  // we ignore failures for now since it probably means that the initialization already happened for STA, and that's cool
  CoInitializeEx(nullptr, COINIT_MULTITHREADED);
  //if (FAILED(CoInitializeEx(nullptr, COINIT_MULTITHREADED)))
  /*{
    Nan::ThrowError(Nan::Error(NodeRT::Utils::NewString(L"error in CoInitializeEx()")));
    return;
  }*/
  
  NodeRT::Windows::ApplicationModel::Activation::InitApplicationExecutionStateEnum(target);
  NodeRT::Windows::ApplicationModel::Activation::InitActivationKindEnum(target);
  NodeRT::Windows::ApplicationModel::Activation::InitPrintTaskSettingsActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitPrint3DWorkflowActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitLockScreenCallActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitCameraSettingsActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitContactPickerActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitContactCallActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitContactMessageActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitContactMapActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitContactPostActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitContactVideoCallActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitWalletActionActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitSplashScreen(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIPrintTaskSettingsActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIPrint3DWorkflowActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitICameraSettingsActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContactPickerActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContactActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContactCallActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContactMessageActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContactMapActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContactPostActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContactVideoCallActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContactsProviderActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIWalletActionActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIApplicationViewActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIViewSwitcherProvider(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIPrelaunchActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitILaunchActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitILockScreenCallActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitLaunchActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitISearchActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitISearchActivatedEventArgsWithLinguisticDetails(target);
  NodeRT::Windows::ApplicationModel::Activation::InitSearchActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIShareTargetActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitShareTargetActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileActivatedEventArgsWithNeighboringFiles(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileActivatedEventArgsWithCallerPackageFamilyName(target);
  NodeRT::Windows::ApplicationModel::Activation::InitFileActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIProtocolActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData(target);
  NodeRT::Windows::ApplicationModel::Activation::InitProtocolActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIProtocolForResultsActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitProtocolForResultsActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileOpenPickerActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileOpenPickerActivatedEventArgs2(target);
  NodeRT::Windows::ApplicationModel::Activation::InitFileOpenPickerActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileSavePickerActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileSavePickerActivatedEventArgs2(target);
  NodeRT::Windows::ApplicationModel::Activation::InitFileSavePickerActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitICachedFileUpdaterActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitCachedFileUpdaterActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIDeviceActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitDeviceActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIAppointmentsProviderActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIAppointmentsProviderAddAppointmentActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitAppointmentsProviderAddAppointmentActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIAppointmentsProviderReplaceAppointmentActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitAppointmentsProviderReplaceAppointmentActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIAppointmentsProviderRemoveAppointmentActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIPickerReturnedActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitPickerReturnedActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitAppointmentsProviderRemoveAppointmentActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitAppointmentsProviderShowAppointmentDetailsActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIAppointmentsProviderShowTimeFrameActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitAppointmentsProviderShowTimeFrameActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIRestrictedLaunchActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitRestrictedLaunchActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitILockScreenActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitLockScreenActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIContinuationActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileOpenPickerContinuationEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitFileOpenPickerContinuationEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFileSavePickerContinuationEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitFileSavePickerContinuationEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIFolderPickerContinuationEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitFolderPickerContinuationEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIWebAuthenticationBrokerContinuationEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitWebAuthenticationBrokerContinuationEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIWebAccountProviderActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitWebAccountProviderActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIToastNotificationActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitToastNotificationActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIDialReceiverActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitDialReceiverActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIDevicePairingActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitDevicePairingActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitIVoiceCommandActivatedEventArgs(target);
  NodeRT::Windows::ApplicationModel::Activation::InitVoiceCommandActivatedEventArgs(target);

  NodeRT::Utils::RegisterNameSpace("Windows.ApplicationModel.Activation", target);
}


NODE_MODULE(binding, init)