                            TERMS OF USE
                      Effective August 1, 2012

PLEASE READ THESE TERMS OF USE ("AGREEMENT") CAREFULLY BEFORE USING
THE SERVICES OFFERED BY FILEFRONT, LLC (THE "COMPANY"). THE
WWW.GAMEFRONT.COM WEBSITE AND DOMAIN NAME, AND ANY OTHER FEATURES,
CONTENT, OR APPLICATIONS OFFERED FROM TIME TO TIME BY THE COMPANY IN
CONNECTION THEREWITH (COLLECTIVELY "WEBSITE") ARE OWNED AND OPERATED
BY THE COMPANY. THIS AGREEMENT SETS FORTH THE LEGALLY BINDING TERMS
AND CONDITIONS FOR YOUR USE OF THE WEBSITE. BY USING THE WEBSITE IN
ANY MANNER, INCLUDING BUT NOT LIMITED TO VISITING OR BROWSING THE
WEBSITE, YOU AGREE TO BE BOUND BY THIS AGREEMENT AND THE COMPANY'S
PRIVACY POLICY POSTED ON THE WEBSITE, WHICH IS INCORPORATED HEREIN BY
THIS REFERENCE. THIS AGREEMENT APPLIES TO ALL USERS OF THE WEBSITE,
INCLUDING USERS WHO ARE ALSO CONTRIBUTORS OF VIDEO CONTENT,
INFORMATION, AND OTHER MATERIALS OR SERVICES ON THE WEBSITE.

You may at any time request a copy of this Agreement by emailing us
at: [1]customersupport@gamefront.com, Subject: Terms of Use.

1. MODIFICATIONS TO THIS AGREEMENT

COMPANY RESERVES THE RIGHT, IN ITS SOLE DISCRETION, TO MODIFY THIS
AGREEMENT AT ANY TIME BY POSTING A NOTICE ON THE WEBSITE, OR BY
SENDING YOU A NOTICE VIA EMAIL OR POSTAL MAIL. YOU SHALL BE
RESPONSIBLE FOR REVIEWING AND BECOMING FAMILIAR WITH ANY SUCH
MODIFICATIONS. SUCH MODIFICATIONS ARE EFFECTIVE UPON FIRST POSTING OR
NOTIFICATION, AND USE OF THE WEBSITE OR ANY SERVICES BY YOU FOLLOWING
SUCH POSTING OR NOTIFICATION CONSTITUTES YOUR ACCEPTANCE OF THE TERMS
AND CONDITIONS OF THIS AGREEMENT AS MODIFIED. YOU AGREE TO REVIEW THIS
AGREEMENT REGULARLY TO ENSURE THAT YOU ARE UPDATED AS TO ANY CHANGES.
THIS AGREEMENT, TOGETHER WITH THE COMPANY PRIVACY POLICY AND ANY OTHER
LEGAL NOTICES PUBLISHED BY COMPANY ON THE WEBSITE, SHALL CONSTITUTE
THE ENTIRE AGREEMENT BETWEEN YOU AND COMPANY CONCERNING THE WEBSITE.

2. WEBSITE ACCESS

2.1 Subject to your compliance on a continuing basis with all of the
terms and conditions of this Agreement, Company hereby grants you
permission to use the Website only as set forth in this Agreement, and
provided that: (i) your use of the Website as permitted is solely for
your personal, noncommercial use; (ii) you will not copy or distribute
any part of the Website in any medium without Company's prior written
authorization; (iii) you will not alter or modify any part of the
Website other than as expressly authorized and then only for such
express purpose; (iv) you may not circumvent, disable, violate or
attempt to violate, or otherwise interfere with the security or
integrity of the Website, the proper operation of the Website, the
features that prevent or restrict use or copying of any Content (as
the term is defined below) or enforce limitations on use of the
Website or the Content therein, or interfere with any activity being
conducted on the Website; (v) you may not decipher, decompile,
disassemble or reverse engineer any of the software comprising or in
any way making up part of the Website; and (vii) you may not link to
the Website without Company's prior written consent.

