// Token: 0x06002654 RID: 9812 RVA: 0x0008A9C8 File Offset: 0x00088BC8
        private void WriteManifest(bool isOffline)
        {
            StringBuilder stringBuilder = new StringBuilder(this.ManifestTemplate);

            if (string.IsNullOrWhiteSpace(stringBuilder.ToString()))
            {
                string text = string.Format("User {0} request for {1} manifest fetched null or empty manifest", AppCacheManifestHandler.GetUserContextId(this.Context), this.UserAgent.Layout);
                ExTraceGlobals.AppcacheManifestHandlerTracer.TraceError((long)this.GetHashCode(), text);
                throw new ArgumentNullException(text);
            }
            bool generateBootResourcesAppcache = !isOffline;

            stringBuilder = this.AddTemplatedParameters(stringBuilder, generateBootResourcesAppcache);
            string text2 = stringBuilder.ToString();

            this.Response.Write(text2);
            string[] array = text2.Split(new char[]
            {
                '\r',
                '\n',
                ' ',
                '\t'
            }, StringSplitOptions.RemoveEmptyEntries);
            string        resourceDirectory = this.ResourceDirectory;
            List <byte[]> list = new List <byte[]>();

            foreach (string text3 in array)
            {
                if (text3.StartsWith(resourceDirectory))
                {
                    list.Add(AppCacheManifestHandlerBase.GetHash(text3.Substring(3), this.VersionString));
                }
            }
            IOrderedEnumerable <string> orderedEnumerable = from id in this.GetEnabledFeatures()
                                                            orderby id
                                                            select id;

            foreach (string s in orderedEnumerable)
            {
                list.Add(Encoding.ASCII.GetBytes(s));
            }
            this.Response.Write("# ComputedHash: ");
            this.Response.Write(Convert.ToBase64String(AppCacheManifestHandlerBase.CalculateHashOnHashes(list)));
            this.Response.Write("\r\n");
            this.Response.Write("# Offline: ");
            this.Response.Write(isOffline.ToString().ToLower());
            this.Response.Write("\r\n");
        }
        // Token: 0x06002639 RID: 9785 RVA: 0x00089F64 File Offset: 0x00088164
        void IHttpHandler.ProcessRequest(HttpContext context)
        {
            this.Context   = context;
            this.UserAgent = OwaUserAgentUtilities.CreateUserAgentWithLayoutOverride(context);
            ExTraceGlobals.AppcacheManifestHandlerTracer.TraceDebug <string, LayoutType>((long)this.GetHashCode(), "User {0} requested for {1} manifest ", AppCacheManifestHandler.GetUserContextId(context), this.UserAgent.Layout);
            bool flag = this.IsManifestRequest();

            this.SetResponseHeaders(flag);
            this.AddAppCacheVersionCookie();
            UserAgent userAgent  = OwaUserAgentUtilities.CreateUserAgentWithLayoutOverride(context, null, true);
            UserAgent userAgent2 = OwaUserAgentUtilities.CreateUserAgentWithLayoutOverride(context);

            if ((!this.IsManifestLinkerRequest() && !flag) || (this.ShouldUnInstallAppCache() && flag) || (userAgent2.Layout == LayoutType.TouchNarrow && userAgent.Layout == LayoutType.TouchWide))
            {
                this.RemoveManifest();
                return;
            }
            if (flag && this.IsRealmRewrittenFromPathToQuery(this.Context))
            {
                this.RemoveManifest();
                return;
            }
            try
            {
                if (flag)
                {
                    bool?isRequestForOfflineManifest = this.IsRequestForOfflineManifest;
                    if (isRequestForOfflineManifest == null)
                    {
                        this.Response.StatusCode = 440;
                    }
                    else
                    {
                        this.AddIsClientAppCacheEnabledCookie();
                        if (isRequestForOfflineManifest.Value)
                        {
                            this.WriteManifest(true);
                        }
                        else
                        {
                            this.WriteManifest(false);
                        }
                    }
                }
                else
                {
                    this.WriteManifestLinker();
                }
            }
            catch (IOException)
            {
                this.Response.StatusCode = 500;
            }
        }