text: // WARNING: Please don't edit this file. It was generated by C++/WinRT v2.0.220531.1
  
  #pragma once
  #ifndef WINRT_Windows_Phone_PersonalInformation_H
  #define WINRT_Windows_Phone_PersonalInformation_H
  #include "winrt/base.h"
  static_assert(winrt::check_version(CPPWINRT_VERSION, "2.0.220531.1"), "Mismatched C++/WinRT headers.");
  #define CPPWINRT_VERSION "2.0.220531.1"
  #include "winrt/impl/Windows.Foundation.2.h"
  #include "winrt/impl/Windows.Foundation.Collections.2.h"
  #include "winrt/impl/Windows.Storage.Streams.2.h"
  #include "winrt/impl/Windows.Phone.PersonalInformation.2.h"
  namespace winrt::impl
  {
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Country() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_Country(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Country(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_Country(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Locality() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_Locality(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Locality(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_Locality(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Region() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_Region(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Region(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_Region(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::PostalCode() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_PostalCode(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::PostalCode(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_PostalCode(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::StreetAddress() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_StreetAddress(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::StreetAddress(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_StreetAddress(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactChangeRecord<D>::ChangeType() const
      {
          winrt::Windows::Phone::PersonalInformation::ContactChangeType value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactChangeRecord)->get_ChangeType(reinterpret_cast<int32_t*>(&value)));
          return value;
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactChangeRecord<D>::RevisionNumber() const
      {
          uint64_t value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactChangeRecord)->get_RevisionNumber(&value));
          return value;
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactChangeRecord<D>::Id() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactChangeRecord)->get_Id(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactChangeRecord<D>::RemoteId() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactChangeRecord)->get_RemoteId(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::DisplayName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_DisplayName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::DisplayName(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_DisplayName(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::FamilyName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_FamilyName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::FamilyName(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_FamilyName(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::GivenName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_GivenName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::GivenName(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_GivenName(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::HonorificPrefix() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_HonorificPrefix(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::HonorificPrefix(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_HonorificPrefix(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::HonorificSuffix() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_HonorificSuffix(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::HonorificSuffix(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_HonorificSuffix(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::GetDisplayPictureAsync() const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->GetDisplayPictureAsync(&operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::SetDisplayPictureAsync(winrt::Windows::Storage::Streams::IInputStream const& stream) const
      {
          void* action{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->SetDisplayPictureAsync(*(void**)(&stream), &action));
          return winrt::Windows::Foundation::IAsyncAction{ action, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::DisplayPicture() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_DisplayPicture(&value));
          return winrt::Windows::Storage::Streams::IRandomAccessStreamReference{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::GetPropertiesAsync() const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->GetPropertiesAsync(&operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::ToVcardAsync() const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->ToVcardAsync(&operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::ToVcardAsync(winrt::Windows::Phone::PersonalInformation::VCardFormat const& format) const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->ToVcardWithOptionsAsync(static_cast<int32_t>(format), &operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation2<D>::DisplayPictureDate() const
      {
          winrt::Windows::Foundation::DateTime returnValue{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation2)->get_DisplayPictureDate(put_abi(returnValue)));
          return returnValue;
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation2<D>::DisplayPictureDate(winrt::Windows::Foundation::DateTime const& returnValue) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation2)->put_DisplayPictureDate(impl::bind_in(returnValue)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformationStatics<D>::ParseVcardAsync(winrt::Windows::Storage::Streams::IInputStream const& vcard) const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformationStatics)->ParseVcardAsync(*(void**)(&vcard), &operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactInformation>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryOptions<D>::DesiredFields() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryOptions)->get_DesiredFields(&value));
          return winrt::Windows::Foundation::Collections::IVector<hstring>{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryOptions<D>::OrderBy() const
      {
          winrt::Windows::Phone::PersonalInformation::ContactQueryResultOrdering value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryOptions)->get_OrderBy(reinterpret_cast<int32_t*>(&value)));
          return value;
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryOptions<D>::OrderBy(winrt::Windows::Phone::PersonalInformation::ContactQueryResultOrdering const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryOptions)->put_OrderBy(static_cast<int32_t>(value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryResult<D>::GetContactCountAsync() const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryResult)->GetContactCountAsync(&operation));
          return winrt::Windows::Foundation::IAsyncOperation<uint32_t>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryResult<D>::GetContactsAsync() const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryResult)->GetContactsAsync(&operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::StoredContact>>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryResult<D>::GetContactsAsync(uint32_t startIndex, uint32_t maxNumberOfItems) const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryResult)->GetContactsAsyncInRange(startIndex, maxNumberOfItems, &operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::StoredContact>>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryResult<D>::GetCurrentQueryOptions() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryResult)->GetCurrentQueryOptions(&value));
          return winrt::Windows::Phone::PersonalInformation::ContactQueryOptions{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::FindContactByRemoteIdAsync(param::hstring const& id) const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->FindContactByRemoteIdAsync(*(void**)(&id), &operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::FindContactByIdAsync(param::hstring const& id) const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->FindContactByIdAsync(*(void**)(&id), &operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::DeleteContactAsync(param::hstring const& id) const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->DeleteContactAsync(*(void**)(&id), &result));
          return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::CreateContactQuery() const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->CreateContactQueryDefault(&result));
          return winrt::Windows::Phone::PersonalInformation::ContactQueryResult{ result, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::CreateContactQuery(winrt::Windows::Phone::PersonalInformation::ContactQueryOptions const& options) const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->CreateContactQueryWithOptions(*(void**)(&options), &result));
          return winrt::Windows::Phone::PersonalInformation::ContactQueryResult{ result, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::DeleteAsync() const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->DeleteAsync(&result));
          return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::RevisionNumber() const
      {
          uint64_t value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->get_RevisionNumber(&value));
          return value;
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::GetChangesAsync(uint64_t baseRevisionNumber) const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->GetChangesAsync(baseRevisionNumber, &operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::ContactChangeRecord>>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::LoadExtendedPropertiesAsync() const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->LoadExtendedPropertiesAsync(&operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::SaveExtendedPropertiesAsync(param::async_map_view<hstring, winrt::Windows::Foundation::IInspectable> const& data) const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->SaveExtendedPropertiesAsync(*(void**)(&data), &result));
          return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore2<D>::CreateMeContactAsync(param::hstring const& id) const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore2)->CreateMeContactAsync(*(void**)(&id), &operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStoreStatics<D>::CreateOrOpenAsync() const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStoreStatics)->CreateOrOpenAsync(&operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStoreStatics<D>::CreateOrOpenAsync(winrt::Windows::Phone::PersonalInformation::ContactStoreSystemAccessMode const& access, winrt::Windows::Phone::PersonalInformation::ContactStoreApplicationAccessMode const& sharing) const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStoreStatics)->CreateOrOpenWithOptionsAsync(static_cast<int32_t>(access), static_cast<int32_t>(sharing), &operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::DisplayName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_DisplayName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::FamilyName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_FamilyName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::GivenName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_GivenName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::HonorificPrefix() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_HonorificPrefix(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::HonorificSuffix() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_HonorificSuffix(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::AdditionalName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_AdditionalName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Address() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Address(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::OtherAddress() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_OtherAddress(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Email() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Email(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::WorkAddress() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_WorkAddress(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::WorkTelephone() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_WorkTelephone(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::JobTitle() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_JobTitle(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Birthdate() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Birthdate(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Anniversary() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Anniversary(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Telephone() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Telephone(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::MobileTelephone() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_MobileTelephone(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Url() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Url(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Notes() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Notes(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::WorkFax() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_WorkFax(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Children() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Children(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::SignificantOther() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_SignificantOther(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::CompanyName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_CompanyName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::CompanyTelephone() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_CompanyTelephone(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::HomeFax() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_HomeFax(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::AlternateTelephone() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_AlternateTelephone(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Manager() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Manager(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Nickname() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Nickname(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::OfficeLocation() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_OfficeLocation(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::WorkEmail() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_WorkEmail(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::YomiGivenName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_YomiGivenName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::YomiFamilyName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_YomiFamilyName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::YomiCompanyName() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_YomiCompanyName(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::OtherEmail() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_OtherEmail(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::AlternateMobileTelephone() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_AlternateMobileTelephone(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::AlternateWorkTelephone() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_AlternateWorkTelephone(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::Store() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->get_Store(&value));
          return winrt::Windows::Phone::PersonalInformation::ContactStore{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::Id() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->get_Id(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::RemoteId() const
      {
          void* value{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->get_RemoteId(&value));
          return hstring{ value, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::RemoteId(param::hstring const& value) const
      {
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->put_RemoteId(*(void**)(&value)));
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::GetExtendedPropertiesAsync() const
      {
          void* operation{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->GetExtendedPropertiesAsync(&operation));
          return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>{ operation, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::SaveAsync() const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->SaveAsync(&result));
          return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::ReplaceExistingContactAsync(param::hstring const& id) const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->ReplaceExistingContactAsync(*(void**)(&id), &result));
          return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContactFactory<D>::CreateStoredContact(winrt::Windows::Phone::PersonalInformation::ContactStore const& store) const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContactFactory)->CreateStoredContact(*(void**)(&store), &result));
          return winrt::Windows::Phone::PersonalInformation::StoredContact{ result, take_ownership_from_abi };
      }
      template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContactFactory<D>::CreateStoredContactFromInformation(winrt::Windows::Phone::PersonalInformation::ContactStore const& store, winrt::Windows::Phone::PersonalInformation::ContactInformation const& contact) const
      {
          void* result{};
          check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContactFactory)->CreateStoredContactFromInformation(*(void**)(&store), *(void**)(&contact), &result));
          return winrt::Windows::Phone::PersonalInformation::StoredContact{ result, take_ownership_from_abi };
      }
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactAddress> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactAddress>
      {
          int32_t __stdcall get_Country(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Country());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_Country(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().Country(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Locality(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Locality());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_Locality(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().Locality(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Region(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Region());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_Region(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().Region(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_PostalCode(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().PostalCode());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_PostalCode(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().PostalCode(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_StreetAddress(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().StreetAddress());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_StreetAddress(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().StreetAddress(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactChangeRecord> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactChangeRecord>
      {
          int32_t __stdcall get_ChangeType(int32_t* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              *value = detach_from<winrt::Windows::Phone::PersonalInformation::ContactChangeType>(this->shim().ChangeType());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_RevisionNumber(uint64_t* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              *value = detach_from<uint64_t>(this->shim().RevisionNumber());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Id(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Id());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_RemoteId(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().RemoteId());
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactInformation> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactInformation>
      {
          int32_t __stdcall get_DisplayName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().DisplayName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_DisplayName(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().DisplayName(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_FamilyName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().FamilyName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_FamilyName(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().FamilyName(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_GivenName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().GivenName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_GivenName(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().GivenName(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_HonorificPrefix(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().HonorificPrefix());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_HonorificPrefix(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().HonorificPrefix(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_HonorificSuffix(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().HonorificSuffix());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_HonorificSuffix(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().HonorificSuffix(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall GetDisplayPictureAsync(void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>>(this->shim().GetDisplayPictureAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall SetDisplayPictureAsync(void* stream, void** action) noexcept final try
          {
              clear_abi(action);
              typename D::abi_guard guard(this->shim());
              *action = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().SetDisplayPictureAsync(*reinterpret_cast<winrt::Windows::Storage::Streams::IInputStream const*>(&stream)));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_DisplayPicture(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<winrt::Windows::Storage::Streams::IRandomAccessStreamReference>(this->shim().DisplayPicture());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall GetPropertiesAsync(void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>>(this->shim().GetPropertiesAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall ToVcardAsync(void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>>(this->shim().ToVcardAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall ToVcardWithOptionsAsync(int32_t format, void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>>(this->shim().ToVcardAsync(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::VCardFormat const*>(&format)));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactInformation2> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactInformation2>
      {
          int32_t __stdcall get_DisplayPictureDate(int64_t* returnValue) noexcept final try
          {
              zero_abi<winrt::Windows::Foundation::DateTime>(returnValue);
              typename D::abi_guard guard(this->shim());
              *returnValue = detach_from<winrt::Windows::Foundation::DateTime>(this->shim().DisplayPictureDate());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_DisplayPictureDate(int64_t returnValue) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().DisplayPictureDate(*reinterpret_cast<winrt::Windows::Foundation::DateTime const*>(&returnValue));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactInformationStatics> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactInformationStatics>
      {
          int32_t __stdcall ParseVcardAsync(void* vcard, void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactInformation>>(this->shim().ParseVcardAsync(*reinterpret_cast<winrt::Windows::Storage::Streams::IInputStream const*>(&vcard)));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactQueryOptions> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactQueryOptions>
      {
          int32_t __stdcall get_DesiredFields(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<winrt::Windows::Foundation::Collections::IVector<hstring>>(this->shim().DesiredFields());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_OrderBy(int32_t* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              *value = detach_from<winrt::Windows::Phone::PersonalInformation::ContactQueryResultOrdering>(this->shim().OrderBy());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_OrderBy(int32_t value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().OrderBy(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactQueryResultOrdering const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactQueryResult> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactQueryResult>
      {
          int32_t __stdcall GetContactCountAsync(void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<uint32_t>>(this->shim().GetContactCountAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall GetContactsAsync(void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::StoredContact>>>(this->shim().GetContactsAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall GetContactsAsyncInRange(uint32_t startIndex, uint32_t maxNumberOfItems, void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::StoredContact>>>(this->shim().GetContactsAsync(startIndex, maxNumberOfItems));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall GetCurrentQueryOptions(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<winrt::Windows::Phone::PersonalInformation::ContactQueryOptions>(this->shim().GetCurrentQueryOptions());
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactStore> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactStore>
      {
          int32_t __stdcall FindContactByRemoteIdAsync(void* id, void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>>(this->shim().FindContactByRemoteIdAsync(*reinterpret_cast<hstring const*>(&id)));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall FindContactByIdAsync(void* id, void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>>(this->shim().FindContactByIdAsync(*reinterpret_cast<hstring const*>(&id)));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall DeleteContactAsync(void* id, void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().DeleteContactAsync(*reinterpret_cast<hstring const*>(&id)));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall CreateContactQueryDefault(void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Phone::PersonalInformation::ContactQueryResult>(this->shim().CreateContactQuery());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall CreateContactQueryWithOptions(void* options, void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Phone::PersonalInformation::ContactQueryResult>(this->shim().CreateContactQuery(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactQueryOptions const*>(&options)));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall DeleteAsync(void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().DeleteAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_RevisionNumber(uint64_t* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              *value = detach_from<uint64_t>(this->shim().RevisionNumber());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall GetChangesAsync(uint64_t baseRevisionNumber, void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::ContactChangeRecord>>>(this->shim().GetChangesAsync(baseRevisionNumber));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall LoadExtendedPropertiesAsync(void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>>(this->shim().LoadExtendedPropertiesAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall SaveExtendedPropertiesAsync(void* data, void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().SaveExtendedPropertiesAsync(*reinterpret_cast<winrt::Windows::Foundation::Collections::IMapView<hstring, winrt::Windows::Foundation::IInspectable> const*>(&data)));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactStore2> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactStore2>
      {
          int32_t __stdcall CreateMeContactAsync(void* id, void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>>(this->shim().CreateMeContactAsync(*reinterpret_cast<hstring const*>(&id)));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactStoreStatics> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactStoreStatics>
      {
          int32_t __stdcall CreateOrOpenAsync(void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>>(this->shim().CreateOrOpenAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall CreateOrOpenWithOptionsAsync(int32_t access, int32_t sharing, void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>>(this->shim().CreateOrOpenAsync(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactStoreSystemAccessMode const*>(&access), *reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactStoreApplicationAccessMode const*>(&sharing)));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics>
      {
          int32_t __stdcall get_DisplayName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().DisplayName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_FamilyName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().FamilyName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_GivenName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().GivenName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_HonorificPrefix(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().HonorificPrefix());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_HonorificSuffix(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().HonorificSuffix());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_AdditionalName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().AdditionalName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Address(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Address());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_OtherAddress(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().OtherAddress());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Email(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Email());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_WorkAddress(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().WorkAddress());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_WorkTelephone(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().WorkTelephone());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_JobTitle(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().JobTitle());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Birthdate(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Birthdate());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Anniversary(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Anniversary());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Telephone(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Telephone());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_MobileTelephone(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().MobileTelephone());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Url(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Url());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Notes(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Notes());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_WorkFax(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().WorkFax());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Children(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Children());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_SignificantOther(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().SignificantOther());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_CompanyName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().CompanyName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_CompanyTelephone(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().CompanyTelephone());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_HomeFax(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().HomeFax());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_AlternateTelephone(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().AlternateTelephone());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Manager(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Manager());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Nickname(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Nickname());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_OfficeLocation(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().OfficeLocation());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_WorkEmail(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().WorkEmail());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_YomiGivenName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().YomiGivenName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_YomiFamilyName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().YomiFamilyName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_YomiCompanyName(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().YomiCompanyName());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_OtherEmail(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().OtherEmail());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_AlternateMobileTelephone(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().AlternateMobileTelephone());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_AlternateWorkTelephone(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().AlternateWorkTelephone());
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IStoredContact> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IStoredContact>
      {
          int32_t __stdcall get_Store(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<winrt::Windows::Phone::PersonalInformation::ContactStore>(this->shim().Store());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_Id(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().Id());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall get_RemoteId(void** value) noexcept final try
          {
              clear_abi(value);
              typename D::abi_guard guard(this->shim());
              *value = detach_from<hstring>(this->shim().RemoteId());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall put_RemoteId(void* value) noexcept final try
          {
              typename D::abi_guard guard(this->shim());
              this->shim().RemoteId(*reinterpret_cast<hstring const*>(&value));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall GetExtendedPropertiesAsync(void** operation) noexcept final try
          {
              clear_abi(operation);
              typename D::abi_guard guard(this->shim());
              *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>>(this->shim().GetExtendedPropertiesAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall SaveAsync(void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().SaveAsync());
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall ReplaceExistingContactAsync(void* id, void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().ReplaceExistingContactAsync(*reinterpret_cast<hstring const*>(&id)));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  #ifndef WINRT_LEAN_AND_MEAN
      template <typename D>
      struct produce<D, winrt::Windows::Phone::PersonalInformation::IStoredContactFactory> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IStoredContactFactory>
      {
          int32_t __stdcall CreateStoredContact(void* store, void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Phone::PersonalInformation::StoredContact>(this->shim().CreateStoredContact(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactStore const*>(&store)));
              return 0;
          }
          catch (...) { return to_hresult(); }
          int32_t __stdcall CreateStoredContactFromInformation(void* store, void* contact, void** result) noexcept final try
          {
              clear_abi(result);
              typename D::abi_guard guard(this->shim());
              *result = detach_from<winrt::Windows::Phone::PersonalInformation::StoredContact>(this->shim().CreateStoredContactFromInformation(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactStore const*>(&store), *reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactInformation const*>(&contact)));
              return 0;
          }
          catch (...) { return to_hresult(); }
      };
  #endif
  }
  WINRT_EXPORT namespace winrt::Windows::Phone::PersonalInformation
  {
      inline ContactAddress::ContactAddress() :
          ContactAddress(impl::call_factory_cast<ContactAddress(*)(winrt::Windows::Foundation::IActivationFactory const&), ContactAddress>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<ContactAddress>(); }))
      {
      }
      inline ContactInformation::ContactInformation() :
          ContactInformation(impl::call_factory_cast<ContactInformation(*)(winrt::Windows::Foundation::IActivationFactory const&), ContactInformation>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<ContactInformation>(); }))
      {
      }
      inline auto ContactInformation::ParseVcardAsync(winrt::Windows::Storage::Streams::IInputStream const& vcard)
      {
          return impl::call_factory<ContactInformation, IContactInformationStatics>([&](IContactInformationStatics const& f) { return f.ParseVcardAsync(vcard); });
      }
      inline ContactQueryOptions::ContactQueryOptions() :
          ContactQueryOptions(impl::call_factory_cast<ContactQueryOptions(*)(winrt::Windows::Foundation::IActivationFactory const&), ContactQueryOptions>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<ContactQueryOptions>(); }))
      {
      }
      inline auto ContactStore::CreateOrOpenAsync()
      {
          return impl::call_factory_cast<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>(*)(IContactStoreStatics const&), ContactStore, IContactStoreStatics>([](IContactStoreStatics const& f) { return f.CreateOrOpenAsync(); });
      }
      inline auto ContactStore::CreateOrOpenAsync(winrt::Windows::Phone::PersonalInformation::ContactStoreSystemAccessMode const& access, winrt::Windows::Phone::PersonalInformation::ContactStoreApplicationAccessMode const& sharing)
      {
          return impl::call_factory<ContactStore, IContactStoreStatics>([&](IContactStoreStatics const& f) { return f.CreateOrOpenAsync(access, sharing); });
      }
      inline auto KnownContactProperties::DisplayName()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.DisplayName(); });
      }
      inline auto KnownContactProperties::FamilyName()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.FamilyName(); });
      }
      inline auto KnownContactProperties::GivenName()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.GivenName(); });
      }
      inline auto KnownContactProperties::HonorificPrefix()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.HonorificPrefix(); });
      }
      inline auto KnownContactProperties::HonorificSuffix()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.HonorificSuffix(); });
      }
      inline auto KnownContactProperties::AdditionalName()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.AdditionalName(); });
      }
      inline auto KnownContactProperties::Address()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Address(); });
      }
      inline auto KnownContactProperties::OtherAddress()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.OtherAddress(); });
      }
      inline auto KnownContactProperties::Email()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Email(); });
      }
      inline auto KnownContactProperties::WorkAddress()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.WorkAddress(); });
      }
      inline auto KnownContactProperties::WorkTelephone()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.WorkTelephone(); });
      }
      inline auto KnownContactProperties::JobTitle()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.JobTitle(); });
      }
      inline auto KnownContactProperties::Birthdate()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Birthdate(); });
      }
      inline auto KnownContactProperties::Anniversary()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Anniversary(); });
      }
      inline auto KnownContactProperties::Telephone()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Telephone(); });
      }
      inline auto KnownContactProperties::MobileTelephone()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.MobileTelephone(); });
      }
      inline auto KnownContactProperties::Url()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Url(); });
      }
      inline auto KnownContactProperties::Notes()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Notes(); });
      }
      inline auto KnownContactProperties::WorkFax()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.WorkFax(); });
      }
      inline auto KnownContactProperties::Children()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Children(); });
      }
      inline auto KnownContactProperties::SignificantOther()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.SignificantOther(); });
      }
      inline auto KnownContactProperties::CompanyName()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.CompanyName(); });
      }
      inline auto KnownContactProperties::CompanyTelephone()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.CompanyTelephone(); });
      }
      inline auto KnownContactProperties::HomeFax()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.HomeFax(); });
      }
      inline auto KnownContactProperties::AlternateTelephone()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.AlternateTelephone(); });
      }
      inline auto KnownContactProperties::Manager()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Manager(); });
      }
      inline auto KnownContactProperties::Nickname()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Nickname(); });
      }
      inline auto KnownContactProperties::OfficeLocation()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.OfficeLocation(); });
      }
      inline auto KnownContactProperties::WorkEmail()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.WorkEmail(); });
      }
      inline auto KnownContactProperties::YomiGivenName()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.YomiGivenName(); });
      }
      inline auto KnownContactProperties::YomiFamilyName()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.YomiFamilyName(); });
      }
      inline auto KnownContactProperties::YomiCompanyName()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.YomiCompanyName(); });
      }
      inline auto KnownContactProperties::OtherEmail()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.OtherEmail(); });
      }
      inline auto KnownContactProperties::AlternateMobileTelephone()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.AlternateMobileTelephone(); });
      }
      inline auto KnownContactProperties::AlternateWorkTelephone()
      {
          return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.AlternateWorkTelephone(); });
      }
      inline StoredContact::StoredContact(winrt::Windows::Phone::PersonalInformation::ContactStore const& store) :
          StoredContact(impl::call_factory<StoredContact, IStoredContactFactory>([&](IStoredContactFactory const& f) { return f.CreateStoredContact(store); }))
      {
      }
      inline StoredContact::StoredContact(winrt::Windows::Phone::PersonalInformation::ContactStore const& store, winrt::Windows::Phone::PersonalInformation::ContactInformation const& contact) :
          StoredContact(impl::call_factory<StoredContact, IStoredContactFactory>([&](IStoredContactFactory const& f) { return f.CreateStoredContactFromInformation(store, contact); }))
      {
      }
  }
  namespace std
  {
  #ifndef WINRT_LEAN_AND_MEAN
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactAddress> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactChangeRecord> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactInformation> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactInformation2> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactInformationStatics> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactQueryOptions> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactQueryResult> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactStore> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactStore2> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactStoreStatics> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IStoredContact> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::IStoredContactFactory> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactAddress> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactChangeRecord> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactInformation> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactQueryOptions> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactQueryResult> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactStore> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::KnownContactProperties> : winrt::impl::hash_base {};
      template<> struct hash<winrt::Windows::Phone::PersonalInformation::StoredContact> : winrt::impl::hash_base {};
  #endif
  #ifdef __cpp_lib_format
  #endif
  }
  #endif
  