2.2 In order to access some features of the Website, you will have to
create a membership account. You may never use another's account,
username or password without permission. When creating your account,
you must provide accurate and complete information. You are solely
responsible for the activity that occurs on your account, and you must
keep your account password secure. You must notify Company immediately
of any breach of security or unauthorized use of your account. You may
be required to expressly accept or reject these Terms of Use when you
register; you agree that any requirement that you do so does not in
any way vitiate your assent to comply with the Terms of Use. Although
Company will not be liable for your losses caused by any unauthorized
use of your account, you may be liable for the losses of Company or
others due to such unauthorized use.

2.3 You agree not to use or launch any automated system, including
without limitation, "robots," "spiders," "offline readers," etc., that
accesses the Website in a manner that sends more request messages to
the Company servers in a given period of time than a single human can
reasonably produce in the same period by using a conventional web
browser. You agree not to collect or harvest any personally
identifiable information, including account names, from the Website,
nor to use the communication systems provided by the Website for any
commercial solicitation purposes. You agree not to solicit, for
commercial purposes, any users of the Website with respect to their
"User Submissions," as that term is defined below. You agree that your
User Submissions both will not involve the transmission of "junk
mail," "chain letters," "spamming," or other unsolicited mass
mailings, and will not contain restricted or password only access
pages or hidden pages or images. Company reserves the right in its
sole discretion to block access or discontinue services to offenders,
and to investigate and take appropriate legal action against anyone
who, in Company's sole discretion, violates this provision, including
without limitation, reporting you to law enforcement authorities.

3. INTELLECTUAL PROPERTY RIGHTS

The content on the Website, except any and all User Submissions,
including without limitation, the text, software, scripts, graphics,
files, images, photos, sounds, music, videos, interactive features and
the like (collectively "Content") and the trademarks, service marks
and logos contained therein ("Marks"), are owned by or licensed to
Company, subject to copyright and other intellectual property rights
under United States and foreign laws and international conventions.
Company reserves all rights not expressly granted in and to the
Website and the Content. For clarity, as between the parties, you own
the User Submissions that you create. You agree to not use, copy,
reproduce, modify, translate, publish, broadcast, transmit,
distribute, perform, upload, display, license, sell or otherwise
exploit for any other purposes whatsoever any Content, including, but
not limited to, image, audio, and visual content, Marks, third party
User Submissions, or other proprietary rights not owned by you, (i)
without the express prior written consent of the respective owners,
and (ii) in any way that violates any right of any third party. If you
download or print a copy of the Content for personal use, you must
retain all copyright and other proprietary notices contained therein.

4. TERM

This Agreement shall remain in full force and effect while you use the
Website. Company may terminate your access to the Website or your
membership at any time, for any reason, and without warning.

5. USER SUBMISSIONS

5.1 The Website may now, or in the future, permit the submission of
recordings, videos or other communications submitted by you and other
users ("User Submissions") and the hosting, sharing, and/or publishing
of such User Submissions. You understand that whether or not such User
Submissions are published, Company does not guarantee any
confidentiality with respect to any such submissions.

5.2 You shall be solely responsible for your own User Submissions and
the consequences of posting or publishing them. You agree that Company
has no liability with respect to any User Submissions, including,
without limitation, your own submissions, and you hereby irrevocably
release Company and its officers and directors, employees, agents,
representatives and affiliates, from any and all liability arising out
of or relating to User Submissions or any part thereof. In connection
with your User Submissions, you affirm, represent, and warrant that
you can and will demonstrate to Company's full satisfaction upon its
request that: (i) you own or have the necessary licenses, rights,
consents, and permissions to use and authorize Company to use each and
every image and sound contained in each such User Submission and to
enable inclusion and use of such User Submissions in the manner
contemplated by the Website and this Agreement; (ii) specifically, you
have the written consent, release, and/or permission of each and every
identifiable individual person in the User Submission to use the name
or likeness of each and every such identifiable individual person to
enable inclusion and use of the User Submissions in the manner
contemplated by the Website and this Agreement; and (iii)
specifically, the posting of your User Submission on or through the
Website does not violate the privacy rights, publicity rights,
copyrights, contract rights, or any other rights of any person or
entity. You agree to pay all royalties, fees, and other monies owing
any person or entity by reason of any content posted by you to or
through the Website. By submitting your User Submissions to the
Website, you hereby give Company all rights and licenses necessary to
use and otherwise exploit the User Submissions for any purpose in
connection with the Website and Company's other related services.
These rights are nonexclusive and irrevocable, but you remain the
owner of the User Submissions that you create. You also hereby do and
shall grant each user of the Website a non-exclusive license to access
your User Submissions through the Website, and to use, modify,
reproduce, distribute, prepare derivative works of, display and
perform such User Submissions as permitted through the functionality
of the Website and under this Agreement.

