Livable Community

Percent of Middlefield Road Redesign Project Completed On Time and Within Budget

This goal is measured by tracking progress of milestones completed for the Middlefield Road Redesign Project.Explore the data
Percent Complete
Current
0Percent Complete
Dec 2019 Target
Goal Period ended December 2019

            North Fair Oaks - Middlefield Road Redesign Project

            This dataset is private.

            This map shows the outline of the public right of way along Middlefield Road where utilities will be undergrounded and where the sidewalks, parking, and traffic lanes will be redesigned.

        Performance Measurement Milestones

        0-25% Begin outreach and engagement efforts to gather community input on the Middlefield Road Redesign.

        26-50% Continue outreach efforts to finalize a design for Middlefield Road.

        51-75% Begin construction on Middlefield Road to underground wires.

        76-100% Continue construction and begin repaving the streetscape.

        Quarterly Updates as of November 13, 2015

        Middlefield Road Redesign

        The County contracted AECOM to develop a detailed design for the Middlefield Road Streetscape Redesign in North Fair Oaks. A number of outreach and engagement efforts have been organized to gain participation from residents, local business owners, and other community stakeholders. The timeline below shows the public input opportunities throughout the detailed roadway design process:

            A steering committee consisting of about 30 members worked with the design team to develop the community workshop agendas.

            Over 75 people attended the first community design workshop at Garfield Elementary School. Attendees provided input on various aspects of the streetscape design, including sidewalk amenities and lane configurations.

        Public Art Workgroup

        The Public Art Workgroup meets monthly to plan public art projects in North Fair Oaks, and provides recommendations to the North Fair Oaks Community Council. In recent months, the public art workgroup worked closely with the North Fair Oaks Community Council, the County of San Mateo, and community members to bring a number of public art projects to life in the photos below. Pictured below are four entrance sign sculptures, three utility box murals, and photos from the first North Fair Oaks Art Walk event.

        North Fair Oaks Entrance Sign Sculptures

        Utility Box Murals

        Public Art Walk

        Zoning Workgroup

        The Zoning Workgroup, made up of community residents, business owners, and other stakeholders, formed to make changes to the current zoning regulations based on the vision of the North Fair Oaks Community Plan. Two community meetings were held to gather input on the first phase of zoning changes, which focused on neighborhood mixed use zoning along Middlefield Road between First Avenue and Eighth Avenue. Review of zoning changes in phase 2A began in October 2015. The workgroup started discussing the second phase of zoning changes along El Camino Real and Fifth Avenue in North Fair Oaks.

        Other Updates

        • Dine & Dialogue Series: Over summer of 2015, the North Fair Oaks Forward team organized three dialogue events where community members came together to enjoy a casual dinner, learn about the featured topic, and discuss with each other their hopes and ideas for the future of North Fair Oaks.
        • Park(ing) Day: On September 18, 2015, the North Fair Oaks community participated in the international event known as Park(ing) Day, where parking spaces are temporarily transformed into mini parks for the day.
        • Neighborhood Response Team: The County organized a multi-departmental effort to coordinate and address a variety of code compliance issues in North Fair Oaks.

        Quarterly Update as of April 24, 2015

        Middlefield Road Redesign

        On October 21, 2014, the Board of Supervisors considered the recommendation from the North Fair Oaks Council regarding the Middlefield Road Redesign. The recommendation was unanimously approved by the Board and staff was directed to proceed with development of the Request for Proposals for the design and traffic analysis for the project.

        An interactive community meeting was held on January 21, 2015 to share information about the next steps for Middlefield Road (see image below) and to gather input around a variety of other areas, including topics for community dialogue sessions, zoning, and public art entrance signs. The San Mateo County Health System and the Redwood City Library attended and provided information about their services and upcoming events. Additionally, over ten NFO Forward Youth Ambassadors volunteered to assist at each interactive station.

        The Request for Proposals for Design and Traffic Analysis closed in April 2015, and applicants were reviewed by a selection committee made up of the Department of Public Works along with two members of the North Fair Oaks Community Council. The contract for design and traffic analysis is expected to be presented to the Board of Supervisors for consideration on May 19, 2015. Once the contract is awarded, it is estimated that the design and traffic analysis will be completed between 18-24 months.

        Local Business Sustainability Plan

        In response to the North Fair Oaks Community Council’s request for a local business sustainability plan, over 85 local business owners along Middlefield Road were interviewed by North Fair Oaks Forward staff. Additionally, a property owner survey will be mailed in April 2015 to gather additional input. Information collected in the interviews and surveys along with input from a business advisory committee will directly inform the Local Business Sustainability Plan that County staff will develop. Results from the survey and interviews, along with next steps will be shared in June 2015 with the North Fair Oaks Community Council.

        Public Art Workgroup

        The Public Art Workgroup, facilitated by North Fair Oaks Forward staff, continues to meet monthly providing guidance around public art in the North Fair Oaks Community to the Council. Based on community input, the workgroup selected the silhouette entrance sign concept at their meeting in October 2014 and gathered additional input on the specific design for each location at the community meeting in January 2015. After reviewing the input, the workgroup prepared a recommendation for consideration by the North Fair Oaks Community Council. The final entrance sign designs that were approved by the Council are pictured below and are scheduled for installation by summer 2015. Additionally, the Public Art Workgroup has released a Call for Artists to paint three County owned utility boxes in North Fair Oaks. Click here to read more about the Call for Artists on our website. Applications are due by May 15, 2015. The project is scheduled to be completed by summer 2015. To learn more, check out our next meeting here.

        Mini-Park Subcommittee

        With the growing need for smaller parks in unincorporated areas of San Mateo County, the Mini-Park Subcommittee of the San Mateo County Parks Commission was formed to develop a policy for the County around mini-parks. Facilitated by North Fair Oaks Forward staff and the Parks Department, the Mini-Park Subcommittee met monthly through March 2015. The proposed Mini-Park Policy was presented to the Parks Commission for consideration at its regular meeting in April. The Mini-Park Policy was approved by the Commission and is scheduled for consideration by the Board of Supervisors in May 2015. All of the members of the subcommittee received a Certificate of Appreciation from the Parks Department for their participation (see photo below).

        Zoning/Parking Workgroup

        The Zoning/Parking Workgroup resumed monthly meetings in February 2015 to continue reviewing Phase One of the zoning changes proposed by the North Fair Oaks Community Plan. Facilitated by North Fair Oaks Forward staff and the Planning and Building Department, the Zoning/Parking Workgroup is currently reviewing and making changes to the neighborhood mixed use zoning along Middlefield Road between First Avenue and Eighth Avenue. For more information, click here to visit the North Fair Oaks Forward website.

        Other Updates

        NFO Forward continues to attend a variety of community events to spread the word about NFO Community Plan related projects happening in North Fair Oaks, including the first anniversary of the Fair Oaks Health Center, the Día del Nino Celebration at Fair Oaks Elementary School, the Friendship Park Anniversary, and the Kermes Festival.

        Quarterly Update as of September 30, 2014

        Middlefield Road Redesign

        On September 25, 2014, a major milestone in the Middlefield Road project was accomplished. The North Fair Oaks Community Council (NFOCC) voted unanimously to approve the recommendation for the road redesign and requested additional information. Three meetings were held this quarter in leading up to the decision. The Outreach Team distributed 3,500 door hangers covering all of North Fair Oaks inviting the community to the a meeting co-sponsored by the NFOCC and North Fair Oaks Forward on July 24, 2014.

        At that meeting, the Department of Public Works presented a traffic analysis for the road configurations being considered. About 85 people attended and participated in small group discussions where they shared their thoughts regarding the roadway configurations. In preparation for a NFOCC study session on the road design on August 21, 2014 and then their meeting to consider a recommended design on September 25, 2014, staff compiled a comprehensive Middlefield Road Background and Additional Information packet. The packet included the notes from the small group discussions on from the July meeting, relevant information from the North Fair Oaks Community Plan, the traffic analysis, and a summary of all the input received from the community. The NFOCC also toured downtown Redwood City to see various sidewalk configurations, bike lanes options and street amenities. All the background information is posted on the NFOForward.org website.

        The recommendation approved by the NFOCC calls for the following street design elements:

        • Three traffic lanes
        • Bike lanes
        • Sidewalks wide enough to accommodate street amenities including benches and other seating, greenery, street and pedestrian lighting, t rash and recycling receptacles, street art and public spaces
        • Parallel parking

        The NFOCC also requested that concurrently with the development of the draft design three additional reports be prepared:

        • A signalization and traffic management plan for the project area
        • Parking solutions
        • A local business sustainability plan

        An interactive community meeting was held on September 23 to provide the community with an update on the recommendation made by the NFOCC. The next step is to present the design recommendation for the conceptual design of Middlefield Road to the Board of Supervisors on October 21, 2014 for final approval.

        Public Art Workgroup

        The Board of Supervisors approved the Public Art Workgroup’s request for funding in September, and the workgroup will begin implementing the public art projects over the next few months. Additionally, the workgroup presented various concept ideas for North Fair Oaks entrance signs at the community meeting in September. The workgroup will meet in October to review the community input and identify an entrance sign concept to implement.

        Parks Workgroup/Mini-Park Subcommittee

        The Parks Workgroup came to a close in April 2014 and has evolved into a subcommittee of the Parks Commission that meets monthly. The Mini-Park Subcommittee will work with the Parks Department to create a policy around mini parks for the Parks Department’s Strategic Plan. The subcommittee hopes to have a policy to present to the Parks Commission by early 2015.

        Other Updates

        On September 19, North Fair Oaks Forward partnered with local businesses to celebrate Park(ing) Day, an annual worldwide event where parking spaces are transformed into temporary public parks. Click here to see a time lapse video of the event.

        Quarterly Update as of June 30, 2014

        Middlefield Road Redesign

        About 2,000 North Fair Oaks residents, business owners and neighbors have shared their opinions about the future design of Middlefield Road. Over 1,350 surveys, available in English and Spanish both on-line and hard copy, have been submitted. And over 650 people have attended a total of 12 community group presentations and two community-wide meetings. At the two community wide meetings, held April 26th and 29th, attendees learned about all the North Fair Oaks Forward initiatives and shared their opinions on parking and zoning alternatives, public art options, ways to improve community wellness and street design options. Staff from the Department of Public Works, Planning and Building and artists and other members of the joint Arts Commission/North Fair Oaks Community Council public art workgroup along with Health Department and clinic staff were all available at the meetings to answer resident questions and document their comments. North Fair Oaks Youth Ambassadors assisted with registration, survey collection and provided other support at the community meetings as well, North Fair Oaks Forward staff are now compiling and analyzing the hundreds of comments received on the surveys and at the meetings. A summary of the community input will be presented to the North Fair Oaks Community Council at their May meeting along with a time line for next steps in this process.

        Public Art Workgroup

        Using community input from the public art station at the community meetings in April, the Public Art Workgroup identified three projects and has submitted a request for funding to the Board of Supervisors. The art projects include a local artist mural project to decrease graffiti tagging, a pilot living wall project, and a mural or mosaic at the Fair Oaks Health Center parking lot.

        the workgroups listed in the prior update continue to meet and their work is being incorporated into the Middlefield Road project and other work being done by the Planning and Building Department.

        Map of Community Meeting Attendees and Survey Participants

        Note: This map only represents about 10% of participants. Not all who participated provided their address or cross street.

        Summary of Community Input and Project Timeline

        Quarterly Update as of March 31, 2014

        Two bilingual employees were hired to join the North Fair Oaks Outreach Team in implementing the North Fair Oaks Community Plan. Along with the help of the new outreach team members, the North Fair Oaks community website, www.nfoforward.org, was established in English and Spanish and provides information about news, community events, North Fair Oaks Community Council, and other projects happening in North Fair Oaks.

        Middlefield Road Redesign Update

        The Outreach Team developed a survey regarding the Middlefield Road Redesign Project. Anyone who works, lives or frequents North Fair Oaks is encouraged to participate either online or by picking up a copy at the Fair Oaks Community Center. The Outreach Team plans to visit organizations and businesses throughout North Fair Oaks to distribute surveys to the public.

        Zoning Workgroup Update

        The Zoning Workgroup, made up of county employees, community residents and other stakeholders, formed to make changes to the current zoning regulations based on the vision of the North Fair Oaks Community Plan. The Zoning Workgroup completed a draft of the first phase of zoning amendments focused primarily on the Neighborhood Mixed-Use zoning areas of Middlefield Road.

        Parking Workgroup

        The Parking Workgroup, made up of county employees, North Fair Oaks Community Council members, residents and other stakeholders, completed a review of the Parking Study and the recommendations made by Nelson/Nygaard Consultants. After March, the Parking Workgroup will merge with the Zoning Workgroup.

        Parks Workgroup

        The Parks Workgroup, facilitated by Trust for Public Lands, is made up of county employees, community residents, and other stakeholders. The workgroup is charged with developing an action plan for implementation of the priority goals and policies around Parks and Open Space identified in the North Fair Oaks Community Plan. The Workgroup hosted a public meeting on January 28, 2014 where valuable feedback was collected from the community regarding parks and open space in North Fair Oaks. Playgrounds, community gardens, plazas as well as fitness zones were identified as opportunities during this meeting. Additionally, a parks survey was conducted with the North Fair Oaks Community and received a total of about 500 responses.

        Public Art Workgroup

        The North Fair Oaks Public Art Workgroup held their first monthly meeting on March 10th where county employees, community members, council members, other stakeholders brainstormed ideas to incorporate public art on Middlefield Road, and throughout North Fair Oaks. The workgroup will be hosting a station at the community meetings in April to gather more input from the community.

        Quarterly Update as of December 31, 2013

        Middlefield Road Redesign
        The Middlefield Road Redesign Project is a key component of the North Fair Oaks Community Plan. Over the past year, two community workgroups, one focused on zoning and the other on parking, have been developing specific recommendations for the design and development of Middlefield Road. Starting in February, the workgroup recommendations will be presented to the entire North Fair Oaks community through printed and on-line materials and numerous small group meetings. This outreach effort will culminate in a community-wide meeting in April 2014 to consider a road layout, sidewalk design, public art options and other components of the Middlefield Road Redesign. A second community meeting, presenting the final Middlefield Road conceptual design will be held in September of 2014.

        Community Outreach
        Resident engagement is the first step in the implementation of the North Fair Oaks Community Plan. Outreach work to date has included developing a strategic outreach plan that includes a community partner and preferred media matrix and an overall structure for outreach in 2014, developing the North Fair Oaks Forward website, publishing quarterly NFO Forward newsletters in print and on-line, convening quarterly community update meetings and providing support to the four community workgroups – parks, zoning, parking and community outreach. Intensive outreach work to share the workgroup recommendations with the entire community is beginning in mid-January for the Parks/Greenspace and Middlefield Road redesign projects.

        Entry Signs
        At their January 27, 2014 meeting, the North Fair Oaks Community Council will develop a community process for selecting a welcome sign design and confirming specific locations for the signs. The time line for that process will determine to when the signs will be installed.

        Illegal Dumping – Signs
        County staff and the North Fair Oaks Community Council are working on a comprehensive strategy to reduce illegal dumping in North Fair Oaks. County staff are developing an easy reporting process for the community and an internal tracking system. Together, these two projects will reduce response times to reports of illegal dumping. A Community Council workgroup is developing a community outreach and education and program to bring attention to the problem. Council members and County staff are working together to determine the best language and most appropriate locations for the “No Dumping” signs funded by Measure A. The San Francisco Public Utilities Commission is also working with the Council and the County and will recommend locations for signs along the Hetch Hetchy right of way.

        Bike Share Station
        The sites for the additional Bay Area Bike Share stations in Redwood City have been selected yet. If the Fair Oaks Community Center is selected as a site, then the kiosk pad will be installed to meet the time line provided by Alta, the bike share vendor.

      Data Governance

      describes the quality of the data itself. Governance issues generally indicate that the data source is considered incomplete or unreliable.

      Model Health

      describes the quality of the predictive model. If the model health is poor, the trend prediction should not be trusted.

      eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJuYW1lIjoiTWVhc3VyZSBBIC0gRE9OJ1QgVVNFIiwibWV0YWRhdGEiOiJ7XCJkZXNjcmlwdGlvblwiOlwiU01DIFBlcmZvcm1hbmNlIFdlbGNvbWUgdG8gdGhlIFNhbiBNYXRlbyBDb3VudHkgKFNNQykgUGVyZm9ybWFuY2UgZGFzaGJvYXJkcyBzaXRlISBUaGUgcHVycG9zZSBvZiB0aGlzIHNpdGUgaXMgdG8gc2hvdyBob3cgQ291bnR5IHByb2dyYW1zIGFuZCBzZXJ2aWNlcyBjb250cmlidXRlIHRvIHRoZSBnb2FscyBhbmQgcHJpb3JpdGllcyBvZiBTaGFyZWQgVmlzaW9uIDIwMjUuIE91ciBzaGFyZWQgdmlzaW9uIGlzIGZvciBhIGhlYWx0aHkgYW5kIHNhZmUsIHByb3NwZXJvdXMsIGxpdmFibGUsIGVudmlyb25tZW50YWxseSBjb25zY2lvdXMgYW5kIGNvbGxhYm9yYXRpdmUgY29tbXVuaXR5LiBCdWlsZGluZyB0aGUgZGFzaGJvYXJkcyBpcyBhIHRvcCBwcmlvcml0eSBpbiAyMDE0IGFzIHBhcnQgb2YgdGhlIENvdW50eSdzIHR3by15ZWFyIGJ1ZGdldCBhbmQgcGVyZm9ybWFuY2UgY3ljbGUuIFRoZXkgd2lsbCBiZSBpbiBhIGNvbnN0YW50IHN0YXRlIG9mIFxcXCJ3b3JrIGluIHByb2dyZXNzXFxcIiBhcyB3ZSByZWNlaXZlIGZlZWRiYWNrIGFuZCBtYWtlIGltcHJvdmVtZW50cyBkdXJpbmcgdGhlIHllYXIuIE1ham9yIGRhc2hib2FyZHMgd2lsbCBpbmNsdWRlIFNoYXJlZCBWaXNpb24gMjAyNSBjb21tdW5pdHkgaW1wYWN0LCBNZWFzdXJlIEEgZnVuZGVkIGluaXRpYXRpdmVzLCBhbmQgZGVwYXJ0bWVudC9wcm9ncmFtIHBlcmZvcm1hbmNlLlxcblxcbk1lYXN1cmUgQSBEYXNoYm9hcmRzIFRoZSBmaXJzdCBzZXQgb2YgU01DIFBlcmZvcm1hbmNlIGRhc2hib2FyZHMgaGF2ZSBiZWVuIGJ1aWx0IHRvIHRyYWNrIHRoZSBnb2FscyBhbmQgc3BlbmRpbmcgZm9yIE1lYXN1cmUgQSwgdGhlIHRlbi15ZWFyIGhhbGYtY2VudCBzYWxlcyB0YXggYXBwcm92ZWQgYnkgU2FuIE1hdGVvIENvdW50eSB2b3RlcnMgaW4gTm92ZW1iZXIgMjAxMi4gVGhlc2UgZGFzaGJvYXJkcyB3aWxsIGNvbnRpbnVlIHRvIGJlIHVwZGF0ZWQgYXMgdGhlIENvdW50eSBhbmQgaXRzIGNvbW11bml0eSBwYXJ0bmVycyB3b3JrIHRvZ2V0aGVyIHRvd2FyZCBhY2hpZXZpbmcgdGhlIGdvYWxzIG9mIGVhY2ggTWVhc3VyZSBBIGluaXRpYXRpdmUuIFNNQyBQZXJmb3JtYW5jZSB3aWxsIGV2b2x2ZSB0byBpbmNsdWRlIENvbW11bml0eSBJbXBhY3QgR29hbHMgYW5kIGtleSBpbmRpY2F0b3JzIGZvciBTaGFyZWQgVmlzaW9uIDIwMjUsIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgZ29hbHMgZm9yIGFsbCBDb3VudHkgcHJvZ3JhbXMgYW5kIHNlcnZpY2VzLlxcblxcbkhvdyBJdCBXb3JrcyBUaGUgTWVhc3VyZSBBIGRhc2hib2FyZCBiZWxvdyBmZWF0dXJlcyBhIHNlcmllcyBvZiBpbnRlcmFjdGl2ZSB0aWxlcywgZWFjaCBjb250YWluaW5nIHRoZSBnb2FscyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBNZWFzdXJlIEEgaW5pdGlhdGl2ZS4gQnkgY2xpY2tpbmcgb24gdGhlIHRpdGxlLCB1c2VycyBjYW4gZXhwbG9yZSBwZXJmb3JtYW5jZSBtZWFzdXJlcywgcmV2aWV3IHJhdyBkYXRhLCByZWFkIHRoZSBhY3R1YWwgcHJvcG9zYWwgYW5kLCBpbiBzb21lIGNhc2VzLCBsb29rIGF0IGNoYXJ0cywgZ3JhcGhzLCBhbmQgbWFwcyBjcmVhdGVkIHdpdGggdGhlIGRhdGEuXFxuXFxuTGV0IFVzIEtub3cgV2hhdCBZb3UgVGhpbmsgV2Ugd2VsY29tZSB5b3VyIGZlZWRiYWNrIG9uIHRoZSBNZWFzdXJlIEEgZGFzaGJvYXJkcyEgW2h0dHA6Ly93d3cuc21jc3BlYWtvdXQuY29tL2NhdGVnb3J5L01lYXN1cmUtQV1bMF0gb3Igc2VuZCB1cyBhbiBlLW1haWwgYXQgX01lYXN1cmVBQHNtY2dvdi5vcmcuX1xcblxcbltodHRwOi8vc2FubWF0ZW8uc2lyZXRlY2hub2xvZ2llcy5jb20vc2lyZXB1Yi9jYWNoZS8yL25namxuNHNva3dwamRibzV5cW52enB2by83ODg3OTExMTkyMDE0MTE1NDM1OTkxLlBERl1bMV1cXG5cXG5bMF06IGh0dHA6Ly93d3cuc21jc3BlYWtvdXQuY29tL2NhdGVnb3J5L01lYXN1cmUtQVxcblsxXTogaHR0cDovL3Nhbm1hdGVvLnNpcmV0ZWNobm9sb2dpZXMuY29tL3NpcmVwdWIvY2FjaGUvMi9uZ2psbjRzb2t3cGpkYm81eXFudnpwdm8vNzg4NzkxMTE5MjAxNDExNTQzNTk5MS5QREZcIn0iLCJjYXRlZ29yaWVzIjpbIjR0cnMtc3B6ZCIsImI5czctcnN5cSIsInhnazUtbmRjNyIsImpjOXAtM3hqNyIsInFnZmgtZWV2dyIsIjh0cWEtbW43MyJdLCJpc19wdWJsaWMiOnRydWUsInZlcnNpb24iOiIyMDE3LTAxLTI1VDIzOjQxOjE3LjcyNloiLCJpZCI6InF3NmMtNGM0eCJ9fQ==
      eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJuYW1lIjoiTGl2YWJsZSBDb21tdW5pdHkiLCJjb2xvciI6IiM2MTM1MTUiLCJnb2FscyI6WyJ0NWRxLWZ2NHciLCI2bjI1LXd6NzkiLCI5N3ZiLWVuc2giLCJjZTZjLWlzZHgiXSwidmVyc2lvbiI6IjIwMTQtMDItMjNUMDE6Mjk6NDAuMTM5WiIsImlkIjoiamM5cC0zeGo3In19
      eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJpZCI6IjZuMjUtd3o3OSIsIm5hbWUiOiJOb3J0aCBGYWlyIE9ha3MgQ29tbXVuaXR5IFBsYW4iLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyBOb3J0aCBGYWlyIE9ha3MgLSBNaWRkbGVmaWVsZCBSb2FkIFJlZGVzaWduIFByb2plY3RcXG5cXG5cIn0se1widHlwZVwiOlwidml6XCIsXCJkYXRhc2V0XCI6XCIzNTNiLXN6eG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhpcyBtYXAgc2hvd3MgdGhlIG91dGxpbmUgb2YgdGhlIHB1YmxpYyByaWdodCBvZiB3YXkgYWxvbmcgTWlkZGxlZmllbGQgUm9hZCB3aGVyZSB1dGlsaXRpZXMgd2lsbCBiZSB1bmRlcmdyb3VuZGVkIGFuZCB3aGVyZSB0aGUgc2lkZXdhbGtzLCBwYXJraW5nLCBhbmQgdHJhZmZpYyBsYW5lcyB3aWxsIGJlIHJlZGVzaWduZWQuXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyAgIFxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy84MTI1RTFFOC05N0JBLTQwQ0ItQUNEMi0zRkNGMUFCNDY5NURcIn0se1widHlwZVwiOlwidGV4dFwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIjIEJvYXJkIFJlcG9ydFxcblxcbltodHRwczovL3BlcmZvcm1hbmNlLnNtY2dvdi5vcmcvZGF0YXNldC9NZWFzdXJlLUEtTkZPLUdlbmVyYWwtUGxhbi03LTktMjAxMy9manhiLXF4eHc/Zmlyc3RSdW49dHJ1ZV1bMF1cXG5cXG5bMF06IGh0dHBzOi8vcGVyZm9ybWFuY2Uuc21jZ292Lm9yZy9kYXRhc2V0L01lYXN1cmUtQS1ORk8tR2VuZXJhbC1QbGFuLTctOS0yMDEzL2ZqeGItcXh4dz9maXJzdFJ1bj10cnVlXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgUGVyZm9ybWFuY2UgTWVhc3VyZW1lbnQgTWlsZXN0b25lc1xcblxcbjAtMjUlIEJlZ2luIG91dHJlYWNoIGFuZCBlbmdhZ2VtZW50IGVmZm9ydHMgdG8gZ2F0aGVyIGNvbW11bml0eSBpbnB1dCBvbiB0aGUgTWlkZGxlZmllbGQgUm9hZCBSZWRlc2lnbi5cXG5cXG4yNi01MCUgQ29udGludWUgb3V0cmVhY2ggZWZmb3J0cyB0byBmaW5hbGl6ZSBhIGRlc2lnbiBmb3IgTWlkZGxlZmllbGQgUm9hZC5cXG5cXG41MS03NSUgQmVnaW4gY29uc3RydWN0aW9uIG9uIE1pZGRsZWZpZWxkIFJvYWQgdG8gdW5kZXJncm91bmQgd2lyZXMuXFxuXFxuNzYtMTAwJSBDb250aW51ZSBjb25zdHJ1Y3Rpb24gYW5kIGJlZ2luIHJlcGF2aW5nIHRoZSBzdHJlZXRzY2FwZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyBRdWFydGVybHkgVXBkYXRlcyBhcyBvZiBOb3ZlbWJlciAxMywgMjAxNVxcblxcbl9NaWRkbGVmaWVsZCBSb2FkIFJlZGVzaWduX1xcblxcblRoZSBDb3VudHkgY29udHJhY3RlZCBBRUNPTSB0byBkZXZlbG9wIGEgZGV0YWlsZWQgZGVzaWduIGZvciB0aGUgTWlkZGxlZmllbGQgUm9hZCBTdHJlZXRzY2FwZSBSZWRlc2lnbiBpbiBOb3J0aCBGYWlyIE9ha3MuIEEgbnVtYmVyIG9mIG91dHJlYWNoIGFuZCBlbmdhZ2VtZW50IGVmZm9ydHMgaGF2ZSBiZWVuIG9yZ2FuaXplZCB0byBnYWluIHBhcnRpY2lwYXRpb24gZnJvbSByZXNpZGVudHMsIGxvY2FsIGJ1c2luZXNzIG93bmVycywgYW5kIG90aGVyIGNvbW11bml0eSBzdGFrZWhvbGRlcnMuIFRoZSB0aW1lbGluZSBiZWxvdyBzaG93cyB0aGUgcHVibGljIGlucHV0IG9wcG9ydHVuaXRpZXMgdGhyb3VnaG91dCB0aGUgZGV0YWlsZWQgcm9hZHdheSBkZXNpZ24gcHJvY2VzczpcXG5cXG5cIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CRkUyRTZDQy1CQkYzLTQwQzktOTIxOC0wNUMxMzMxOTRDNkFcIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy82QTBGNDA4RC0yM0VFLTQyNzktQUQyOS0yNjFDRkVFQTlFMkNcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiX0Egc3RlZXJpbmcgY29tbWl0dGVlIGNvbnNpc3Rpbmcgb2YgYWJvdXQgMzAgbWVtYmVycyB3b3JrZWQgd2l0aCB0aGUgZGVzaWduIHRlYW0gdG8gZGV2ZWxvcCB0aGUgY29tbXVuaXR5IHdvcmtzaG9wIGFnZW5kYXMuX1xcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy84NzU2OUU4RC1GNzk5LTQzMkYtOURCNS04OTZCRURCQjI2NTBcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiX092ZXIgNzUgcGVvcGxlIGF0dGVuZGVkIHRoZSBmaXJzdCBjb21tdW5pdHkgZGVzaWduIHdvcmtzaG9wIGF0IEdhcmZpZWxkIEVsZW1lbnRhcnkgU2Nob29sLiBBdHRlbmRlZXMgcHJvdmlkZWQgaW5wdXQgb24gdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBzdHJlZXRzY2FwZSBkZXNpZ24sIGluY2x1ZGluZyBzaWRld2FsayBhbWVuaXRpZXMgYW5kIGxhbmUgY29uZmlndXJhdGlvbnMuX1xcblxcblwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJfUHVibGljIEFydCBXb3JrZ3JvdXBfXFxuXFxuVGhlIFB1YmxpYyBBcnQgV29ya2dyb3VwIG1lZXRzIG1vbnRobHkgdG8gcGxhbiBwdWJsaWMgYXJ0IHByb2plY3RzIGluIE5vcnRoIEZhaXIgT2FrcywgYW5kIHByb3ZpZGVzIHJlY29tbWVuZGF0aW9ucyB0byB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsLiBJbiByZWNlbnQgbW9udGhzLCB0aGUgcHVibGljIGFydCB3b3JrZ3JvdXAgd29ya2VkIGNsb3NlbHkgd2l0aCB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsLCB0aGUgQ291bnR5IG9mIFNhbiBNYXRlbywgYW5kIGNvbW11bml0eSBtZW1iZXJzIHRvIGJyaW5nIGEgbnVtYmVyIG9mIHB1YmxpYyBhcnQgcHJvamVjdHMgdG8gbGlmZSBpbiB0aGUgcGhvdG9zIGJlbG93LiBQaWN0dXJlZCBiZWxvdyBhcmUgZm91ciBlbnRyYW5jZSBzaWduIHNjdWxwdHVyZXMsIHRocmVlIHV0aWxpdHkgYm94IG11cmFscywgYW5kIHBob3RvcyBmcm9tIHRoZSBmaXJzdCBOb3J0aCBGYWlyIE9ha3MgQXJ0IFdhbGsgZXZlbnQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIk5vcnRoIEZhaXIgT2FrcyBFbnRyYW5jZSBTaWduIFNjdWxwdHVyZXNcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvOTAyQjI5NUMtQ0Y3Qy00ODY1LUIyQjAtOEI2QUI3RjFGNkVDXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlV0aWxpdHkgQm94IE11cmFsc1wifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy83NjVFRUIxRS1FMjk0LTQxNTEtOUUwMi05NTkxMzI3RTFGMDRcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiUHVibGljIEFydCBXYWxrXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzY5ODY2QTdDLUIzNjUtNDdFOS04QzEzLTE0MTc5MkFFQ0Y3Q1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJfWm9uaW5nIFdvcmtncm91cF9cXG5cXG5UaGUgWm9uaW5nIFdvcmtncm91cCwgbWFkZSB1cCBvZiBjb21tdW5pdHkgcmVzaWRlbnRzLCBidXNpbmVzcyBvd25lcnMsIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMsIGZvcm1lZCB0byBtYWtlIGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgem9uaW5nIHJlZ3VsYXRpb25zIGJhc2VkIG9uIHRoZSB2aXNpb24gb2YgdGhlIE5vcnRoIEZhaXIgT2FrcyBDb21tdW5pdHkgUGxhbi4gVHdvIGNvbW11bml0eSBtZWV0aW5ncyB3ZXJlIGhlbGQgdG8gZ2F0aGVyIGlucHV0IG9uIHRoZSBmaXJzdCBwaGFzZSBvZiB6b25pbmcgY2hhbmdlcywgd2hpY2ggZm9jdXNlZCBvbiBuZWlnaGJvcmhvb2QgbWl4ZWQgdXNlIHpvbmluZyBhbG9uZyBNaWRkbGVmaWVsZCBSb2FkIGJldHdlZW4gRmlyc3QgQXZlbnVlIGFuZCBFaWdodGggQXZlbnVlLiBSZXZpZXcgb2Ygem9uaW5nIGNoYW5nZXMgaW4gcGhhc2UgMkEgYmVnYW4gaW4gT2N0b2JlciAyMDE1LiBUaGUgd29ya2dyb3VwIHN0YXJ0ZWQgZGlzY3Vzc2luZyB0aGUgc2Vjb25kIHBoYXNlIG9mIHpvbmluZyBjaGFuZ2VzIGFsb25nIEVsIENhbWlubyBSZWFsIGFuZCBGaWZ0aCBBdmVudWUgaW4gTm9ydGggRmFpciBPYWtzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy85RjI2MjlBMC00NEM3LTRFN0UtQkMxOC0xMDM5OEMyQ0EwMzlcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiX090aGVyIFVwZGF0ZXNfXFxuXFxuKiAqKkRpbmUgJiBEaWFsb2d1ZSBTZXJpZXMqKjogT3ZlciBzdW1tZXIgb2YgMjAxNSwgdGhlIE5vcnRoIEZhaXIgT2FrcyBGb3J3YXJkIHRlYW0gb3JnYW5pemVkIHRocmVlIGRpYWxvZ3VlIGV2ZW50cyB3aGVyZSBjb21tdW5pdHkgbWVtYmVycyBjYW1lIHRvZ2V0aGVyIHRvIGVuam95IGEgY2FzdWFsIGRpbm5lciwgbGVhcm4gYWJvdXQgdGhlIGZlYXR1cmVkIHRvcGljLCBhbmQgZGlzY3VzcyB3aXRoIGVhY2ggb3RoZXIgdGhlaXIgaG9wZXMgYW5kIGlkZWFzIGZvciB0aGUgZnV0dXJlIG9mIE5vcnRoIEZhaXIgT2Frcy5cXG4qICoqUGFyayhpbmcpIERheSoqOiBPbiBTZXB0ZW1iZXIgMTgsIDIwMTUsIHRoZSBOb3J0aCBGYWlyIE9ha3MgY29tbXVuaXR5IHBhcnRpY2lwYXRlZCBpbiB0aGUgaW50ZXJuYXRpb25hbCBldmVudCBrbm93biBhcyBQYXJrKGluZykgRGF5LCB3aGVyZSBwYXJraW5nIHNwYWNlcyBhcmUgdGVtcG9yYXJpbHkgdHJhbnNmb3JtZWQgaW50byBtaW5pIHBhcmtzIGZvciB0aGUgZGF5LlxcbiogKipOZWlnaGJvcmhvb2QgUmVzcG9uc2UgVGVhbSoqOiBUaGUgQ291bnR5IG9yZ2FuaXplZCBhIG11bHRpLWRlcGFydG1lbnRhbCBlZmZvcnQgdG8gY29vcmRpbmF0ZSBhbmQgYWRkcmVzcyBhIHZhcmlldHkgb2YgY29kZSBjb21wbGlhbmNlIGlzc3VlcyBpbiBOb3J0aCBGYWlyIE9ha3MuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyBRdWFydGVybHkgVXBkYXRlIGFzIG9mIEFwcmlsIDI0LCAyMDE1XFxuXFxuXFxuXFxuX01pZGRsZWZpZWxkIFJvYWQgUmVkZXNpZ25fXFxuXFxuXFxuXFxuT24gT2N0b2JlciAyMSwgMjAxNCwgdGhlIEJvYXJkIG9mIFN1cGVydmlzb3JzIGNvbnNpZGVyZWQgdGhlIFtyZWNvbW1lbmRhdGlvbl1bMF0gZnJvbSB0aGUgTm9ydGggRmFpciBPYWtzIENvdW5jaWwgcmVnYXJkaW5nIHRoZSBNaWRkbGVmaWVsZCBSb2FkIFJlZGVzaWduLiBUaGUgcmVjb21tZW5kYXRpb24gd2FzIHVuYW5pbW91c2x5IGFwcHJvdmVkIGJ5IHRoZSBCb2FyZCBhbmQgc3RhZmYgd2FzIGRpcmVjdGVkIHRvIHByb2NlZWQgd2l0aCBkZXZlbG9wbWVudCBvZiB0aGUgUmVxdWVzdCBmb3IgUHJvcG9zYWxzIGZvciB0aGUgZGVzaWduIGFuZCB0cmFmZmljIGFuYWx5c2lzIGZvciB0aGUgcHJvamVjdC5cXG5cXG5cXG5cXG5BbiBpbnRlcmFjdGl2ZSBjb21tdW5pdHkgbWVldGluZyB3YXMgaGVsZCBvbiBKYW51YXJ5IDIxLCAyMDE1IHRvIHNoYXJlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXh0IHN0ZXBzIGZvciBNaWRkbGVmaWVsZCBSb2FkIChzZWUgaW1hZ2UgYmVsb3cpIGFuZCB0byBnYXRoZXIgaW5wdXQgYXJvdW5kIGEgdmFyaWV0eSBvZiBvdGhlciBhcmVhcywgaW5jbHVkaW5nIHRvcGljcyBmb3IgY29tbXVuaXR5IGRpYWxvZ3VlIHNlc3Npb25zLCB6b25pbmcsIGFuZCBwdWJsaWMgYXJ0IGVudHJhbmNlIHNpZ25zLiBUaGUgU2FuIE1hdGVvIENvdW50eSBIZWFsdGggU3lzdGVtIGFuZCB0aGUgUmVkd29vZCBDaXR5IExpYnJhcnkgYXR0ZW5kZWQgYW5kIHByb3ZpZGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIHNlcnZpY2VzIGFuZCB1cGNvbWluZyBldmVudHMuIEFkZGl0aW9uYWxseSwgb3ZlciB0ZW4gTkZPIEZvcndhcmQgWW91dGggQW1iYXNzYWRvcnMgdm9sdW50ZWVyZWQgdG8gYXNzaXN0IGF0IGVhY2ggaW50ZXJhY3RpdmUgc3RhdGlvbi5cXG5cXG5UaGUgUmVxdWVzdCBmb3IgUHJvcG9zYWxzIGZvciBEZXNpZ24gYW5kIFRyYWZmaWMgQW5hbHlzaXMgY2xvc2VkIGluIEFwcmlsIDIwMTUsIGFuZCBhcHBsaWNhbnRzIHdlcmUgcmV2aWV3ZWQgYnkgYSBzZWxlY3Rpb24gY29tbWl0dGVlIG1hZGUgdXAgb2YgdGhlIERlcGFydG1lbnQgb2YgUHVibGljIFdvcmtzIGFsb25nIHdpdGggdHdvIG1lbWJlcnMgb2YgdGhlIE5vcnRoIEZhaXIgT2FrcyBDb21tdW5pdHkgQ291bmNpbC4gVGhlIGNvbnRyYWN0IGZvciBkZXNpZ24gYW5kIHRyYWZmaWMgYW5hbHlzaXMgaXMgZXhwZWN0ZWQgdG8gYmUgcHJlc2VudGVkIHRvIHRoZSBCb2FyZCBvZiBTdXBlcnZpc29ycyBmb3IgY29uc2lkZXJhdGlvbiBvbiBNYXkgMTksIDIwMTUuIE9uY2UgdGhlIGNvbnRyYWN0IGlzIGF3YXJkZWQsIGl0IGlzIGVzdGltYXRlZCB0aGF0IHRoZSBkZXNpZ24gYW5kIHRyYWZmaWMgYW5hbHlzaXMgd2lsbCBiZSBjb21wbGV0ZWQgYmV0d2VlbiAxOC0yNCBtb250aHMuXFxuXFxuWzBdOiBodHRwOi8vbmZvZm9yd2FyZC5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9BZG9wdGVkJTI1MjBNaWRkbGVmaWVsZCUyNTIwUm9hZCUyNTIwUmVjJTI1MjAyMDE0LnBkZlwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzEyMjA4Qjg5LUZENkEtNDVFOC1BNUU3LUM3MEIxQ0NEMUQ3N1wifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzdCRjkxMTQ5LTUxQjktNDZFNy1CQzA0LTU0QTQyQjkxMDU3QVwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJfTG9jYWwgQnVzaW5lc3MgU3VzdGFpbmFiaWxpdHkgUGxhbl9cXG5cXG5cXG5cXG5JbiByZXNwb25zZSB0byB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2ls4oCZcyByZXF1ZXN0IGZvciBhIGxvY2FsIGJ1c2luZXNzIHN1c3RhaW5hYmlsaXR5IHBsYW4sIG92ZXIgODUgbG9jYWwgYnVzaW5lc3Mgb3duZXJzIGFsb25nIE1pZGRsZWZpZWxkIFJvYWQgd2VyZSBpbnRlcnZpZXdlZCBieSBOb3J0aCBGYWlyIE9ha3MgRm9yd2FyZCBzdGFmZi4gQWRkaXRpb25hbGx5LCBhIHByb3BlcnR5IG93bmVyIHN1cnZleSB3aWxsIGJlIG1haWxlZCBpbiBBcHJpbCAyMDE1IHRvIGdhdGhlciBhZGRpdGlvbmFsIGlucHV0LiBJbmZvcm1hdGlvbiBjb2xsZWN0ZWQgaW4gdGhlIGludGVydmlld3MgYW5kIHN1cnZleXMgYWxvbmcgd2l0aCBpbnB1dCBmcm9tIGEgYnVzaW5lc3MgYWR2aXNvcnkgY29tbWl0dGVlIHdpbGwgZGlyZWN0bHkgaW5mb3JtIHRoZSBMb2NhbCBCdXNpbmVzcyBTdXN0YWluYWJpbGl0eSBQbGFuIHRoYXQgQ291bnR5IHN0YWZmIHdpbGwgZGV2ZWxvcC4gUmVzdWx0cyBmcm9tIHRoZSBzdXJ2ZXkgYW5kIGludGVydmlld3MsIGFsb25nIHdpdGggbmV4dCBzdGVwcyB3aWxsIGJlIHNoYXJlZCBpbiBKdW5lIDIwMTUgd2l0aCB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsLlxcblxcblxcblxcbl9QdWJsaWMgQXJ0IFdvcmtncm91cF9cXG5cXG5cXG5cXG5UaGUgUHVibGljIEFydCBXb3JrZ3JvdXAsIGZhY2lsaXRhdGVkIGJ5IE5vcnRoIEZhaXIgT2FrcyBGb3J3YXJkIHN0YWZmLCBjb250aW51ZXMgdG8gbWVldCBtb250aGx5IHByb3ZpZGluZyBndWlkYW5jZSBhcm91bmQgcHVibGljIGFydCBpbiB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSB0byB0aGUgQ291bmNpbC4gQmFzZWQgb24gY29tbXVuaXR5IGlucHV0LCB0aGUgd29ya2dyb3VwIHNlbGVjdGVkIHRoZSBzaWxob3VldHRlIGVudHJhbmNlIHNpZ24gY29uY2VwdCBhdCB0aGVpciBtZWV0aW5nIGluIE9jdG9iZXIgMjAxNCBhbmQgZ2F0aGVyZWQgYWRkaXRpb25hbCBpbnB1dCBvbiB0aGUgc3BlY2lmaWMgZGVzaWduIGZvciBlYWNoIGxvY2F0aW9uIGF0IHRoZSBjb21tdW5pdHkgbWVldGluZyBpbiBKYW51YXJ5IDIwMTUuIEFmdGVyIHJldmlld2luZyB0aGUgaW5wdXQsIHRoZSB3b3JrZ3JvdXAgcHJlcGFyZWQgYSByZWNvbW1lbmRhdGlvbiBmb3IgY29uc2lkZXJhdGlvbiBieSB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsLiBUaGUgZmluYWwgZW50cmFuY2Ugc2lnbiBkZXNpZ25zIHRoYXQgd2VyZSBhcHByb3ZlZCBieSB0aGUgQ291bmNpbCBhcmUgcGljdHVyZWQgYmVsb3cgYW5kIGFyZSBzY2hlZHVsZWQgZm9yIGluc3RhbGxhdGlvbiBieSBzdW1tZXIgMjAxNS4gQWRkaXRpb25hbGx5LCB0aGUgUHVibGljIEFydCBXb3JrZ3JvdXAgaGFzIHJlbGVhc2VkIGEgQ2FsbCBmb3IgQXJ0aXN0cyB0byBwYWludCB0aHJlZSBDb3VudHkgb3duZWQgdXRpbGl0eSBib3hlcyBpbiBOb3J0aCBGYWlyIE9ha3MuIFtDbGljayBoZXJlXVswXSB0byByZWFkIG1vcmUgYWJvdXQgdGhlIENhbGwgZm9yIEFydGlzdHMgb24gb3VyIHdlYnNpdGUuIEFwcGxpY2F0aW9ucyBhcmUgZHVlIGJ5IE1heSAxNSwgMjAxNS4gVGhlIHByb2plY3QgaXMgc2NoZWR1bGVkIHRvIGJlIGNvbXBsZXRlZCBieSBzdW1tZXIgMjAxNS4gVG8gbGVhcm4gbW9yZSwgY2hlY2sgb3V0IG91ciBuZXh0IG1lZXRpbmcgW2hlcmVdWzFdLlxcblxcblswXTogaHR0cDovL25mb2ZvcndhcmQub3JnL2NvbW11bml0eS1uZXdzL2NhbGxpbmctYWxsLWFydGlzdHMtdXRpbGl0eS1ib3gtbXVyYWwtcHJvamVjdFxcblsxXTogaHR0cDovL25mb2ZvcndhcmQub3JnL25mby1mb3J3YXJkL25vcnRoLWZhaXItb2Frcy1mb3J3YXJkLXByb2plY3RzL3B1YmxpYy1hcnRcIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9GNkIyQjM3QS1BM0UzLTQzNDItQTZGOC0yNTUzRjJGQzYwQTFcIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8yNDk1MzlBMy03MUY3LTQ4RDItODJBNy05MTcyNTE1ODRDMUVcIn1dXX0se1widHlwZVwiOlwidGV4dFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJfTWluaS1QYXJrIFN1YmNvbW1pdHRlZV9cXG5cXG5XaXRoIHRoZSBncm93aW5nIG5lZWQgZm9yIHNtYWxsZXIgcGFya3MgaW4gdW5pbmNvcnBvcmF0ZWQgYXJlYXMgb2YgU2FuIE1hdGVvIENvdW50eSwgdGhlIE1pbmktUGFyayBTdWJjb21taXR0ZWUgb2YgdGhlIFNhbiBNYXRlbyBDb3VudHkgUGFya3MgQ29tbWlzc2lvbiB3YXMgZm9ybWVkIHRvIGRldmVsb3AgYSBwb2xpY3kgZm9yIHRoZSBDb3VudHkgYXJvdW5kIG1pbmktcGFya3MuIEZhY2lsaXRhdGVkIGJ5IE5vcnRoIEZhaXIgT2FrcyBGb3J3YXJkIHN0YWZmIGFuZCB0aGUgUGFya3MgRGVwYXJ0bWVudCwgdGhlIE1pbmktUGFyayBTdWJjb21taXR0ZWUgbWV0IG1vbnRobHkgdGhyb3VnaCBNYXJjaCAyMDE1LiBUaGUgcHJvcG9zZWQgTWluaS1QYXJrIFBvbGljeSB3YXMgcHJlc2VudGVkIHRvIHRoZSBQYXJrcyBDb21taXNzaW9uIGZvciBjb25zaWRlcmF0aW9uIGF0IGl0cyByZWd1bGFyIG1lZXRpbmcgaW4gQXByaWwuIFRoZSBNaW5pLVBhcmsgUG9saWN5IHdhcyBhcHByb3ZlZCBieSB0aGUgQ29tbWlzc2lvbiBhbmQgaXMgc2NoZWR1bGVkIGZvciBjb25zaWRlcmF0aW9uIGJ5IHRoZSBCb2FyZCBvZiBTdXBlcnZpc29ycyBpbiBNYXkgMjAxNS4gQWxsIG9mIHRoZSBtZW1iZXJzIG9mIHRoZSBzdWJjb21taXR0ZWUgcmVjZWl2ZWQgYSBDZXJ0aWZpY2F0ZSBvZiAgQXBwcmVjaWF0aW9uIGZyb20gdGhlIFBhcmtzIERlcGFydG1lbnQgZm9yIHRoZWlyIHBhcnRpY2lwYXRpb24gKHNlZSBwaG90byBiZWxvdykuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzlGMkQ5M0MyLUNGOTgtNEVGNS04MTg4LUQzRjJEQzI0NkEwOVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJfWm9uaW5nL1BhcmtpbmcgV29ya2dyb3VwX1xcblxcblxcblxcblRoZSBab25pbmcvUGFya2luZyBXb3JrZ3JvdXAgcmVzdW1lZCBtb250aGx5IG1lZXRpbmdzIGluIEZlYnJ1YXJ5IDIwMTUgdG8gY29udGludWUgcmV2aWV3aW5nIFBoYXNlIE9uZSBvZiB0aGUgem9uaW5nIGNoYW5nZXMgcHJvcG9zZWQgYnkgdGhlIE5vcnRoIEZhaXIgT2FrcyBDb21tdW5pdHkgUGxhbi4gRmFjaWxpdGF0ZWQgYnkgTm9ydGggRmFpciBPYWtzIEZvcndhcmQgc3RhZmYgYW5kIHRoZSBQbGFubmluZyBhbmQgQnVpbGRpbmcgRGVwYXJ0bWVudCwgdGhlIFpvbmluZy9QYXJraW5nIFdvcmtncm91cCBpcyBjdXJyZW50bHkgcmV2aWV3aW5nIGFuZCBtYWtpbmcgY2hhbmdlcyB0byB0aGUgbmVpZ2hib3Job29kIG1peGVkIHVzZSB6b25pbmcgYWxvbmcgTWlkZGxlZmllbGQgUm9hZCBiZXR3ZWVuIEZpcnN0IEF2ZW51ZSBhbmQgRWlnaHRoIEF2ZW51ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIFtjbGljayBoZXJlXVswXSB0byB2aXNpdCB0aGUgTm9ydGggRmFpciBPYWtzIEZvcndhcmQgd2Vic2l0ZS5cXG5cXG5cXG5cXG5fT3RoZXIgVXBkYXRlc19cXG5cXG5cXG5cXG5ORk8gRm9yd2FyZCBjb250aW51ZXMgdG8gYXR0ZW5kIGEgdmFyaWV0eSBvZiBjb21tdW5pdHkgZXZlbnRzIHRvIHNwcmVhZCB0aGUgd29yZCBhYm91dCBORk8gQ29tbXVuaXR5IFBsYW4gcmVsYXRlZCBwcm9qZWN0cyBoYXBwZW5pbmcgaW4gTm9ydGggRmFpciBPYWtzLCBpbmNsdWRpbmcgdGhlIGZpcnN0IGFubml2ZXJzYXJ5IG9mIHRoZSBGYWlyIE9ha3MgSGVhbHRoIENlbnRlciwgdGhlIETDrWEgZGVsIE5pbm8gQ2VsZWJyYXRpb24gYXQgRmFpciBPYWtzIEVsZW1lbnRhcnkgU2Nob29sLCB0aGUgRnJpZW5kc2hpcCBQYXJrIEFubml2ZXJzYXJ5LCBhbmQgdGhlIEtlcm1lcyBGZXN0aXZhbC5cXG5cXG5bMF06IGh0dHA6Ly9uZm9mb3J3YXJkLm9yZy9uZm8tZm9yd2FyZC9ub3J0aC1mYWlyLW9ha3MtZm9yd2FyZC1wcm9qZWN0cy96b25pbmctcGFya2luZy13b3JrZ3JvdXBcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyBRdWFydGVybHkgVXBkYXRlIGFzIG9mIFNlcHRlbWJlciAzMCwgMjAxNFxcblxcblxcblxcbl9NaWRkbGVmaWVsZCBSb2FkIFJlZGVzaWduX1xcblxcblxcblxcbk9uIFNlcHRlbWJlciAyNSwgMjAxNCwgYSBtYWpvciBtaWxlc3RvbmUgaW4gdGhlIE1pZGRsZWZpZWxkIFJvYWQgcHJvamVjdCB3YXMgYWNjb21wbGlzaGVkLiBUaGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsIChORk9DQykgdm90ZWQgdW5hbmltb3VzbHkgdG8gYXBwcm92ZSB0aGUgcmVjb21tZW5kYXRpb24gZm9yIHRoZSByb2FkIHJlZGVzaWduIGFuZCByZXF1ZXN0ZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gVGhyZWUgbWVldGluZ3Mgd2VyZSBoZWxkIHRoaXMgcXVhcnRlciBpbiBsZWFkaW5nIHVwIHRvIHRoZSBkZWNpc2lvbi4gVGhlIE91dHJlYWNoIFRlYW0gZGlzdHJpYnV0ZWQgMyw1MDAgZG9vciBoYW5nZXJzIGNvdmVyaW5nIGFsbCBvZiBOb3J0aCBGYWlyIE9ha3MgaW52aXRpbmcgdGhlIGNvbW11bml0eSB0byB0aGUgYSBtZWV0aW5nIGNvLXNwb25zb3JlZCBieSB0aGUgTkZPQ0MgYW5kIE5vcnRoIEZhaXIgT2FrcyBGb3J3YXJkIG9uIEp1bHkgMjQsIDIwMTQuXFxuXFxuXFxuXFxuQXQgdGhhdCBtZWV0aW5nLCB0aGUgRGVwYXJ0bWVudCBvZiBQdWJsaWMgV29ya3MgcHJlc2VudGVkIGEgdHJhZmZpYyBhbmFseXNpcyBmb3IgdGhlIHJvYWQgY29uZmlndXJhdGlvbnMgYmVpbmcgY29uc2lkZXJlZC4gQWJvdXQgODUgcGVvcGxlIGF0dGVuZGVkIGFuZCBwYXJ0aWNpcGF0ZWQgaW4gc21hbGwgZ3JvdXAgZGlzY3Vzc2lvbnMgd2hlcmUgdGhleSBzaGFyZWQgdGhlaXIgdGhvdWdodHMgcmVnYXJkaW5nIHRoZSByb2Fkd2F5IGNvbmZpZ3VyYXRpb25zLiBJbiBwcmVwYXJhdGlvbiBmb3IgYSBORk9DQyBzdHVkeSBzZXNzaW9uIG9uIHRoZSByb2FkIGRlc2lnbiBvbiBBdWd1c3QgMjEsIDIwMTQgYW5kIHRoZW4gdGhlaXIgbWVldGluZyB0byBjb25zaWRlciBhIHJlY29tbWVuZGVkIGRlc2lnbiBvbiBTZXB0ZW1iZXIgMjUsIDIwMTQsIHN0YWZmIGNvbXBpbGVkIGEgY29tcHJlaGVuc2l2ZSBfW01pZGRsZWZpZWxkIFJvYWQgQmFja2dyb3VuZCBhbmQgQWRkaXRpb25hbCBJbmZvcm1hdGlvbl1bMF1fIHBhY2tldC4gVGhlIHBhY2tldCBpbmNsdWRlZCB0aGUgbm90ZXMgZnJvbSB0aGUgc21hbGwgZ3JvdXAgZGlzY3Vzc2lvbnMgb24gZnJvbSB0aGUgSnVseSBtZWV0aW5nLCByZWxldmFudCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBOb3J0aCBGYWlyIE9ha3MgQ29tbXVuaXR5IFBsYW4sIHRoZSB0cmFmZmljIGFuYWx5c2lzLCBhbmQgYSBzdW1tYXJ5IG9mIGFsbCB0aGUgaW5wdXQgcmVjZWl2ZWQgZnJvbSB0aGUgY29tbXVuaXR5LiBUaGUgTkZPQ0MgYWxzbyB0b3VyZWQgZG93bnRvd24gUmVkd29vZCBDaXR5IHRvIHNlZSB2YXJpb3VzIHNpZGV3YWxrIGNvbmZpZ3VyYXRpb25zLCBiaWtlIGxhbmVzIG9wdGlvbnMgYW5kIHN0cmVldCBhbWVuaXRpZXMuIEFsbCB0aGUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBpcyBwb3N0ZWQgb24gdGhlIFtORk9Gb3J3YXJkLm9yZ11bMV0gd2Vic2l0ZS5cXG5cXG5cXG5cXG5UaGUgW3JlY29tbWVuZGF0aW9uXVsyXSBhcHByb3ZlZCBieSB0aGUgTkZPQ0MgY2FsbHMgZm9yIHRoZSBmb2xsb3dpbmcgc3RyZWV0IGRlc2lnbiBlbGVtZW50czpcXG5cXG5cXG5cXG7igKIgVGhyZWUgdHJhZmZpYyBsYW5lcyAgIFxcbuKAoiBCaWtlIGxhbmVzICAgXFxu4oCiIFNpZGV3YWxrcyB3aWRlIGVub3VnaCB0byBhY2NvbW1vZGF0ZSBzdHJlZXQgYW1lbml0aWVzIGluY2x1ZGluZyBiZW5jaGVzIGFuZCBvdGhlciBzZWF0aW5nLCBncmVlbmVyeSwgc3RyZWV0IGFuZCBwZWRlc3RyaWFuIGxpZ2h0aW5nLCB0IHJhc2ggYW5kIHJlY3ljbGluZyByZWNlcHRhY2xlcywgc3RyZWV0IGFydCBhbmQgcHVibGljIHNwYWNlcyAgIFxcbuKAoiBQYXJhbGxlbCBwYXJraW5nXFxuXFxuXFxuXFxuVGhlIE5GT0NDIGFsc28gcmVxdWVzdGVkIHRoYXQgY29uY3VycmVudGx5IHdpdGggdGhlIGRldmVsb3BtZW50IG9mIHRoZSBkcmFmdCBkZXNpZ24gdGhyZWUgYWRkaXRpb25hbCByZXBvcnRzIGJlIHByZXBhcmVkOlxcblxcblxcblxcbuKAoiBBIHNpZ25hbGl6YXRpb24gYW5kIHRyYWZmaWMgbWFuYWdlbWVudCBwbGFuIGZvciB0aGUgcHJvamVjdCBhcmVhICAgXFxu4oCiIFBhcmtpbmcgc29sdXRpb25zICAgXFxu4oCiIEEgbG9jYWwgYnVzaW5lc3Mgc3VzdGFpbmFiaWxpdHkgcGxhblxcblxcblxcblxcbkFuIGludGVyYWN0aXZlIGNvbW11bml0eSBtZWV0aW5nIHdhcyBoZWxkIG9uIFNlcHRlbWJlciAyMyB0byBwcm92aWRlIHRoZSBjb21tdW5pdHkgd2l0aCBhbiB1cGRhdGUgb24gdGhlIHJlY29tbWVuZGF0aW9uIG1hZGUgYnkgdGhlIE5GT0NDLiBUaGUgbmV4dCBzdGVwIGlzIHRvIHByZXNlbnQgdGhlIGRlc2lnbiByZWNvbW1lbmRhdGlvbiBmb3IgdGhlIGNvbmNlcHR1YWwgZGVzaWduIG9mIE1pZGRsZWZpZWxkIFJvYWQgdG8gdGhlIEJvYXJkIG9mIFN1cGVydmlzb3JzIG9uIE9jdG9iZXIgMjEsIDIwMTQgZm9yIGZpbmFsIGFwcHJvdmFsLlxcblxcblswXTogaHR0cDovL25mb2ZvcndhcmQub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvTWlkZGxlZmllbGQlMjUyNTI1MjBSb2FkJTI1MjUyNTIwQmFja2dyb3VuZCUyNTI1MjUyNkFkZGl0aW9uYWxJbmZvXzAucGRmXFxuWzFdOiBodHRwOi8vd3d3Lm5mb2ZvcndhcmQub3JnXFxuWzJdOiBodHRwOi8vbmZvZm9yd2FyZC5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9BZG9wdGVkJTI1MjUyNTIwTWlkZGxlZmllbGQlMjUyNTI1MjBSb2FkJTI1MjUyNTIwUmVjJTI1MjUyNTIwMjAxNC5wZGZcIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9GNzM5OTIxOC00NDY3LTQzOTYtOUIyNi04RDZCNjE3OENGMTZcIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CMjU3NTM5Mi1CRjY5LTQ0RDktOUVGOS00OThDQjhCRUIwRjFcIn1dXX0se1widHlwZVwiOlwidGV4dFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJfUHVibGljIEFydCBXb3JrZ3JvdXBfXFxuXFxuVGhlIEJvYXJkIG9mIFN1cGVydmlzb3JzIGFwcHJvdmVkIHRoZSBQdWJsaWMgQXJ0IFdvcmtncm91cOKAmXMgcmVxdWVzdCBmb3IgZnVuZGluZyBpbiBTZXB0ZW1iZXIsIGFuZCB0aGUgd29ya2dyb3VwIHdpbGwgYmVnaW4gaW1wbGVtZW50aW5nIHRoZSBwdWJsaWMgYXJ0IHByb2plY3RzIG92ZXIgdGhlIG5leHQgZmV3IG1vbnRocy4gQWRkaXRpb25hbGx5LCB0aGUgd29ya2dyb3VwIHByZXNlbnRlZCB2YXJpb3VzIGNvbmNlcHQgaWRlYXMgZm9yIE5vcnRoIEZhaXIgT2FrcyBlbnRyYW5jZSBzaWducyBhdCB0aGUgY29tbXVuaXR5IG1lZXRpbmcgaW4gU2VwdGVtYmVyLiBUaGUgd29ya2dyb3VwIHdpbGwgbWVldCBpbiBPY3RvYmVyIHRvIHJldmlldyB0aGUgY29tbXVuaXR5IGlucHV0IGFuZCBpZGVudGlmeSBhbiBlbnRyYW5jZSBzaWduIGNvbmNlcHQgdG8gaW1wbGVtZW50Llxcblxcbl9QYXJrcyBXb3JrZ3JvdXAvTWluaS1QYXJrIFN1YmNvbW1pdHRlZV9cXG5cXG5UaGUgUGFya3MgV29ya2dyb3VwIGNhbWUgdG8gYSBjbG9zZSBpbiBBcHJpbCAyMDE0IGFuZCBoYXMgZXZvbHZlZCBpbnRvIGEgc3ViY29tbWl0dGVlIG9mIHRoZSBQYXJrcyBDb21taXNzaW9uIHRoYXQgbWVldHMgbW9udGhseS4gVGhlIE1pbmktUGFyayBTdWJjb21taXR0ZWUgd2lsbCB3b3JrIHdpdGggdGhlIFBhcmtzIERlcGFydG1lbnQgdG8gY3JlYXRlIGEgcG9saWN5IGFyb3VuZCBtaW5pIHBhcmtzIGZvciB0aGUgUGFya3MgRGVwYXJ0bWVudOKAmXMgU3RyYXRlZ2ljIFBsYW4uIFRoZSBzdWJjb21taXR0ZWUgaG9wZXMgdG8gaGF2ZSBhIHBvbGljeSB0byBwcmVzZW50IHRvIHRoZSBQYXJrcyBDb21taXNzaW9uIGJ5IGVhcmx5IDIwMTUuXFxuXFxuX090aGVyIFVwZGF0ZXNfXFxuXFxuT24gU2VwdGVtYmVyIDE5LCBOb3J0aCBGYWlyIE9ha3MgRm9yd2FyZCBwYXJ0bmVyZWQgd2l0aCBsb2NhbCBidXNpbmVzc2VzIHRvIGNlbGVicmF0ZSBQYXJrKGluZykgRGF5LCBhbiBhbm51YWwgd29ybGR3aWRlIGV2ZW50IHdoZXJlIHBhcmtpbmcgc3BhY2VzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHRlbXBvcmFyeSBwdWJsaWMgcGFya3MuIFtDbGljayBoZXJlXVswXSB0byBzZWUgYSB0aW1lIGxhcHNlIHZpZGVvIG9mIHRoZSBldmVudC5cXG5cXG5bMF06IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9dlVxS3NpM25MQ0VcIn0se1widHlwZVwiOlwidGV4dFwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzI5NTEwMEM4LTYzRTktNEY3My05RkVCLTkzQTcyNjgzQjBBQVwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzlEQzQ2RDAzLTEyNjItNEI4My04ODBGLTNBQ0UyRDk4NzdCNlwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgUXVhcnRlcmx5IFVwZGF0ZSBhcyBvZiBKdW5lIDMwLCAyMDE0XFxuXFxuXFxuXFxuX01pZGRsZWZpZWxkIFJvYWQgUmVkZXNpZ25fXFxuXFxuXFxuXFxuQWJvdXQgMiwwMDAgTm9ydGggRmFpciBPYWtzIHJlc2lkZW50cywgYnVzaW5lc3Mgb3duZXJzIGFuZCBuZWlnaGJvcnMgaGF2ZSBzaGFyZWQgdGhlaXIgb3BpbmlvbnMgYWJvdXQgdGhlIGZ1dHVyZSBkZXNpZ24gb2YgTWlkZGxlZmllbGQgUm9hZC4gT3ZlciAxLDM1MCBzdXJ2ZXlzLCBhdmFpbGFibGUgaW4gRW5nbGlzaCBhbmQgU3BhbmlzaCBib3RoIG9uLWxpbmUgYW5kIGhhcmQgY29weSwgaGF2ZSBiZWVuIHN1Ym1pdHRlZC4gQW5kIG92ZXIgNjUwIHBlb3BsZSBoYXZlIGF0dGVuZGVkIGEgdG90YWwgb2YgMTIgY29tbXVuaXR5IGdyb3VwIHByZXNlbnRhdGlvbnMgYW5kIHR3byBjb21tdW5pdHktd2lkZSBtZWV0aW5ncy4gQXQgdGhlIHR3byBjb21tdW5pdHkgd2lkZSBtZWV0aW5ncywgaGVsZCBBcHJpbCAyNnRoIGFuZCAyOXRoLCBhdHRlbmRlZXMgbGVhcm5lZCBhYm91dCBhbGwgdGhlIE5vcnRoIEZhaXIgT2FrcyBGb3J3YXJkIGluaXRpYXRpdmVzIGFuZCBzaGFyZWQgdGhlaXIgb3BpbmlvbnMgb24gcGFya2luZyBhbmQgem9uaW5nIGFsdGVybmF0aXZlcywgcHVibGljIGFydCBvcHRpb25zLCB3YXlzIHRvIGltcHJvdmUgY29tbXVuaXR5IHdlbGxuZXNzIGFuZCBzdHJlZXQgZGVzaWduIG9wdGlvbnMuIFN0YWZmIGZyb20gdGhlIERlcGFydG1lbnQgb2YgUHVibGljIFdvcmtzLCBQbGFubmluZyBhbmQgQnVpbGRpbmcgYW5kIGFydGlzdHMgYW5kIG90aGVyIG1lbWJlcnMgb2YgdGhlIGpvaW50IEFydHMgQ29tbWlzc2lvbi9Ob3J0aCBGYWlyIE9ha3MgQ29tbXVuaXR5IENvdW5jaWwgcHVibGljIGFydCB3b3JrZ3JvdXAgYWxvbmcgd2l0aCBIZWFsdGggRGVwYXJ0bWVudCBhbmQgY2xpbmljIHN0YWZmIHdlcmUgYWxsIGF2YWlsYWJsZSBhdCB0aGUgbWVldGluZ3MgdG8gYW5zd2VyIHJlc2lkZW50IHF1ZXN0aW9ucyBhbmQgZG9jdW1lbnQgdGhlaXIgY29tbWVudHMuIE5vcnRoIEZhaXIgT2FrcyBZb3V0aCBBbWJhc3NhZG9ycyBhc3Npc3RlZCB3aXRoIHJlZ2lzdHJhdGlvbiwgc3VydmV5IGNvbGxlY3Rpb24gYW5kIHByb3ZpZGVkIG90aGVyIHN1cHBvcnQgYXQgdGhlIGNvbW11bml0eSBtZWV0aW5ncyBhcyB3ZWxsLCBOb3J0aCBGYWlyIE9ha3MgRm9yd2FyZCBzdGFmZiBhcmUgbm93IGNvbXBpbGluZyBhbmQgYW5hbHl6aW5nIHRoZSBodW5kcmVkcyBvZiBjb21tZW50cyByZWNlaXZlZCBvbiB0aGUgc3VydmV5cyBhbmQgYXQgdGhlIG1lZXRpbmdzLiBBIHN1bW1hcnkgb2YgdGhlIGNvbW11bml0eSBpbnB1dCB3aWxsIGJlIHByZXNlbnRlZCB0byB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsIGF0IHRoZWlyIE1heSBtZWV0aW5nIGFsb25nIHdpdGggYSB0aW1lIGxpbmUgZm9yIG5leHQgc3RlcHMgaW4gdGhpcyBwcm9jZXNzLlxcblxcblxcblxcbl9QdWJsaWMgQXJ0IFdvcmtncm91cF9cXG5cXG5cXG5cXG5Vc2luZyBjb21tdW5pdHkgaW5wdXQgZnJvbSB0aGUgcHVibGljIGFydCBzdGF0aW9uIGF0IHRoZSBjb21tdW5pdHkgbWVldGluZ3MgaW4gQXByaWwsIHRoZSBQdWJsaWMgQXJ0IFdvcmtncm91cCBpZGVudGlmaWVkIHRocmVlIHByb2plY3RzIGFuZCBoYXMgc3VibWl0dGVkIGEgcmVxdWVzdCBmb3IgZnVuZGluZyB0byB0aGUgQm9hcmQgb2YgU3VwZXJ2aXNvcnMuIFRoZSBhcnQgcHJvamVjdHMgaW5jbHVkZSBhIGxvY2FsIGFydGlzdCBtdXJhbCBwcm9qZWN0IHRvIGRlY3JlYXNlIGdyYWZmaXRpIHRhZ2dpbmcsIGEgcGlsb3QgbGl2aW5nIHdhbGwgcHJvamVjdCwgYW5kIGEgbXVyYWwgb3IgbW9zYWljIGF0IHRoZSBGYWlyIE9ha3MgSGVhbHRoIENlbnRlciBwYXJraW5nIGxvdC5cXG5cXG5cXG5cXG50aGUgd29ya2dyb3VwcyBsaXN0ZWQgaW4gdGhlIHByaW9yIHVwZGF0ZSBjb250aW51ZSB0byBtZWV0IGFuZCB0aGVpciB3b3JrIGlzIGJlaW5nIGluY29ycG9yYXRlZCBpbnRvIHRoZSBNaWRkbGVmaWVsZCBSb2FkIHByb2plY3QgYW5kIG90aGVyIHdvcmsgYmVpbmcgZG9uZSBieSB0aGUgUGxhbm5pbmcgYW5kIEJ1aWxkaW5nIERlcGFydG1lbnQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgTWFwIG9mIENvbW11bml0eSBNZWV0aW5nIEF0dGVuZGVlcyBhbmQgU3VydmV5IFBhcnRpY2lwYW50c1xcblxcbl9Ob3RlOiBUaGlzIG1hcCBvbmx5IHJlcHJlc2VudHMgYWJvdXQgMTAlIG9mIHBhcnRpY2lwYW50cy4gTm90IGFsbCB3aG8gcGFydGljaXBhdGVkIHByb3ZpZGVkIHRoZWlyIGFkZHJlc3Mgb3IgY3Jvc3Mgc3RyZWV0Ll9cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQjg1QzhBNUYtNjRGMi00RjFDLUI1Q0EtMEFFNjcxRjkxMzk3XCJ9LHtcInR5cGVcIjpcInRleHRcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyBTdW1tYXJ5IG9mIENvbW11bml0eSBJbnB1dCBhbmQgUHJvamVjdCBUaW1lbGluZVxcblxcblwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzg3OEQ4NUYzLTg4MDgtNDkxNC04NUFELUQ5N0VBMjg1MjQ2RlwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzAyN0JDRUJFLTRBRTQtNDdENy1BRDJDLTM3NUVDNzFFNDVEOVwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgUXVhcnRlcmx5IFVwZGF0ZSBhcyBvZiBNYXJjaCAzMSwgMjAxNFxcblxcblR3byBiaWxpbmd1YWwgZW1wbG95ZWVzIHdlcmUgaGlyZWQgdG8gam9pbiB0aGUgTm9ydGggRmFpciBPYWtzIE91dHJlYWNoIFRlYW0gaW4gaW1wbGVtZW50aW5nIHRoZSBOb3J0aCBGYWlyIE9ha3MgQ29tbXVuaXR5IFBsYW4uIEFsb25nIHdpdGggdGhlIGhlbHAgb2YgdGhlIG5ldyBvdXRyZWFjaCB0ZWFtIG1lbWJlcnMsIHRoZSBOb3J0aCBGYWlyIE9ha3MgY29tbXVuaXR5IHdlYnNpdGUsIFt3d3cubmZvZm9yd2FyZC5vcmddWzBdLCB3YXMgZXN0YWJsaXNoZWQgaW4gRW5nbGlzaCBhbmQgU3BhbmlzaCBhbmQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgbmV3cywgY29tbXVuaXR5IGV2ZW50cywgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsLCBhbmQgb3RoZXIgcHJvamVjdHMgaGFwcGVuaW5nIGluIE5vcnRoIEZhaXIgT2Frcy4gXFxuXFxuX01pZGRsZWZpZWxkIFJvYWQgUmVkZXNpZ24gVXBkYXRlX1xcblxcblRoZSBPdXRyZWFjaCBUZWFtIGRldmVsb3BlZCBhIHN1cnZleSByZWdhcmRpbmcgdGhlIE1pZGRsZWZpZWxkIFJvYWQgUmVkZXNpZ24gUHJvamVjdC4gQW55b25lIHdobyB3b3JrcywgbGl2ZXMgb3IgZnJlcXVlbnRzIE5vcnRoIEZhaXIgT2FrcyBpcyBlbmNvdXJhZ2VkIHRvIHBhcnRpY2lwYXRlIGVpdGhlciBvbmxpbmUgb3IgYnkgcGlja2luZyB1cCBhIGNvcHkgYXQgdGhlIEZhaXIgT2FrcyBDb21tdW5pdHkgQ2VudGVyLiBUaGUgT3V0cmVhY2ggVGVhbSBwbGFucyB0byB2aXNpdCBvcmdhbml6YXRpb25zIGFuZCBidXNpbmVzc2VzIHRocm91Z2hvdXQgTm9ydGggRmFpciBPYWtzIHRvIGRpc3RyaWJ1dGUgc3VydmV5cyB0byB0aGUgcHVibGljLiBcXG5cXG5fWm9uaW5nIFdvcmtncm91cCBVcGRhdGVfXFxuXFxuVGhlIFpvbmluZyBXb3JrZ3JvdXAsIG1hZGUgdXAgb2YgY291bnR5IGVtcGxveWVlcywgY29tbXVuaXR5IHJlc2lkZW50cyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzLCBmb3JtZWQgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IHpvbmluZyByZWd1bGF0aW9ucyBiYXNlZCBvbiB0aGUgdmlzaW9uIG9mIHRoZSBOb3J0aCBGYWlyIE9ha3MgQ29tbXVuaXR5IFBsYW4uIFRoZSBab25pbmcgV29ya2dyb3VwIGNvbXBsZXRlZCBhIGRyYWZ0IG9mIHRoZSBmaXJzdCBwaGFzZSBvZiB6b25pbmcgYW1lbmRtZW50cyBmb2N1c2VkIHByaW1hcmlseSBvbiB0aGUgTmVpZ2hib3Job29kIE1peGVkLVVzZSB6b25pbmcgYXJlYXMgb2YgTWlkZGxlZmllbGQgUm9hZC4gXFxuXFxuX1BhcmtpbmcgV29ya2dyb3VwX1xcblxcblRoZSBQYXJraW5nIFdvcmtncm91cCwgbWFkZSB1cCBvZiBjb3VudHkgZW1wbG95ZWVzLCBOb3J0aCBGYWlyIE9ha3MgQ29tbXVuaXR5IENvdW5jaWwgbWVtYmVycywgcmVzaWRlbnRzIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMsIGNvbXBsZXRlZCBhIHJldmlldyBvZiB0aGUgUGFya2luZyBTdHVkeSBhbmQgdGhlIHJlY29tbWVuZGF0aW9ucyBtYWRlIGJ5IE5lbHNvbi9OeWdhYXJkIENvbnN1bHRhbnRzLiBBZnRlciBNYXJjaCwgdGhlIFBhcmtpbmcgV29ya2dyb3VwIHdpbGwgbWVyZ2Ugd2l0aCB0aGUgWm9uaW5nIFdvcmtncm91cC4gXFxuXFxuX1BhcmtzIFdvcmtncm91cF9cXG5cXG5UaGUgUGFya3MgV29ya2dyb3VwLCBmYWNpbGl0YXRlZCBieSBUcnVzdCBmb3IgUHVibGljIExhbmRzLCBpcyBtYWRlIHVwIG9mIGNvdW50eSBlbXBsb3llZXMsIGNvbW11bml0eSByZXNpZGVudHMsIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMuIFRoZSB3b3JrZ3JvdXAgaXMgY2hhcmdlZCB3aXRoIGRldmVsb3BpbmcgYW4gYWN0aW9uIHBsYW4gZm9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwcmlvcml0eSBnb2FscyBhbmQgcG9saWNpZXMgYXJvdW5kIFBhcmtzIGFuZCBPcGVuIFNwYWNlIGlkZW50aWZpZWQgaW4gdGhlIE5vcnRoIEZhaXIgT2FrcyBDb21tdW5pdHkgUGxhbi4gVGhlIFdvcmtncm91cCBob3N0ZWQgYSBwdWJsaWMgbWVldGluZyBvbiBKYW51YXJ5IDI4LCAyMDE0IHdoZXJlIHZhbHVhYmxlIGZlZWRiYWNrIHdhcyBjb2xsZWN0ZWQgZnJvbSB0aGUgY29tbXVuaXR5IHJlZ2FyZGluZyBwYXJrcyBhbmQgb3BlbiBzcGFjZSBpbiBOb3J0aCBGYWlyIE9ha3MuIFBsYXlncm91bmRzLCBjb21tdW5pdHkgZ2FyZGVucywgcGxhemFzIGFzIHdlbGwgYXMgZml0bmVzcyB6b25lcyB3ZXJlIGlkZW50aWZpZWQgYXMgb3Bwb3J0dW5pdGllcyBkdXJpbmcgdGhpcyBtZWV0aW5nLiBBZGRpdGlvbmFsbHksIGEgcGFya3Mgc3VydmV5IHdhcyBjb25kdWN0ZWQgd2l0aCB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBhbmQgcmVjZWl2ZWQgYSB0b3RhbCBvZiBhYm91dCA1MDAgcmVzcG9uc2VzLiBcXG5cXG5fUHVibGljIEFydCBXb3JrZ3JvdXBfXFxuXFxuVGhlIE5vcnRoIEZhaXIgT2FrcyBQdWJsaWMgQXJ0IFdvcmtncm91cCBoZWxkIHRoZWlyIGZpcnN0IG1vbnRobHkgbWVldGluZyBvbiBNYXJjaCAxMHRoIHdoZXJlIGNvdW50eSBlbXBsb3llZXMsIGNvbW11bml0eSBtZW1iZXJzLCBjb3VuY2lsIG1lbWJlcnMsIG90aGVyIHN0YWtlaG9sZGVycyBicmFpbnN0b3JtZWQgaWRlYXMgdG8gaW5jb3Jwb3JhdGUgcHVibGljIGFydCBvbiBNaWRkbGVmaWVsZCBSb2FkLCBhbmQgdGhyb3VnaG91dCBOb3J0aCBGYWlyIE9ha3MuIFRoZSB3b3JrZ3JvdXAgd2lsbCBiZSBob3N0aW5nIGEgc3RhdGlvbiBhdCB0aGUgY29tbXVuaXR5IG1lZXRpbmdzIGluIEFwcmlsIHRvIGdhdGhlciBtb3JlIGlucHV0IGZyb20gdGhlIGNvbW11bml0eS5cXG5cXG5bMF06IGh0dHA6Ly93d3cubmZvZm9yd2FyZC5vcmdcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyBRdWFydGVybHkgVXBkYXRlIGFzIG9mIERlY2VtYmVyIDMxLCAyMDEzXFxuXFxuX01pZGRsZWZpZWxkIFJvYWQgUmVkZXNpZ25fICBcXG5UaGUgTWlkZGxlZmllbGQgUm9hZCBSZWRlc2lnbiBQcm9qZWN0IGlzIGEga2V5IGNvbXBvbmVudCBvZiB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBQbGFuLiBPdmVyIHRoZSBwYXN0IHllYXIsIHR3byBjb21tdW5pdHkgd29ya2dyb3Vwcywgb25lIGZvY3VzZWQgb24gem9uaW5nIGFuZCB0aGUgb3RoZXIgb24gcGFya2luZywgaGF2ZSBiZWVuIGRldmVsb3Bpbmcgc3BlY2lmaWMgcmVjb21tZW5kYXRpb25zIGZvciB0aGUgZGVzaWduIGFuZCBkZXZlbG9wbWVudCBvZiBNaWRkbGVmaWVsZCBSb2FkLiBTdGFydGluZyBpbiBGZWJydWFyeSwgdGhlIHdvcmtncm91cCByZWNvbW1lbmRhdGlvbnMgd2lsbCBiZSBwcmVzZW50ZWQgdG8gdGhlIGVudGlyZSBOb3J0aCBGYWlyIE9ha3MgY29tbXVuaXR5IHRocm91Z2ggcHJpbnRlZCBhbmQgb24tbGluZSBtYXRlcmlhbHMgYW5kIG51bWVyb3VzIHNtYWxsIGdyb3VwIG1lZXRpbmdzLiBUaGlzIG91dHJlYWNoIGVmZm9ydCB3aWxsIGN1bG1pbmF0ZSBpbiBhIGNvbW11bml0eS13aWRlIG1lZXRpbmcgaW4gQXByaWwgMjAxNCB0byBjb25zaWRlciBhIHJvYWQgbGF5b3V0LCBzaWRld2FsayBkZXNpZ24sIHB1YmxpYyBhcnQgb3B0aW9ucyBhbmQgb3RoZXIgY29tcG9uZW50cyBvZiB0aGUgTWlkZGxlZmllbGQgUm9hZCBSZWRlc2lnbi4gQSBzZWNvbmQgY29tbXVuaXR5IG1lZXRpbmcsIHByZXNlbnRpbmcgdGhlIGZpbmFsIE1pZGRsZWZpZWxkIFJvYWQgY29uY2VwdHVhbCBkZXNpZ24gd2lsbCBiZSBoZWxkIGluIFNlcHRlbWJlciBvZiAyMDE0Llxcblxcbl9Db21tdW5pdHkgT3V0cmVhY2hfICBcXG5SZXNpZGVudCBlbmdhZ2VtZW50IGlzIHRoZSBmaXJzdCBzdGVwIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBQbGFuLiBPdXRyZWFjaCB3b3JrIHRvIGRhdGUgaGFzIGluY2x1ZGVkIGRldmVsb3BpbmcgYSBzdHJhdGVnaWMgb3V0cmVhY2ggcGxhbiB0aGF0IGluY2x1ZGVzIGEgY29tbXVuaXR5IHBhcnRuZXIgYW5kIHByZWZlcnJlZCBtZWRpYSBtYXRyaXggYW5kIGFuIG92ZXJhbGwgc3RydWN0dXJlIGZvciBvdXRyZWFjaCBpbiAyMDE0LCBkZXZlbG9waW5nIHRoZSBOb3J0aCBGYWlyIE9ha3MgRm9yd2FyZCB3ZWJzaXRlLCBwdWJsaXNoaW5nIHF1YXJ0ZXJseSBORk8gRm9yd2FyZCBuZXdzbGV0dGVycyBpbiBwcmludCBhbmQgb24tbGluZSwgY29udmVuaW5nIHF1YXJ0ZXJseSBjb21tdW5pdHkgdXBkYXRlIG1lZXRpbmdzIGFuZCBwcm92aWRpbmcgc3VwcG9ydCB0byB0aGUgZm91ciBjb21tdW5pdHkgd29ya2dyb3VwcyDigJMgcGFya3MsIHpvbmluZywgcGFya2luZyBhbmQgY29tbXVuaXR5IG91dHJlYWNoLiBJbnRlbnNpdmUgb3V0cmVhY2ggd29yayB0byBzaGFyZSB0aGUgd29ya2dyb3VwIHJlY29tbWVuZGF0aW9ucyB3aXRoIHRoZSBlbnRpcmUgY29tbXVuaXR5IGlzIGJlZ2lubmluZyBpbiBtaWQtSmFudWFyeSBmb3IgdGhlIFBhcmtzL0dyZWVuc3BhY2UgYW5kIE1pZGRsZWZpZWxkIFJvYWQgcmVkZXNpZ24gcHJvamVjdHMuXFxuXFxuX0VudHJ5IFNpZ25zXyAgXFxuQXQgdGhlaXIgSmFudWFyeSAyNywgMjAxNCBtZWV0aW5nLCB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsIHdpbGwgZGV2ZWxvcCBhIGNvbW11bml0eSBwcm9jZXNzIGZvciBzZWxlY3RpbmcgYSB3ZWxjb21lIHNpZ24gZGVzaWduIGFuZCBjb25maXJtaW5nIHNwZWNpZmljIGxvY2F0aW9ucyBmb3IgdGhlIHNpZ25zLiBUaGUgdGltZSBsaW5lIGZvciB0aGF0IHByb2Nlc3Mgd2lsbCBkZXRlcm1pbmUgdG8gd2hlbiB0aGUgc2lnbnMgd2lsbCBiZSBpbnN0YWxsZWQuIFxcblxcbl9JbGxlZ2FsIER1bXBpbmcg4oCTIFNpZ25zXyAgXFxuQ291bnR5IHN0YWZmIGFuZCB0aGUgTm9ydGggRmFpciBPYWtzIENvbW11bml0eSBDb3VuY2lsIGFyZSB3b3JraW5nIG9uIGEgY29tcHJlaGVuc2l2ZSBzdHJhdGVneSB0byByZWR1Y2UgaWxsZWdhbCBkdW1waW5nIGluIE5vcnRoIEZhaXIgT2Frcy4gQ291bnR5IHN0YWZmIGFyZSBkZXZlbG9waW5nIGFuIGVhc3kgcmVwb3J0aW5nIHByb2Nlc3MgZm9yIHRoZSBjb21tdW5pdHkgYW5kIGFuIGludGVybmFsIHRyYWNraW5nIHN5c3RlbS4gVG9nZXRoZXIsIHRoZXNlIHR3byBwcm9qZWN0cyB3aWxsIHJlZHVjZSByZXNwb25zZSB0aW1lcyB0byByZXBvcnRzIG9mIGlsbGVnYWwgZHVtcGluZy4gQSBDb21tdW5pdHkgQ291bmNpbCB3b3JrZ3JvdXAgaXMgZGV2ZWxvcGluZyBhIGNvbW11bml0eSBvdXRyZWFjaCBhbmQgZWR1Y2F0aW9uIGFuZCBwcm9ncmFtIHRvIGJyaW5nIGF0dGVudGlvbiB0byB0aGUgcHJvYmxlbS4gQ291bmNpbCBtZW1iZXJzIGFuZCBDb3VudHkgc3RhZmYgYXJlIHdvcmtpbmcgdG9nZXRoZXIgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IGxhbmd1YWdlIGFuZCBtb3N0IGFwcHJvcHJpYXRlIGxvY2F0aW9ucyBmb3IgdGhlIOKAnE5vIER1bXBpbmfigJ0gc2lnbnMgZnVuZGVkIGJ5IE1lYXN1cmUgQS4gVGhlIFNhbiBGcmFuY2lzY28gUHVibGljIFV0aWxpdGllcyBDb21taXNzaW9uIGlzIGFsc28gd29ya2luZyB3aXRoIHRoZSBDb3VuY2lsIGFuZCB0aGUgQ291bnR5IGFuZCB3aWxsIHJlY29tbWVuZCBsb2NhdGlvbnMgZm9yIHNpZ25zIGFsb25nIHRoZSBIZXRjaCBIZXRjaHkgcmlnaHQgb2Ygd2F5LiBcXG5cXG5fQmlrZSBTaGFyZSBTdGF0aW9uXyAgXFxuVGhlIHNpdGVzIGZvciB0aGUgYWRkaXRpb25hbCBCYXkgQXJlYSBCaWtlIFNoYXJlIHN0YXRpb25zIGluIFJlZHdvb2QgQ2l0eSBoYXZlIGJlZW4gc2VsZWN0ZWQgeWV0LiBJZiB0aGUgRmFpciBPYWtzIENvbW11bml0eSBDZW50ZXIgaXMgc2VsZWN0ZWQgYXMgYSBzaXRlLCB0aGVuIHRoZSBraW9zayBwYWQgd2lsbCBiZSBpbnN0YWxsZWQgdG8gbWVldCB0aGUgdGltZSBsaW5lIHByb3ZpZGVkIGJ5IEFsdGEsIHRoZSBiaWtlIHNoYXJlIHZlbmRvci5cXG5cXG5cIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIlBlcmNlbnQgb2YgTWlkZGxlZmllbGQgUm9hZCBSZWRlc2lnbiBQcm9qZWN0IENvbXBsZXRlZCBPbiBUaW1lIGFuZCBXaXRoaW4gQnVkZ2V0XCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIHByb2dyZXNzIG9mIG1pbGVzdG9uZXMgY29tcGxldGVkIGZvciB0aGUgTWlkZGxlZmllbGQgUm9hZCBSZWRlc2lnbiBQcm9qZWN0LlwiLFwiaWNvblwiOlwiZm9udFwiLFwicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXX0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxMy0wNi0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE5LTEyLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiJQZXJjZW50IENvbXBsZXRlIiwidGFyZ2V0IjoxMDAsInRhcmdldF90eXBlIjoicmVsYXRpdmUiLCJ0YXJnZXRfZGVsdGEiOjEwMCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOnRydWUsImJhc2VsaW5lIjowLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6IjZ5M2ItM2l1dyJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiYmFzZWxpbmVcIjp7XCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9LFwic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX19LFwiZWRpdFwiOntcImFjdGlvbl90eXBlXCI6XCJpbmNyZWFzZVwiLFwic3RhcnRcIjp7XCJtb250aFwiOjUsXCJ5ZWFyXCI6MjAxMyxcImRhdGVcIjpcInN0YXJ0XCJ9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjExLFwieWVhclwiOjIwMTl9LFwidGFyZ2V0X3R5cGVcIjpcInJlbGF0aXZlXCIsXCJwZXJjZW50X3VuaXRcIjp0cnVlfSxcIm5hbWVcIjpcIlByb2plY3RcIn0ifSwidXBkYXRlZF9hdCI6IjIwMTUtMDQtMjdUMTY6MDY6MzMuNjgzWiIsImNyZWF0ZWRfYXQiOiIyMDEzLTA5LTE3VDIwOjMzOjEyLjIyNFoiLCJ2ZXJzaW9uIjoiMjAxNS0wNC0yN1QxNjowNjozMy42ODNaIiwiaWQiOiJjeWU0LXZmNHAifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoicXc2Yy00YzR4IiwidXBkYXRlZF9hdCI6IjIwMTUtMTEtMTZUMTg6MDg6NDIuODc0WiIsImNyZWF0ZWRfYXQiOiIyMDEzLTA5LTE3VDIwOjMzOjEyLjI3OFoiLCJ2ZXJzaW9uIjoiMjAxNS0xMS0xNlQxODowODo0Mi44NzRaIiwiY3JlYXRlZF9ieSI6ImVjdTgtN3Y4cyJ9fQ==
      eyJzdGF0dXMiOjQwNCwiZGF0YSI6eyJjb2RlIjoibm90X2ZvdW5kIiwiZXJyb3IiOnRydWUsIm1lc3NhZ2UiOiJVc2VyIG5vdCBmb3VuZCJ9fQ==
      eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJzdGFydF9kYXRlIiwidmVyc2lvbiI6IjIwMTQtMDEtMjdUMjE6MzE6MTUuNzY5WiIsImlkIjoiNnkzYi0zaXV3IiwiY29sdW1uMSI6InBlcmNlbnRfY29tcGxldGUiLCJkYXRhc2V0IjoiM3Jhbi1ieTg0IiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJ2YWx1ZVR5cGVcIjpcInR3b1wifX0iLCJkYXRhc2V0X2RvbWFpbiI6InBlcmZvcm1hbmNlLnNtY2dvdi5vcmciLCJjcmVhdGVkX2F0IjoiMjAxMy0wOS0xOVQwODowOTo1OC44ODZaIiwidXBkYXRlZF9hdCI6IjIwMTQtMDEtMjdUMjE6MzE6MTUuNzY5WiJ9fQ==
      eyJzdGF0dXMiOjIwMCwiZGF0YSI6W3siaWQiOjEzMDksIm5hbWUiOiJHb3ZTdGF0IiwiY2hpbGRDb3VudCI6MCwiZGVmYXVsdCI6dHJ1ZSwiZG9tYWluQ05hbWUiOiJwZXJmb3JtYW5jZS5zbWNnb3Yub3JnIiwidHlwZSI6Imdvdl9zdGF0IiwidXBkYXRlZEF0IjoxNTE2ODMxMjY4LCJwcm9wZXJ0aWVzIjpbeyJuYW1lIjoic3VwcHJlc3NfZ292c3RhdCIsInZhbHVlIjpbIi9ob21lLXN0YWdpbmciLCIvc2hhcmVkLXZpc2lvbi1zdGFnaW5nIiwiL3NoYXJlZC12aXNpb24iLCIvc2FmZXR5LW5ldC1zdGFnaW5nIiwiL2xhbmRpbmctcGFnZS1zdGFnaW5nIiwiL2RlcGFydG1lbnQtcGFnZS1zdGFnaW5nIiwiL3N1c3RhaW5hYmlsaXR5LXN0YWdpbmciLCIvZGVwYXJ0bWVudHMiLCIvbWVhc3VyZS1hIiwiL21lYXN1cmUtayIsIi9zdXN0YWluYWJpbGl0eSIsIi9zYWZldHktbmV0IiwiL2NjcGkiXX0seyJuYW1lIjoiZGFzaGJvYXJkX2xheW91dCIsInZhbHVlIjoiZ3JpZF9mbG93In0seyJuYW1lIjoic3VwcHJlc3NfZ29hbF9jaGFydCIsInZhbHVlIjoiIn1dfV19
      eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJpZCI6IjM1M2Itc3p4biIsIm5hbWUiOiJNaWRkbGVmaWVsZCBSb2FkIFJlZGVzaWduIE1hcCIsImF0dHJpYnV0aW9uIjoiU2FuIE1hdGVvIENvdW50eSIsImF0dHJpYnV0aW9uTGluayI6Imh0dHA6Ly93d3cuc21jZ292Lm9yZy8iLCJhdmVyYWdlUmF0aW5nIjowLCJibG9iRmlsZW5hbWUiOiJNaWRkbGVmaWVsZF9ORk8uemlwIiwiYmxvYkZpbGVTaXplIjoxMjgwLCJibG9iSWQiOiJJNkxqcnZ2Q2VVaHFta2JzMFcyS2JEdzQxZHFVYVo1SFlLTmo4emtPN01FIiwiYmxvYk1pbWVUeXBlIjoiYXBwbGljYXRpb24vemlwOyBjaGFyc2V0PWJpbmFyeSIsImNhdGVnb3J5IjoiSG91c2luZyAmIERldmVsb3BtZW50IiwiY3JlYXRlZEF0IjoxNDA5MTc0Mjc0LCJkZXNjcmlwdGlvbiI6IlRoaXMgbWFwIHNob3dzIHRoZSBwb3J0aW9uIG9mIE1pZGRsZWZpZWxkIFJvYWQgaW4gTm9ydGggRmFpciBPYWtzIHRoYXQgd2lsbCBiZSByZWRlc2lnbmVkLiBDaGFuZ2VzIHdpbGwgYmUgbWFkZSB0byB0aGUgcHVibGljIHJpZ2h0IG9mIHdheSBvbmx5LCBhbmQgaW5jbHVkZSB0aGUgdW5kZXJncm91bmRpbmcgb2YgdXRpbGl0aWVzIGFzIHdlbGwgYXMgdGhlIHJlZGVzaWduIG9mIHNpZGV3YWxrcywgcGFya2luZyBhbmQgdHJhZmZpYyBsYW5lcy4iLCJkaXNwbGF5VHlwZSI6Im1hcCIsImRvbWFpbkNOYW1lIjoiZGF0YS5zbWNnb3Yub3JnIiwiZG93bmxvYWRDb3VudCI6MTMsImhpZGVGcm9tQ2F0YWxvZyI6ZmFsc2UsImhpZGVGcm9tRGF0YUpzb24iOmZhbHNlLCJpbmRleFVwZGF0ZWRBdCI6MTQ3MjMyNTk5OCwibGljZW5zZUlkIjoiUFVCTElDX0RPTUFJTiIsIm5ld0JhY2tlbmQiOnRydWUsIm51bWJlck9mQ29tbWVudHMiOjAsIm9pZCI6MTUxNDI1NjAsInByZXZpZXdJbWFnZUlkIjoiNjkzMjdiMGItYmUxYi00NmU2LWIwOTAtYjIzYWU4ODM5OGRjIiwicHJvdmVuYW5jZSI6Im9mZmljaWFsIiwicHVibGljYXRpb25BcHBlbmRFbmFibGVkIjpmYWxzZSwicHVibGljYXRpb25EYXRlIjoxNDA5MTc0Mjc2LCJwdWJsaWNhdGlvbkdyb3VwIjo1ODA2OTAzLCJwdWJsaWNhdGlvblN0YWdlIjoicHVibGlzaGVkIiwidGFibGVJZCI6NTgwNjkwMywidG90YWxUaW1lc1JhdGVkIjowLCJ2aWV3Q291bnQiOjMzMywidmlld0xhc3RNb2RpZmllZCI6MTQ3MjMyNTk4OSwidmlld1R5cGUiOiJnZW8iLCJjaGlsZFZpZXdzIjpbImJiYzQteXI3NSJdLCJjb2x1bW5zIjpbXSwiZGlzcGxheUZvcm1hdCI6eyJwbG90U3R5bGUiOiJwb2ludCJ9LCJncmFudHMiOlt7ImluaGVyaXRlZCI6ZmFsc2UsInR5cGUiOiJ2aWV3ZXIiLCJmbGFncyI6WyJwdWJsaWMiXX1dLCJsaWNlbnNlIjp7Im5hbWUiOiJQdWJsaWMgRG9tYWluIn0sIm1ldGFkYXRhIjp7ImdlbyI6eyJiYm94IjoiLTEyMi4yMTEyMDU5NTkzMjAxOCwzNy40NzE1NTQzMzgxOTEwNTUsLTEyMi4yMDQwNjA1NTQ1MDQ1MSwzNy40NzY0MjQ3NTkyMDA1NyIsIm93c1VybCI6Ii9hcGkvZ2Vvc3BhdGlhbC8zNTNiLXN6eG4iLCJsYXllcnMiOiJiYmM0LXlyNzUiLCJmZWF0dXJlSWRBdHRyaWJ1dGUiOiJfU29jcmF0YUlEIiwibmFtZXNwYWNlIjoiXzM1M2Itc3p4biIsImlzTmJlIjp0cnVlLCJiYm94Q3JzIjoiRVBTRzo0MzI2In0sImN1c3RvbV9maWVsZHMiOnsiRGVwYXJ0bWVudHMiOnsiRGVwYXJ0bWVudCI6IkluZm9ybWF0aW9uIFNlcnZpY2VzIn0sIlNoYXJlZCBWaXNpb24gMjAyNSI6eyJDYXRlZ29yeSI6IkxpdmFibGUgQ29tbXVuaXR5In0sIkRpbWVuc2lvbnMiOnsiVGVtcG9yYWwiOiIyMDE0IiwiU3BhdGlhbCI6IjM3LjQ3Njg0NyAtMTIyLjIxMTM3NiwgMzcuNDcxNTU0IC0xMjIuMjA0MDYxIn19LCJhdmFpbGFibGVEaXNwbGF5VHlwZXMiOlsibWFwIiwidGFibGUiLCJmYXRyb3ciLCJwYWdlIl0sInJlbmRlclR5cGVDb25maWciOnsidmlzaWJsZSI6eyJtYXAiOnRydWV9fX0sIm93bmVyIjp7ImlkIjoiNHV6aS1idzY1IiwiZGlzcGxheU5hbWUiOiJKb2huIFJpZGVuZXIiLCJwcm9maWxlSW1hZ2VVcmxMYXJnZSI6Ii9hcGkvdXNlcnMvNHV6aS1idzY1L3Byb2ZpbGVfaW1hZ2VzL0xBUkdFIiwicHJvZmlsZUltYWdlVXJsTWVkaXVtIjoiL2FwaS91c2Vycy80dXppLWJ3NjUvcHJvZmlsZV9pbWFnZXMvVEhVTUIiLCJwcm9maWxlSW1hZ2VVcmxTbWFsbCI6Ii9hcGkvdXNlcnMvNHV6aS1idzY1L3Byb2ZpbGVfaW1hZ2VzL1RJTlkiLCJzY3JlZW5OYW1lIjoiSm9obiBSaWRlbmVyIiwidHlwZSI6ImludGVyYWN0aXZlIiwiZmxhZ3MiOlsibWF5QmVTdG9yaWVzQ29Pd25lciJdfSwicXVlcnkiOnt9LCJyaWdodHMiOlsicmVhZCJdLCJ0YWJsZUF1dGhvciI6eyJpZCI6IjR1emktYnc2NSIsImRpc3BsYXlOYW1lIjoiSm9obiBSaWRlbmVyIiwicHJvZmlsZUltYWdlVXJsTGFyZ2UiOiIvYXBpL3VzZXJzLzR1emktYnc2NS9wcm9maWxlX2ltYWdlcy9MQVJHRSIsInByb2ZpbGVJbWFnZVVybE1lZGl1bSI6Ii9hcGkvdXNlcnMvNHV6aS1idzY1L3Byb2ZpbGVfaW1hZ2VzL1RIVU1CIiwicHJvZmlsZUltYWdlVXJsU21hbGwiOiIvYXBpL3VzZXJzLzR1emktYnc2NS9wcm9maWxlX2ltYWdlcy9USU5ZIiwic2NyZWVuTmFtZSI6IkpvaG4gUmlkZW5lciIsInR5cGUiOiJpbnRlcmFjdGl2ZSIsImZsYWdzIjpbIm1heUJlU3Rvcmllc0NvT3duZXIiXX0sInRhZ3MiOlsibm9ydGggZmFpciBvYWtzIiwic3RyZWV0cyIsImRlc2lnbiJdLCJmbGFncyI6WyJkZWZhdWx0Il19fQ==
      eyJzdGF0dXMiOjQwNCwiZGF0YSI6eyJjb2RlIjoibm90X2ZvdW5kIiwiZXJyb3IiOnRydWUsIm1lc3NhZ2UiOiJDYW5ub3QgZmluZCB2aWV3IHdpdGggaWQgM3Jhbi1ieTg0In19