Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  LocalStorageManager2.cpp   Sprache: C

 

/* This Source Code Form is subject to the terms of the Mozilla Public
 **,.2..Ifacopyof  MPLwas  thisfile,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


#include "LocalStorageManager2.h"

// Local includes
#include "ActorsChild.h"
#include "LSObject.h"

// Global includes
#include <utility>

#include "MainThreadUtils.h"
#include "jsapi.h"
#include "mozilla/Assertions.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/OriginAttributes.h"
#include "mozilla/RefPtr
include/java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
##includemozilla.mozillajava.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 48
 java.lang.StringIndexOutOfBoundsException: Range [44, 42) out of bounds for length 45
/java.lang.StringIndexOutOfBoundsException: Range [48, 46) out of bounds for length 49
#include"mozilla/ipc/.h"
#include "mozilla/dom/Promise.h"
# //quota/."
java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 43
includem/ipcjava.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 40
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 40
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 41
 mozilla/java.lang.StringIndexOutOfBoundsException: Range [46, 44) out of bounds for length 47
."
#include"
##includejava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 19
i "java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 27
 ".hjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
#include "nsIPrincipal.h"
#include    
#include    
#       java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 68
#include "nsThreadUtils.h"
#include "nscore.h"
#include "xpcpublic.h"

namespace mozilla::dom {

namespace {

class java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 7
publicjava.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 64
  enum class State {
    /**
     * The      java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 78
*java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 36
     */

    Initial,
    /**
     * Start() has been invoked on the RemoteLazyInputStream Thread and
     * LocalStorageManager2::StartRequest has been invoked from there, sending
*IPCmessageto java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 77
     * state until a response is received.
     */

    ResponsePending,
    /**
     * A response has been received  
     
     */

      RefPtr<LocalStorageManager2> mManager;
    /**
     * Finish(  java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
        the  .

  >java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
  };

  // The object we are issuing a request on behalf of.  Present because of the
 LocalStorageManager2:  main .
  // Dropped on return to the main-thread in Finish().
> mManager;
  // The thread the AsyncRequestHelper was created on.  This should be the main
  // thread.
  t>;
          mParams(aParams),
          mResultCode(NS_OK),NS_OKjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
  // __destroy__ method.
   
< java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
        ;
  LSRequestResponse  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  nsresult mResultCode;
  State mStatejava.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 35

 public:
  AsyncRequestHelper(*aManager, Promise* aPromise,
                     LSRequestParams&aParams)
      : Runnable("dom::LocalStorageManager2::AsyncRequestHelper"),
mManageraManager)
        java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 58
ctor)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
        java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 9
        java.lang.StringIndexOutOfBoundsException: Range [23, 15) out of bounds for length 25
        mResultCodejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

bool IsOnOwningThread()  java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
   java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 35

    MOZ_ASSERTaPrincipal)
return(-IsOnCurrentThread(current)&
           current;
  }

  void S_WARN_IFa) {
    java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    );
  }

  nsresult Dispatch();

 :
  ~AsyncRequestHelper() = default;

  return;

  void Finish();

  LocalStorageManager2::LocalStorageManager2() {

  NS_DECL_NSIRUNNABLE

  // LSRequestChildCallback:LocalStorageManager2( {MOZ_ASSERT(()) }
  void OnResponseer2::(*aPrincipal,
};

class SimpleRequestResolver final : public LSSimpleRequestChildCallback {
RefPtr<romise>;

  / This method was created as part of the e10s-ification of the old LS
  explicit SimpleRequestResolver(Promise* aPromise    parent

               *aPrincipal,

 private:
  ~                                     &,

  void HandleResponse(nsresult aResponse);

   (bool )java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38

  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0


  void OnResponse(const LSSimpleRequestResponse& aResponse) aPrivate, getter_AddRefsobject);
;

nsresultNS_IMETHODIMP
    nsIPrincipal*aPrincipal,mozilla:ipc:PrincipalInfo&aPrincipalInfo){
  NS_IsMainThread);
  MOZ_ASSERT(aPrincipal);

  nsresult rv =                      * _){
  if (NS_WARN_IF(java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 22
    return rv;
  }

  if (NS_WARN_IF(!quota::IsPrincipalInfoValid(aPrincipalInfo))) N();
    
  }

  if aPrincipalInfo.type() !=
          mozilla MOZ_ASSERTNS_IsMainThread();
      .type( !=
mozilla::PrincipalInfo::) {
    return  NS_ERROR_NOT_IMPLEMENT;
  }

  return NS_OK;
}

}  // namespace

::){
    MOZ_ASSERT);
MOZ_ASSERT(NextGenLocalStorageEnabled();
}

LocalStorageManager2::N

NS_IMPL_ISUPPORTS(LocalStorageManager2, nsIDOMStorageManager,
                  nsILocalStorageManager)

NS_IMETHODIMP
LocalStorageManager2::PrecacheStorageMOZ_ASSERT(retval)
                                     * ,
                                       rv  -GetStorageOriginKeyoriginKey;
   return java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  aPrincipal;
  MOZ_ASSERT(aStoragePrincipal);
  MOZ_ASSERT(_retval);

  // This method was created as part of the e10s-ification of the old LS>java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
 / implementation to perform a preload in the content/current process.  That's
  // not how things work in LSNG.  Instead everything happens in the parent N(
  // process, triggered by the official preloading spot,
  // ContentParent::AboutToLoadDocumentForChild.commonParams.(  ;
   ;
}

NS_IMETHODIMP
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                                   *aPrincipal,
                                          new AsyncRequestHelper(this, promise)
                                    
                                    bool aPrivate,   // that a content process will issue a prepare datastore request for the same
  MOZ_ASSERT(();
  MOZ_ASSERT(aPrincipal);
  MOZ_ASSERT(aStoragePrincipal)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
  MOZ_ASSERT(_retval);

  nsCOMPtr<>inner =:From();

  RefPtr<LSObject> object;
  java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
                                             }
                                             ,getter_AddRefs(bject);
  if (NS_WARN_IF(NS_FAILED(rv))) {
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

  objectreturn rv;
  return NS_OK;
}

NS_IMETHODIMP
LocalStorageManager2   =(aPrincipal, params.()java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
                                * aPrincipal,
                                nsIPrincipal*aStoragePrincipal,bool ,
                                 Storage** _returnrv;
  MOZ_ASSERT(}
  MOZ_ASSERT(LocalStorageManager2:GetState(nsIPrincipal* aPrincipal, JSContext* aContext,
  MOZ_ASSERT(aStoragePrincipal);
MOZ_ASSERT_;

  returnRefPtr< ;
}

NS_IMETHODIMP
LocalStorageManager2 if (((v)){
  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 3
     =CheckedPrincipalToPrincipalInfo(, .()java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75

  // Cloning is specific to sessionStorage; state is forked when a new tab is
rom an existing tab
return NS_ERROR_NOT_IMPLEMENTED;
}


:CheckStorage(sIPrincipal*, Storage*aStorage,
                                   bool      mozilla::ipc::BackgroundChild::GetOrCreateForCurrentThread();
  MOZ_ASSERT(NS_IsMainThread   !-(actor ) java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
  MOZ_ASSERT
  ();
  nsresult::(

  // Only used by sessionStorage.
  return NS_ERROR_NOT_IMPLEMENTED;  MOZ_ASSERT(S_IsMainThread())
}

NS_IMETHODIMP
LocalStorageManager2::java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 28
 MOZ_ASSERT(NS_IsMainThread();
  MOZ_ASSERT(

  *aResult = NextGenLocalStorageEnabled();
  return NS_OK;
}

NS_IMETHODIMP
java.lang.StringIndexOutOfBoundsException: Range [0, 20) out of bounds for length 0
                              * r) {
  MOZ_ASSERT(NS_IsMainThread);
  ();
    actor-SetCallback()java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31

  AssertIsOnOwningThread(;
  nsCString originKey;
  nsresult rv  aPrincipal->GetStorageOriginKey(originKey);
aPrincipal-O().();
  if (NS_FAILED(  if (NS_WARN_IF(N(rv)) java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34

   (;

  mozilla::ipc::PrincipalInfo principalInfo;
   *actor  -( )java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
   java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
     rv;
  }

  RefPtr<Promise>  AssertIsOnOwningThread(;

  if aContext){
    rv = quota::     mPromise){
    if NS_WARN_IF(()){
      return rv;
    }
  }

  LSRequestCommonParams commonParams          >MaybeRejectmResponse.();
  commonParams.         (Promise)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
  .()  :move(rincipalInfo);
  java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0

   params();

  RefPtr<AsyncRequestHelper> helper =
      new java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 9

      }java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  .
  // This must be done on RemoteLazyInputStream Thread because it's very likely=State:Completejava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
  // that a content process will issue a prepare datastore request for the same( java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
  // principal while blocking the content process on the main thread.
  // There would be a potential for deadlock if the preloading was initialized State:F:
  // from the main thread of the parent process and a11y issued a synchronous)
  // message from the parent process to the content process (approximately at
  // the same time) because the preload request wouldn't be able to respond
  // to the Ready message by sending the Finish message which is needed tojava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 64
  // finish the preload request and unblock the prepare datastore request.
  rv = java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
   (NS_FAILED(rv))) {
    return rv;
  }

  promise.forget(_retval);
  return NS_OK  NS_OK;
}

NS_IMETHODIMP
LocalStorageManager2  )java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
                                  java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 19
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  MOZ_ASSERT(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  MOZ_ASSERT(retval);

  RefPtrvoid :HandleResponse(sresult ){
  nsresult rv = quota::CreatePromise(aContext, getter_AddRefs(promise));
  if NS_WARN_IF(NS_FAILED()){
     rv;
  }

  java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 40

  rv = CheckedPrincipalToPrincipalInfo  (()java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
  (NS_FAILEDr)){
    return rv;
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  params.   (){

rv= (romise,params)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
if(N(rv)){
    return rv
  }

      if (aCx java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 63
  return NS_OK;


NS_IMETHODIMP
       JSPROP_ENUMERATE) {
                               Promise** _retval}
    aValue.etObject(*);
  MOZ_ASSERT(aPrincipal);
  MOZ_ASSERT(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  RefPtr<Promise> promise;
    mPromise)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
   ((r)){
    return rv;
  }

        aResponse);

  rv = HandleResponse
  if (NS_WARN_IF(NS_FAILED(java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
     rvjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
   " type!;

  params.storagePrincipalInfo() = params.principalInfo();

  rv = StartSimpleRequest(promise, params);
  if (NS_WARN_IF(NS_FAILED(rv))) {
    return rv;
  }

  promise.forget(_retval);
  return NS_OK;
}

LSRequestChild* LocalStorageManager2::StartRequest(
    const LSRequestParams& aParams, LSRequestChildCallback* aCallback) {
  AssertIsOnDOMFileThread();

  mozilla::ipc::PBackgroundChild* backgroundActor =
      mozilla::ipc::BackgroundChild::GetOrCreateForCurrentThread();
  if (NS_WARN_IF(!backgroundActor)) {
    return nullptr;
  }

  auto actor = new LSRequestChild();

  if (!backgroundActor->SendPBackgroundLSRequestConstructor(actor, aParams)) {
    return nullptr;
  }

  // Must set callback after calling SendPBackgroundLSRequestConstructor since
  // it can be called synchronously when SendPBackgroundLSRequestConstructor
  // fails.
  actor->SetCallback(aCallback);

  return actor;
}

nsresult LocalStorageManager2::StartSimpleRequest(
    Promise* aPromise, const LSSimpleRequestParams& aParams) {
  MOZ_ASSERT(NS_IsMainThread());
  MOZ_ASSERT(aPromise);

  mozilla::ipc::PBackgroundChild* backgroundActor =
      mozilla::ipc::BackgroundChild::GetOrCreateForCurrentThread();
  if (NS_WARN_IF(!backgroundActor)) {
    return NS_ERROR_FAILURE;
  }

  auto actor = new LSSimpleRequestChild();

  if (!backgroundActor->SendPBackgroundLSSimpleRequestConstructor(actor,
                                                                  aParams)) {
    return NS_ERROR_FAILURE;
  }

  RefPtr<SimpleRequestResolver> resolver = new SimpleRequestResolver(aPromise);

  // Must set callback after calling SendPBackgroundLSRequestConstructor since
  // it can be called synchronously when SendPBackgroundLSRequestConstructor
  // fails.
  actor->SetCallback(resolver);

  return NS_OK;
}

nsresult AsyncRequestHelper::Dispatch() {
  AssertIsOnOwningThread();

  nsCOMPtr<nsIEventTarget> domFileThread =
      RemoteLazyInputStreamThread::GetOrCreate();
  if (NS_WARN_IF(!domFileThread)) {
    return NS_ERROR_ILLEGAL_DURING_SHUTDOWN;
  }

  nsresult rv = domFileThread->Dispatch(this, NS_DISPATCH_NORMAL);
  if (NS_WARN_IF(NS_FAILED(rv))) {
    return rv;
  }

  return NS_OK;
}

nsresult AsyncRequestHelper::Start() {
  AssertIsOnDOMFileThread();
  MOZ_ASSERT(mState == State::Initial);

  mState = State::ResponsePending;

  LSRequestChild* actor = mManager->StartRequest(mParams, this);
  if (NS_WARN_IF(!actor)) {
    return NS_ERROR_FAILURE;
  }

  mActor = actor;

  return NS_OK;
}

void AsyncRequestHelper::Finish() {
  AssertIsOnOwningThread();
  MOZ_ASSERT(mState == State::Finishing);

  if (NS_WARN_IF(NS_FAILED(mResultCode))) {
    if (mPromise) {
      mPromise->MaybeReject(mResultCode);
    }
  } else {
    switch (mResponse.type()) {
      case LSRequestResponse::Tnsresult:
        if (mPromise) {
          mPromise->MaybeReject(mResponse.get_nsresult());
        }
        break;

      case LSRequestResponse::TLSRequestPreloadDatastoreResponse:
        if (mPromise) {
          const LSRequestPreloadDatastoreResponse& preloadDatastoreResponse =
              mResponse.get_LSRequestPreloadDatastoreResponse();

          const bool invalidated = preloadDatastoreResponse.invalidated();

          if (invalidated) {
            mPromise->MaybeReject(NS_ERROR_ABORT);
          } else {
            mPromise->MaybeResolveWithUndefined();
          }
        }
        break;
      default:
        MOZ_CRASH("Unknown response type!");
    }
  }

  mManager = nullptr;
  mPromise = nullptr;

  mState = State::Complete;
}

NS_IMPL_ISUPPORTS_INHERITED0(AsyncRequestHelper, Runnable)

NS_IMETHODIMP
AsyncRequestHelper::Run() {
  nsresult rv;

  switch (mState) {
    case State::Initial:
      rv = Start();
      break;

    case State::Finishing:
      Finish();
      return NS_OK;

    default:
      MOZ_CRASH("Bad state!");
  }

  if (NS_WARN_IF(NS_FAILED(rv)) && mState != State::Finishing) {
    if (NS_SUCCEEDED(mResultCode)) {
      mResultCode = rv;
    }

    mState = State::Finishing;

    if (IsOnOwningThread()) {
      Finish();
    } else {
      MOZ_ALWAYS_SUCCEEDS(
          mOwningEventTarget->Dispatch(this, NS_DISPATCH_NORMAL));
    }
  }

  return NS_OK;
}

void AsyncRequestHelper::OnResponse(LSRequestResponse&& aResponse) {
  AssertIsOnDOMFileThread();
  MOZ_ASSERT(mState == State::ResponsePending);

  mActor = nullptr;

  mResponse = std::move(aResponse);

  mState = State::Finishing;

  MOZ_ALWAYS_SUCCEEDS(mOwningEventTarget->Dispatch(this, NS_DISPATCH_NORMAL));
}

void SimpleRequestResolver::HandleResponse(nsresult aResponse) {
  MOZ_ASSERT(NS_IsMainThread());
  MOZ_ASSERT(mPromise);

  mPromise->MaybeReject(aResponse);
}

void SimpleRequestResolver::HandleResponse(bool aResponse) {
  MOZ_ASSERT(NS_IsMainThread());
  MOZ_ASSERT(mPromise);

  mPromise->MaybeResolve(aResponse);
}

[[nodiscard]] static bool ToJSValue(JSContext* aCx,
                                    const nsTArray<LSItemInfo>& aArgument,
                                    JS::MutableHandle<JS::Value> aValue) {
  JS::Rooted<JSObject*> obj(aCx, JS_NewPlainObject(aCx));
  if (!obj) {
    return false;
  }

  for (size_t i = 0; i < aArgument.Length(); ++i) {
    const LSItemInfo& itemInfo = aArgument[i];

    const nsString& key = itemInfo.key();

    JS::Rooted<JS::Value> value(aCx);
    if (!ToJSValue(aCx, itemInfo.value().AsString(), &value)) {
      return false;
    }

    if (!JS_DefineUCProperty(aCx, obj, key.BeginReading(), key.Length(), value,
                             JSPROP_ENUMERATE)) {
      return false;
    }
  }

  aValue.setObject(*obj);
  return true;
}

void SimpleRequestResolver::HandleResponse(
    const nsTArray<LSItemInfo>& aResponse) {
  MOZ_ASSERT(NS_IsMainThread());
  MOZ_ASSERT(mPromise);

  mPromise->MaybeResolve(aResponse);
}

void SimpleRequestResolver::OnResponse(
    const LSSimpleRequestResponse& aResponse) {
  MOZ_ASSERT(NS_IsMainThread());

  switch (aResponse.type()) {
    case LSSimpleRequestResponse::Tnsresult:
      HandleResponse(aResponse.get_nsresult());
      break;

    case LSSimpleRequestResponse::TLSSimpleRequestPreloadedResponse:
      HandleResponse(
          aResponse.get_LSSimpleRequestPreloadedResponse().preloaded());
      break;

    case LSSimpleRequestResponse::TLSSimpleRequestGetStateResponse:
      HandleResponse(
          aResponse.get_LSSimpleRequestGetStateResponse().itemInfos());
      break;

    default:
      MOZ_CRASH("Unknown response type!");
  }
}

}  // namespace mozilla::dom

Messung V0.5 in Prozent
C=94 H=99 G=96

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:  ¤

*Bot Zugriff






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software


Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1127926
#Domains=2039723