5.3 In connection with User Submissions, you further agree that you
will not: (i) publish falsehoods or misrepresentations that could
damage Company or any third party; (ii) submit material that is
unlawful, obscene, lewd, defamatory, libelous, threatening,
pornographic, harassing, hateful, racially or ethnically offensive,
excessively violent, or encourages conduct that would be considered a
criminal offense, give rise to civil liability, violate any law, or is
otherwise inappropriate or objectionable; (iii) post advertisements or
solicitations of business; or (iv) impersonate another person. Company
does not endorse any User Submission or any opinion, recommendation,
or advice expressed therein, and Company expressly disclaims any and
all responsibility or liability in connection with User Submissions.

5.4 Company reserves the right to decide whether Content or a User
Submission is inappropriate, or violates this Agreement, including
without limitation, due to copyright infringement, violations of
intellectual property law, pornography, obscene or defamatory
material, or excessive length. Company also reserves the right, in its
sole discretion, to reject, refuse to post or remove any posting
(including private messages and User Submissions) by you, or to
restrict, suspend or terminate your access to all or any part of the
Website at any time, for any reason, without prior notice.
Notwithstanding the foregoing, Company assumes no responsibility for
monitoring the Website, Content, or User Submissions for inappropriate
conduct, or modifying or removing such conduct, Content or User
Submissions from the Website. Without limiting the generality of the
foregoing, it is Company's policy to delete User Submissions uploaded
anonymously after seven (7) days of inactivity, and User Submissions
uploaded through a registered account after sixty (60) days of
inactivity.

5.5 In particular, if you are a copyright owner or an agent thereof
and believe that any User Submission or other content infringes upon
your copyrights, you may submit a notification pursuant to the Digital
Millennium Copyright Act ("DMCA") by providing our Copyright Agent
with the following information in writing (see 17 U.S.C 512(c)(3) for
further detail):

(a) A physical or electronic signature of a person authorized to act
on behalf of the owner of an exclusive right that is allegedly
infringed;

(b) A description of the copyrighted work claimed to have been
infringed, or, if multiple copyrighted works at a single online site
are covered by a single notification, a representative list of such
works at that site;

(c) Identification of the material that is claimed to be infringing or
to be the subject of infringing activity and that is to be removed or
access to which is to be disabled and information reasonably
sufficient to permit the service provider to locate the material;

(d) Information reasonably sufficient to permit the service provider
to contact you, such as an address, telephone number, and, if
available, an electronic mail address;

(e) A statement that you have a good faith belief that use of the
material in the manner complained of is not authorized by the
copyright owner, its agent, or the law; and

(f) A statement that the information in the notification is accurate,
and under penalty of perjury, that you are authorized to act on behalf
of the owner of an exclusive right that is allegedly infringed.

To submit a notice of claimed infringement, please fill out a ticket
[2]here. You acknowledge that if you fail to comply with all of the
requirements of this Section, your DMCA notice may not be valid.

You hereby agree that you shall not assert any claim against the
Company or its officers or directors with respect to such content
unless and until: (1) you have fully completed the process set forth
above; and (2) the Company has failed to remove the offending content
within thirty (30) days after such notification without a reasonable
explanation for its failure to do so.

It is Company's policy to (1) block access to or remove Content that
it believes in good faith to be copyrighted material that has been
illegally copied, displayed or distributed by any of our advertisers,
affiliates, content providers, members or users; and (2) remove and
discontinue services to repeat offenders.

5.6 Company reserves the right to discontinue any aspect of the
Website at any time.

6. THIRD PARTY WEBSITES

The Website may contain links to third party websites that are not
owned or controlled by Company. When you access third party websites,
you do so at your own risk. Company encourages you to be aware when
you leave the Website and to read the terms and conditions and privacy
policy of each third party website that you visit. Company has no
control over, and assumes no responsibility for, the content,
accuracy, privacy policies, or practices of, or opinions expressed in
any third party websites. In addition, Company will not and cannot
monitor, verify, censor or edit the content of any third party site.
By using the Website, you expressly relieve Company from any and all
liability arising from your use of any third party website.

7. WARRANTY DISCLAIMER

TO THE FULLEST EXTENT PERMITTED BY LAW, COMPANY, ITS SUPPLIERS AND
EACH OF THEIR RESPECTIVE OFFICERS, DIRECTORS, EMPLOYEES, AND AGENTS
DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE
WEBSITE AND YOUR USE THEREOF, INCLUDING WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN ADDITION,
NEITHER COMPANY NOR ITS SUPPLIERS, NOR ANY OF THEIR RESPECTIVE
OFFICERS, DIRECTORS, EMPLOYEES, AND AGENTS, MAKES ANY WARRANTIES OR
REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE WEBSITE'S
CONTENT OR THE CONTENT OF ANY SITES LINKED TO THE WEBSITE, AND ASSUMES
NO LIABILITY OR RESPONSIBILITY FOR ANY (I) ERRORS, MISTAKES, OR
INACCURACIES OF CONTENT; (II) PERSONAL INJURY OR PROPERTY DAMAGE, OF
ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE
WEBSITE; (III) ANY UNAUTHORIZED ACCESS TO OR USE OF THE SECURE SERVERS
AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION
STORED THEREIN; (IV) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO
OR FROM THE WEBSITE; (V) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE
WHICH MAY BE TRANSMITTED TO OR THROUGH THE WEBSITE BY ANY THIRD PARTY;
AND/ OR (VI) ANY ERRORS OR OMISSIONS IN ANY CONTENT OR FOR ANY LOSS OR
DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT
POSTED, EMAILED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE
WEBSITE. COMPANY DOES NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME
RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A
THIRD PARTY THROUGH THE WEBSITE OR ANY HYPERLINKED WEBSITE OR FEATURED
IN ANY ADVERTISING, AND COMPANY WILL NOT BE A PARTY TO OR IN ANY WAY
BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND
THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. THE WEBSITE IS
CONTROLLED AND OFFERED BY COMPANY FROM ITS FACILITIES IN THE UNITED
STATES OF AMERICA. COMPANY MAKES NO REPRESENTATIONS THAT THE WEBSITE
IS APPROPRIATE OR AVAILABLE FOR USE IN OTHER LOCATIONS. THOSE WHO
ACCESS OR USE THE WEBSITE FROM OTHER JURISDICTIONS ARE RESPONSIBLE FOR
COMPLIANCE WITH LOCAL LAW.

8. INDEMNITY

You agree to defend, indemnify and hold harmless Company, its parent
corporation, officers, directors, employees and agents, from and
against any and all claims, damages, obligations, losses, liabilities,
costs or debt, demands, and expenses (including but not limited to
attorneys' fees) arising from: (i) your use of and access to the
Website or any Content that you post thereon; (ii) your violation of
any term of this Agreement or your representations and warranties set
forth above; (iii) your violation of any third party right, including
without limitation any copyright, property, or privacy right; or (iv)
any claim that one of your User Submissions caused damage to a third
party.

9. ELIGIBILITY

By using the Website, you represent and warrant that (i) all
registration information you submit is accurate and truthful; (ii) you
will maintain the accuracy of such information; (iii) you are 18 years
of age or older (if you are agreeing to these terms and conditions on
behalf of a minor, you certify to Company that you are such minor's
legal guardian); and (iv) your use of the Website does not violate any
applicable law or regulation. Your profile may be deleted and your
membership may be terminated without warning, if Company believes that
you are under 16 years of age.

10. LIMITATION OF LIABILITY

IN NO EVENT SHALL COMPANY, ITS SUPPLIERS, OR THEIR RESPECTIVE
OFFICERS, DIRECTORS, EMPLOYEES, OR AGENTS, BE LIABLE TO YOU OR ANY
THIRD PARTY FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, OR
CONSEQUENTIAL DAMAGES WHATSOEVER, INCLUDING LOST PROFITS, WHETHER
BASED ON WARRANTY, CONTRACT, TORT, OR ANY OTHER LEGAL THEORY, AND
WHETHER OR NOT THE COMPANY IS ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES. THE FOREGOING LIMITATION OF LIABILITY SHALL APPLY TO THE
FULLEST EXTENT PERMITTED BY LAW IN THE APPLICABLE JURISDICTION.
SUBJECT TO THE FOREGOING, COMPANY'S LIABILITY TO YOU FOR ANY REASON,
WILL BE LIMITED TO THE AMOUNT PAID, IF ANY, BY YOU TO COMPANY FOR THE
COMPANY SERVICES IN CONNECTION WITH THE WEBSITE.

YOU SPECIFICALLY ACKNOWLEDGE THAT COMPANY SHALL NOT BE LIABLE FOR USER
SUBMISSIONS OR THE DEFAMATORY, OFFENSIVE, OR ILLEGAL CONDUCT OF ANY
THIRD PARTY AND THAT THE RISK OF HARM OR DAMAGE FROM THE FOREGOING
RESTS SOLELY AND ENTIRELY WITH YOU.

11. ASSIGNMENT

You may not transfer or assign this Agreement or any rights and
licenses granted hereunder without the Company's prior written
consent. The Company may freely transfer, assign, or delegate this
Agreement, and any of its rights or obligations hereunder.

12. MISCELLANEOUS

If there is any dispute about or involving the Website, you agree that
the dispute shall be governed by the laws of the State of California,
without regard to conflict of laws provisions. Any dispute arising
from or relating to the subject matter of this Agreement shall be
finally settled by arbitration in Los Angeles, California, using the
English language in accordance with the Arbitration Rules and
Procedures of Judicial Arbitration and Mediation Services, Inc.
("JAMS") then in effect, by one commercial arbitrator(s) with
substantial experience in resolving intellectual property and
commercial contract disputes, who shall be selected from the
appropriate list of JAMS arbitrators in accordance with the
Arbitration Rules and Procedures of JAMS. Any arbitrator so selected
shall have substantial experience in the media industry. The
arbitrator shall have the authority to grant specific performance and
to allocate between the parties the costs of arbitration (including
service fees, arbitrator fees and all other fees related to the
arbitration) in such equitable manner as the arbitrator may determine.
The prevailing party in the arbitration shall be entitled to receive
reimbursement of its reasonable expenses (including reasonable
attorneys' fees, expert witness fees and all other expenses) incurred
in connection therewith. Judgment upon the award so rendered may be
entered in a court having jurisdiction or application may be made to
such court for judicial acceptance of any award and an order of
enforcement, as the case may be. Notwithstanding the foregoing, each
party shall have the right to institute an action in a court of proper
jurisdiction for preliminary injunctive relief pending a final
decision by the arbitrator. For all purposes of this Agreement, the
parties consent to exclusive jurisdiction and venue in the United
States Federal Courts located in Los Angeles, California. If any
provision of this Agreement is deemed invalid by a court of competent
jurisdiction, the invalidity of such provision shall not affect the
validity of the remaining provisions of this Agreement, which shall
remain in full force and effect. No waiver of any term of this
Agreement shall be deemed a further or continuing waiver of such term
or any other term, and Company's failure to assert any right or
provision under this Agreement shall not constitute a waiver of such
right or provision. YOU AND COMPANY AGREE THAT ANY CAUSE OF ACTION
ARISING OUT OF OR RELATED TO THE WEBSITE MUST COMMENCE WITHIN ONE (1)
YEAR AFTER THE CAUSE OF ACTION ACCRUES. OTHERWISE, SUCH CAUSE OF
ACTION IS PERMANENTLY BARRED.

1. mailto:customersupport@gamefront.com
2. https://breakmedia.zendesk.com/anonymous_requests/new
