No worries, check our website to see what's next fundrequest.io
--
Days
:
--
Hours
:
--
Minutes
:
--
Seconds
Round 1
- OPEN- CLOSED
The first 24 hours of the token sale will be individually capped with a minimum and maximum contribution
per
person.
Minimum contribution : 0,01 ETH
Maximum contribution : 1 ETH
Gas Limit : 350 000
Round 2
- OPEN- CLOSED
February 13 at 10 AM CET (9 AM UTC).
The individual cap per person is lifted. It is now possible to contribute more than 1 ETH until the hard
cap
is reached.
Minimum contribution : 0,01 ETH
Maximum contribution : no limit until hard cap reached
Token Sale Terms & Conditions
Version 1.0
A Decentralised Platform for Rewarding Open Source Contributions using Smart Contracts.
This document is for informational purposes only and does not constitute an offer or
solicitation to
sell shares or securities in
FundRequest or any related or associated company. Any such offer or solicitation would be made
only
by means of a confidential offering memor
andum and in accordance with the terms of all applicable securities and other laws.
The following Terms and Conditions ("Terms") govern the token sale funding of the FundRequest
project. The FundRequest project
("FundRequest") entails the development of a decentralised platform for rewarding open source
contributions.
The FundRequest Platform ("the Platform") is being developed by a volunteer contributor team
("FundRequest Team"), and will continue to be
developed by volunteer developers as well as under a more formalised contracting or employment
relationship for other developers.
This document is not a solicitation for investment and does not pertain in any way to an
offering of
securities in any jurisdiction. Throughout this
document, the terms "Donor" and "Participant" will be used interchangeably to designate parties
partaking in the token sale. Participation in the to
ken sale does not constitute the acquisition of a security or equity stake in this project, or
in
any organization that may be associated with
FundRequest.
Table of Contents
1 Obligation to Determine If Donator Can Participate in the Token Sale or Purchase FND in
Donor's
Jurisdiction
2 Acceptance of Terms and Conditions of the FND token sale
3 Independent Confirmation of Donation
4 Loss of the Donation Password Will Cause the Loss of the right to receive FND
5 Donations will only be accepted by the FundRequest Website
6 Fraudulent Attempts to Double Spend ETH
7 Certain Risks Associated with the Donation to FundRequest in order to receive FND
7.1 Risk of Dissolution of The FundRequest Project Due To a Diminishment in the Value of the ETH
Sale Revenue
7.2 Risk of Losing Access to FND Due to Loss of a Wallet File or Password
7.3 Risk of Unauthorised Access to a Wallet
7.4 Risk of Regulatory Action in One or More Jurisdictions
7.5 Risk of Insufficient Interest in the FundRequest Platform
7.6 Risk Associated With the Development of Other Platforms like FundRequest
7.7 Risk that the FundRequest Platform, As Developed, Will Not Meet the Expectations of Donor
7.8 Risk that the FundRequest Platform May Never be Completed or Released
7.9 Risk of Theft
7.10 Risk of Security Weaknesses in the FundRequest Platform Software
7.11 Risk of Weaknesses or Exploitable Breakthroughs in the Field of Cryptography
7.12 Risk of Ether Mining Attacks
7.13 Risk of Rapid Adoption and Insufficiency of Computational Application Processing Power on
the
FundRequest Network
8 All Donations during the token sale and the Purchases of FundRequest tokens (FND) Are
Non-Refundable
9 Taxation of FND token and Taxation Related to the FundRequest Token Sale
10 Privacy
11 Disclaimer of Warranties
12 Limitations Waiver of Liability
13 Jurisdiction of the token sale event
14 Dispute Resolution
15 Force Majeure
16 Complete Agreement
17 Severability
18 Waiver of liability of the FundRequest team
19 No Waiver
20 Updates to the Terms and Conditions of the FundRequest Token Sale
21 Cooperation with Legal Authorities
22 Conflicting terms and conditions with applicable legislation
23 Further Information
The FND token
FND tokens are cryptographic tokens created by FundRequest only upon successful completion of
the
token sale. The token sale is successful
when the minimum cap ("Minimum Cap") is reached at the end of the token sale. The "Minimum Cap"
is
set at 2 million USD in Ethereum token
equivalent measured at the end of the token sale. Donations received during the private seed,
and
the public seed, and the strategic advisor
presale will be taken into account towards this Minimum Cap. Following their creation, FND
tokens
are transferred to Donors as an expression of
appreciation and gratitude and an acknowledgement of their support. FundRequest is not
accountable
should any Donor or Third Party attach
(monetary) value to the FND token.
The ownership of FND Tokens is a reward based return and not intended to be any form of loan
based
return. The digital token known as FND is
only useful for identifying your contribution to the crowdsale. This document describes the
FundRequest token sale. Parties may be interested in
donating funds in the token sale of FundRequest to support the development of the FundRequest
Platform. Individuals, businesses, and other
organisations should carefully weigh the risks, costs, and benefits of donating funds to the
FundRequest project.
IMPORTANT
Donations to the FundRequest project carry no rights expressed or implied. Donations to the
FundRequest project are non-refundable.
Donors should have no expectation of influence over governance of the platform.
By participating in the token sale, you acknowledge and represent that you have carefully
reviewed
the Terms and fully understand the risks,
costs, and benefits of participating and agree to be bound by these Terms. As set forth further
below, you further represent and warrant that, to
the extent permitted by law, you are authorised to participate in the token sale in your
relevant
jurisdiction, are of a legal age to be bound by these
Terms, and will not hold FundRequest, its parents and affiliates, and the officers, directors,
agents, joint ventures, owners, founders, employees,
developers, volunteers and/or suppliers of FundRequest or our parents or affiliates, now or in
the
future and any other member of the
FundRequest Team (collectively all people who contribute to the FundRequest platform) liable for
any
losses or any special, incidental, or
consequential damages arising out of, or in any way connected to the token sale of FND.
WARNING: DO NOT PARTICIPATE IN THE TOKEN SALE IF YOU ARE NOT AN EXPERT IN DEALING WITH
CRYPTOGRAPHIC
TOKENS
AND BLOCKCHAIN-BASED SOFTWARE SYSTEMS
Participation in the token sale should be undertaken only by individuals, entities, or companies
that have significant experience with, and
understanding of, the usage and intricacies of cryptographic tokens, such as, but not limited to
bitcoin (BTC), and blockchain-based software
systems.
While the FundRequest Team will provide general guidelines for user usage and storage of FND
before
the FundRequest Platform becomes
operational, Donors should have functional understanding of storage and transmission mechanisms
associated with other cryptographic tokens.
While the FundRequest Team will be available to assist Donors to FundRequest during and after
the
token sale, FundRequest will not be
responsible for lost ETH or FND resulting from actions taken by, or omitted by Donors. Note, in
particular, that FundRequest Donors should take
great care to store their wallet password safely to retain access to their FND tokens.
If you do not have such experience or expertise, then you should not participate in the FND
token
sale.
WARNING: CRYPTOGRAPHIC TOKENS OF VALUE MAY EXPERIENCE EXTREME VOLATILITY IN PRICING
Cryptographic tokens that possess value on public exchanges, such as BTC, have demonstrated
extreme
fluctuations in price over short periods
of time on a regular basis. If the FND token would be listed on exchanges in the future, then
FND
Donors should be prepared to expect similar
fluctuations, both down and up, in the price of FND denominated in either another cryptocurrency
or
United States Dollars ("USD") or other fiat
money of other jurisdictions. Such fluctuations are due to market forces and represent changes
in
the balance of supply and demand.
FundRequest cannot and does not guarantee market liquidity for FND and therefore there may be
periods of time in which FND is difficult to buy
and/or sell. Additionally, due to different regulatory dictates in different jurisdictions and
the
inability of citizens of certain countries to open
accounts at exchanges located anywhere in the world, the liquidity of FND may be markedly
different
in various countries and this would likely be
reflected in significant price discrepancies.
By participating in the token sale, you expressly acknowledge and represent that you fully
understand that FND may experience volatility in pricing
and will not seek to hold any of the FundRequest Parties liable for any losses or any special,
incidental, or consequential damages arising from, or
in any way connected to the token sale of FND.
WARNING: THE PARTICIPATION IN THE TOKEN SALE OF FND HAS A NUMBER OF RISKS
Donation to FundRequest in order to receive FND carries with it a number of risks. Prior to
donating, you should carefully consider the risks listed
below and, to the extent necessary, consult an appropriate lawyer, accountant, or tax
professional.
If any of the following risks are unacceptable
to you, you should not participate in the token sale nor purchase FND. By participating in the
token
sale or purchasing FND, and to the extent
permitted by law, you are agreeing not to hold any of the FundRequest Parties liable for any
losses
or any special, incidental, or consequential
damages arising from, or in any way connected, to the token sale, including losses associated
with
the risks set forth below.
Obligation to Determine If Donator Can Participate in the Token Sale or
Purchase FND in Donor's Jurisdiction
The FundRequest token sale constitutes the donation of Ether to FundRequest under Estonian law.
This
token sale is conducted by
FundRequest OÜ, an Estonian organisation, operating under Estonian law. It is the responsibility
of
each potential Donor to FundRequest to
determine if the Donor can legally partake in the token sale and/or purchase FND in the
Donator's
jurisdiction.
The FundRequest token sale is an offer made by FundRequest OÜ in Estonia, Belgium and France (to
be
extended when legal analysis for other
countries are ready) for residents of these counries. Residents of other countries can only
partake
if, by law, the can partake to such an offer in Es
tonia, Belgium and France (to be extended when legal analysis for other countries are ready).
Acceptance of Terms and Conditions of the FND token sale
As a first step in the donation process, FundRequest will present the Donor with the Terms &
Conditions of the Token Sale Terms & Condidtions,
and any other associated documents, along with a checkbox. By clicking the checkbox, the Donor:
(i)
consents and agrees to the Terms &
Conditions; (ii) represents and warrants that the Donor is legally permitted to partake in the
token
sale and/or purchase FND in the Donor's
jurisdiction and is legally permitted to receive products of Estonian origin (iii) represents
and
warrants that the Donor is of a legal age to donate to
FundRequest or has received permission from a legal guardian who has reviewed and agreed to
these
Terms; (iv) represents and warrants that
the the Donor will take sole responsibility for any restrictions and risks associated with the
donation to FundRequest as set forth below; (v)
represents and warrants that Donor is not exchanging Ether (ETH) for FND for the purpose of
speculative investment; (vi) represents and
warrants that the Donor is donating to support the development of a platform for supporting open
source contributions, or to facilitate
development, testing, deployment and operation of decentralised applications on the Ethereum
Platform; and (vii) represents and warrants that
the Donor has an understanding of the usage and intricacies of cryptographic tokens, for
instance
BTC, and blockchain-based software systems.
Independent Confirmation of Donation
During the donation process on the https://www.fundrequest.io website, FundRequest will provide
Donors with a unique intermediary ETH
address. Using this address, Donors can track and confirm that the donated ETH have been
received at
that address.
Knowledge of the unique intermediary ETH address does not constitute a purchase receipt or
indicate
in any way that any party possessing such
knowledge has rights to or ownership of the granted FND.
Loss of the Donation Password Will Cause the Loss of the right to receive FND
As part of the donation process, and in order to receive FND, the Donor will need to provide an
ETH
address ("Donor ETH address"). Failing to do
so will result in the inability to donate to the FundRequest project. Upon succesful completion
of
the token sale, and only then, will FundRequest
transfer the granted FND tokens to the Donor ETH Address. The token sale is succesful when the
Minimum Cap is reached.
Donor must keep the Donation ETH address Password safe and not share it in any way or with
anybody.
The Donator ETH address Password is
essential for accessing the Donor's FND. Donor's loss of the Donation ETH address Password will
cause the loss of the aquired FND.
Unauthorised access by any party to a Donor's ETH address Password along with access to the
Ethereum
wallet, will enable that unauthorised
party to access the received FND and the FND will be lost.
Donor must keep the Donation ETH address Password safe and not share it in any way or with
anybody.
The Donator ETH address Password is
essential for accessing the Donor's FND. Donor's loss of the Donation ETH address Password will
cause the loss of the aquired FND.
Unauthorised access by any party to a Donor's ETH address Password along with access to the
Ethereum
wallet, will enable that unauthorised
party to access the received FND and the FND will be lost.
By partaking in the token sale or by purchasing FND, and to the extent permitted by applicable
law,
the Donor agrees not to hold any of the
FundRequest Parties liable for any losses or any special, incidental, or consequential damages
arising out of, or in any way connected to, Donor's
failure to properly secure and keep private the Donor's ETH address Password and/or the Donor's
Ethereum wallet.
Donations will only be accepted by the FundRequest Website
FundRequest will only accept donations through the FundRequest website, available at
https://www.fundrequest.io. To the extent that any
third-party website or service offers FND for sale during the FundRequest token sale or
facilitates
the sale or transfer of FND in any way during
the FundRequest token sale, such third-party websites or services are not sanctioned by
FundRequest
or its parents and affiliates and have no
relationship in any way with the FundRequest Parties. As a result, FundRequest prohibits the use
of
these third-party websites or services for the
purchase of FND.
Donors should take great care to ensure that the URL of their web browser indicates that it is
using
a hypertext transport protocol secure
connection ("https") and that the domain name is correct.
By partaking in the token sale or by purchasing FND, and to the extent permitted by applicable
law,
the Donor agrees not to hold any of the
FundRequest Parties liable for losses incurred by any person, entity, corporation, or group
individuals or groups who uses a third party service to
purchase FND.
The only official and authorised FND donation website URL is https://www.fundrequest.io
Fraudulent Attempts to Double Spend ETH
FundRequest will monitor all potential transactions for fraudulent attempts to double spend ETH.
Any
detected double spend of ETH will result in
no FND being transferred to the associated wallet address.
Certain Risks Associated with the Donation to FundRequest in order to receive
FND
Donating to FundRequest in order to receive FND tokens carries with it significant risk. Prior
to
partaking in the token sale or by purchasing FND,
the Donor should carefully consider the below risks and, to the extent necessary, consult a
lawyer,
accountant, and/or tax professional prior to
determine whether to partake in the token sale or the purchase of FND.
Risk of Dissolution of The FundRequest Project Due To a Diminishment in the Value of
the ETH Sale Revenue
All Donors are donating ETH to support the FundRequest project. In the past few months the price
of
ETH in USD and EUR has been relatively
stable. However, despite recent price stability, it is possible that the value of ETH will drop
significantly in the future, depriving FundRequest of
sufficient resources to continue to operate. In order to guard against this risk, FundRequest
intends to periodically convert proceeds from the toke
n sale of FND into fiat currencies or other cryptocoins instead of ETH. In order to cover the
initial startup costs, FundRequest will convert 175.000
USD worth of Ether to fiat after a successful token sale.
Risk of Losing Access to FND Due to Loss of a Wallet File or Password
As noted above, FND will be stored in a wallet, which can only be accessed with a password
selected
by the Donor. If a Donor of FND does not
maintain an accurate record of the Donor's password or loses the wallet, this will lead to the
loss
of FND.
As a result, Donor must safely store their password and the wallet in one or more backup
locations
that are well separated from the primary
location. Additionally the password and the wallet should never be stored together.
In order to access one's FND, both the wallet and the password that the Donor entered are
required;
loss of either, or leakage/theft of both, will
lead to the loss of a Donor's FND.
Risk of Unauthorised Access to a Wallet
Any third party that gains access to the Donor's Ethereum wallet and potentially access the
wallet
by deciphering or cracking the Donor's
password. To guard against any improper access to the wallet, the Donor should select a highly
secure Donation Password for the Donation
wallet. Donor must take care not to respond to any inquiry regarding their donation to
FundRequest,
including but not limited to, email requests
purportedly coming from the fundrequest.io or similar looking domain.
Risk of Regulatory Action in One or More Jurisdictions
Cryptocurrencies have been the subject of regulatory scrutiny by various regulatory bodies
around
the globe. The FundRequest Platform and
FND could be impacted by one or more regulatory inquiries or regulatory action, which could
impede
or limit the ability of the FundRequest Team
to continue to develop the FundRequest Platform.
Risk of Insufficient Interest in the FundRequest Platform
It is possible that the FundRequest Platform will not be used by a large number of external
businesses, individuals, and other organisations and
that there will be limited public interest in supporting the open source community via our
platform.
Such a lack of interest could impact the
development of the FundRequest Platform. FundRequest has contracted with developers to help
build
the FundRequest Platform and is working
with other third-party developers around the world to create an interest in the FundRequest
Platform. However, it cannot predict the success of its
own development efforts or the efforts of third parties.
Risk Associated With the Development of Other Platforms like FundRequest
FundRequest is one of a few organisations, companies, and groups, attempting to build a platform
for
rewarding open source contributions. It is
possible that different technical paradigms than the ones being used in the current FundRequest
Platform implementation are optimal.
While FundRequest anticipates being a leader in the development of such a platform, competition
from
these alternative platforms may impact
success of the FundRequest Project and the ability of FundRequest to operate.
Risk that the FundRequest Platform, As Developed, Will Not Meet the Expectations of Don
or
The Donor recognises that the FundRequest Platform is presently under development and may
undergo
significant changes before release. Dono
r acknowledges that any expectations regarding the form and functionality of the FundRequest
Platform held by the Donor may not be met upon
release of the FundRequest Platform, for any number of reasons including a change in the design
and
implementation plans and execution of the
implementation of the FundRequest Platform.
Risk that the FundRequest Platform May Never be Completed or Released
Donor understands, that while the FundRequest Team will make reasonable efforts to complete the
FundRequest software, it is possible that an
official completed version of the FundRequest Platform may not be released and there may never
be an
operational FundRequest Platform.
Risk of Theft
Hackers or other groups or organisations may attempt to steal the ETH revenue from the
FundRequest
private seed, public seed and/or token
sale, thus potentially impacting the ability of FundRequest to develop the FundRequest Platform
and
operate FundRequest. To account for this
risk, FundRequest has and will continue to implement comprehensive security precautions to
safeguard
the ETH obtained from the private seed,
public seed and/or token sale of FND.
Risk of Security Weaknesses in the FundRequest Platform Software
The FundRequest Platform rests on open source software, and there is a risk that the FundRequest
Team, or other third parties not directly
affiliated with the FundRequest Parties, may introduce weaknesses or bugs into the core
infrastructural elements of the FundRequest Platform
causing the system to lose ETH or FND stored in one or more Donor accounts or other accounts or
lose
sums of other valued tokens issued on
the FundRequest Platform.
FundRequest has taken steps to build, maintain, and secure the infrastructure of the FundRequest
Platform, and will continue to do so after the
FundRequest private seed, public seed and token sale.
Risk of Weaknesses or Exploitable Breakthroughs in the Field of Cryptography
Advances in code cracking, or technical advances such as the development of quantum computers,
could
present risks to cryptocurrencies and
the FundRequest Platform, which could result in the theft or loss of ETH or FND. To the extent
possible, FundRequest intends to update the
protocol underlying the FundRequest Platform to account for any advances in cryptography and to
incorporate additional security measures, but
cannot predict the future of cryptography or the success of any future security updates.
Risk of Ether Mining Attacks
As with other cryptocurrencies, the blockchain used for the FundRequest Platform, Ethereum is
susceptible to mining attacks, including but not
limited to double-spend attacks, majority mining power attacks, "selfish-mining" attacks, and
race
condition attacks. Any successful attacks
present a risk to the FundRequest Platform, expected proper execution and sequencing of ETH
transactions, and expected proper execution and
sequencing of contract computations. Despite the efforts of the Ethereum community, known or
novel
mining attacks may be successful.
Risk of Rapid Adoption and Insufficiency of Computational Application Processing Power
on the FundRequest Network
If the FundRequest Platform is rapidly adopted, the demand for transaction processing could rise
dramatically and at a pace that exceeds the
supporting rate. Under such a scenario, the entire FundRequest Platform could become
destabilised
causing time-outs and delays in the
transactions.
All Donations during the token sale and the Purchases of FundRequest tokens
(FND) Are Non-Refundable
ALL DONATIONS ARE FINAL AND NON REFUNDABLE.  PURCHASES OF
FND
ARE
NON-REFUNDABLE. BY PARTAKING IN THE TOKE SALE AND/OR PURCHASING FND, THE DONOR ACKNOWLEDGES THAT
NEITHER
FUNDREQUEST NOR ANY OTHER OF THE FUNDREQUEST PARTIES ARE REQUIRED TO PROVIDE A REFUND FOR ANY
REASON, AND
THAT THE DONOR AND/OR PURCHASER WILL NOT RECEIVE MONEY OR OTHER COMPENSATION FOR ANY FND. ONCE
THE
DONOR
RECEIVES HIS OR HER TOKENS AFTER THE TOKEN SALE, THEY ARE FREE TO SEND OR SELL THEM TO ANYONE OF
THEIR CHOICE.
Taxation of FND token and Taxation Related to the FundRequest Token Sale
FundRequest makes no representations concerning the tax implications of the donations to
FundRequest
or the sale of FND or the possession or
use of FND. The Donor bears the sole responsibility to determine if the donation to FundRequest
and/or the purchase of FND with ETH or the
potential appreciation or depreciation in the value of FND over time has tax implications for
the
Donor in the Donor's home jurisdiction.
By donating to FundRequest or purchasing FND, and to the extent permitted by law, the Donor
agrees
not hold any of the FundRequest Parties
liable for any tax liability associated with or arising from the donation to FundRequest or the
purchase of FND.
Privacy
Although FundRequest requires that Donors provide an Ethereum address and KYC information,
FundRequest will not publish any identifying
information related to a FundRequest donation or a FND purchase without the prior written
consent of
the Donor. Donors may be contacted by
email by FundRequest regarding a donation or a purchase. Such emails will be informational only.
FundRequest will not request any personal
information from Donors in an email.

WITHOUT LIMITING THE FOREGOING, NONE OF THE FUNDREQUEST PARTIES WARRANT THAT THE PROCESS FOR
DONATING TO
FUNDREQUEST OR PURCHASING FND WILL BE UNINTERRUPTED OR ERROR-FREE.
Limitations Waiver of Liability
THE DONOR ACKNOWLEDGES AND AGREES THAT, TO THE FULLEST EXTENT PERMITTED BY ANY APPLICABLE LAW,
THE
DISCLAIMERS OF LIABILITY CONTAINED HEREIN APPLY TO ANY AND ALL DAMAGES OR INJURY WHATSOEVER
CAUSED
BY OR
RELATED TO USE OF, OR INABILITY TO USE, FND OR THE FUNDREQUEST PLATFORM UNDER ANY CAUSE OR
ACTION
WHATSOEVER OF ANY KIND IN ANY JURISDICTION, INCLUDING, WITHOUT LIMITATION, ACTIONS FOR BREACH OF
WARRANTY,
BREACH OF CONTRACT OR TORT (INCLUDING NEGLIGENCE) AND THAT NONE OF THE FUNDREQUEST PARTIES SHALL
BE
LIABLE
FOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES, INCLUDING FOR LOSS OF
PROFITS,
GOODWILL OR DATA, IN ANY WAY WHATSOEVER ARISING OUT OF THE USE OF, OR INABILITY TO USE, OR
PURCHASE
OF, OR
INABILITY TO PURCHASE, FND OR DONATE TO FUNDREQUEST.
THE DONOR FURTHER SPECIFICALLY ACKNOWLEDGES THAT FUNDREQUEST PARTIES ARE NOT LIABLE, AND THE
DONOR
AGREES
NOT TO SEEK TO HOLD ANY OF THE FUNDREQUEST PARTIES LIABLE, FOR THE CONDUCT OF THIRD PARTIES,
INCLUDING
OTHER DONORS OF FUNDREQUEST, AND THAT THE RISK OF DONOR AND PURCHASING AND USING FND RESTS
ENTIRELY
WITH
THE DONOR .
TO THE EXTENT PERMISSIBLE UNDER APPLICABLE LAWS, UNDER NO CIRCUMSTANCES WILL ANY OF THE
FUNDREQUEST
PARTIES
BE LIABLE TO ANY DONOR FOR MORE THAN THE AMOUNT THE DONOR HAS DONATED OR PAID TO FUNDREQUEST FOR
THE
PURCHASE OF FND.
SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR
EXCLUSION
OF
LIABILITY FOR CERTAIN TYPES OF DAMAGES. THEREFORE, SOME OF THE ABOVE LIMITATIONS IN THIS SECTION
AND
ELSEWHERE
IN THE TERMS MAY NOT APPLY TO A DONOR. IN PARTICULAR, NOTHING IN THESE TERMS SHALL AFFECT THE
STATUTORY RIGHTS
OF ANY DONOR OR EXCLUDE INJURY ARISING FROM ANY WILFUL MISCONDUCT OR FRAUD OF FUNDREQUEST.
Jurisdiction of the token sale event
The legal entity conducting the FundRequest token sale, FundRequest OÜ, falls under Estonian
law.
FundRequest OÜ
Pärnu maantee 15
10141 Tallinn
Estonia
Registration number: 14354397
Dispute Resolution
All disputes, controversies or claims arising out of, relating to, or in connection with the
Terms,
the breach thereof, or FundRequest's token sale of
FND or use of the FundRequest Platform shall be finally settled under the Rules of Arbitration
of
the International Chamber of Commerce by one
or more arbitrators appointed in accordance with said Rules. All claims between the parties
relating
to these Terms that are capable of being
resolved by arbitration, whether sounding in contract, tort, or otherwise, shall be submitted to
ICC
arbitration.
Prior to commencing arbitration, the parties have a duty to negotiate in good faith and attempt
to
resolve their dispute in a manner other than by
submission to ICC arbitration.
The arbitration panel shall consist of one arbitrator only, unless the ICC Court of Arbitration
determines that the dispute is such as to warrant three
arbitrators. If the Court determines that one arbitrator is sufficient, then such arbitrator
shall
be selected from Belgium. If the Court determines that
three arbitrators are necessary, then each party shall have 30 days to nominate an arbitrator of
its
choice — in the case of the Claimant,
measured from receipt of notification of the ICC Court's decision to have three arbitrators; in
the
case of Respondent, measured from receipt of
notification of Claimant's nomination. All nominations must be from Belgium. If a party fails to
nominate an arbitrator, the Court will do so. The
Court shall also appoint the chairman.
All arbitrators shall be and remain "independent" of the parties involved in the arbitration.
The
place of arbitration shall be fixed by the ICC Court,
but the arbitral tribunal may conduct hearings, meetings, and deliberations at any location it
considers appropriate. The language of the arbitration
shall be English. In deciding the merits of the dispute, the tribunal shall apply the laws of
Belgium and any discovery shall be limited and shall not
involve any depositions or any other examinations outside of a formal hearing. The tribunal
shall
not assume the powers of amiable compositor or
decide the case ex aequo et bono.
In the final award, the tribunal shall fix the costs of the arbitration and decide which of the
parties shall bear such costs in what proportion. Every
award shall be binding on the parties. The parties undertake to carry out the award without
delay
and waive their right to any form of recourse
against the award in so far as such waiver can validly be made.
Force Majeure
FundRequest is not liable for failure to perform solely caused by:
unavoidable casualty, delays in delivery of materials, embargoes, government orders, acts of
civil
or military authorities, acts by common carriers,
emergency conditions (including weather conditions) incompatible with safety or good quality
workmanship, or any similar unforeseen event that
renders performance commercially implausible. If an event of force majeure occurs, the party
injured
by the other's inability to perform may elect
to suspend the Agreement, in whole or part, for the duration of the force majeure circumstances.
The
party experiencing the force majeure
circumstances shall cooperate with and assist the injured party in all reasonable ways to
minimise
the impact of force majeure on the injured
party.
Complete Agreement
These Terms sets forth the entire understanding between each Donor and FundRequest with respect
to
the donation to FundRequest.
For facts relating to the token sale the Donor agrees to rely only on this document in
determining
donation decisions and understands that this
document governs the donation to FundRequest and supersede any public statements about the
FundRequest token sale made by third parties
or by FundRequest Team or individuals associated with any FundRequest Parties, past and present
and
during the FundRequest private seed,
public seed, and token sale.
Severability
The Donor and FundRequest agree that if any portion of these Terms is found illegal or
unenforceable, in whole or in part, the Terms will be
ineffective solely to the extent of such determination of invalidity without affecting the
validity
or enforceability thereof in any other manner or
jurisdiction and without affecting the remaining provisions of the Terms, which shall continue
to be
in full force and effect.
Waiver of liability of the FundRequest team
The founders, members and employees of FundRequest have no personal liability for any harm or
loss
to a Donor caused by partaking in the
private seed, public seed and/or token sale.
No Waiver
The failure of FundRequest to require or enforce strict performance by the Donor of any
provision of
these Terms or FundRequest's failure to
exercise any right under these agreements shall not be construed as a waiver or relinquishment
of
FundRequest's right to assert or rely upon any
such provision or right in that or any other instance.
The express waiver by FundRequest of any provision, condition, or requirement of these Terms
shall
not constitute a waiver of any future
obligation to comply with such provision, condition or requirement.
Except as expressly and specifically set forth in this these Terms, no representations,
statements,
consents, waivers, or other acts or omissions
by FundRequest shall be deemed a modification of these Terms nor be legally binding, unless
documented in physical writing, hand signed by
the Donor and a duly appointed officer, employee, or agent of FundRequest.
Updates to the Terms and Conditions of the FundRequest Token Sale
FundRequest reserves the right, at its sole discretion, to change, modify, add, or remove
portions
of the Terms & Conditions at any time during
the token sale by posting the amended Terms & Conditions on the FundRequest website
(https://www.fundrequest.io). Any Donor will be deemed
to have accepted such changes by donating to FundRequest.
The Terms may not be otherwise amended except in a signed writing executed by both the Donor and
FundRequest. For purposes of this
agreement, "writing" does not include an e-mail message and a signature does not include an
electronic signature.
If at any point you do not agree to any portion of the then-current version of the Terms, you
should
not donate to FundRequest nor purchase FND.
To the extent the Terms conflict with the FND Disclaimer, the Terms shall govern.
Cooperation with Legal Authorities
FundRequest will cooperate with all law enforcement inquiries, subpoenas, or requests provided
they
are fully supported and documented by the
law in the relevant jurisdictions. In accord with one of the core principles of the FundRequest
project — transparency — FundRequest will
endeavour to publish any legal inquiries upon receipt.
Conflicting terms and conditions with applicable legislation
If one of the terms and conditions would be in conflict with the applicable legislation only the
conflicting term and/or condition is nullified but the
other terms and conditions remain applicable.
Further Information
For further information regarding the FundRequest token sale, please contact
<EMAIL_ADDRESS>Token Sale Smart Contract Address
Minimum contribution : 0,01 ETH
Maximum contribution : 1 ETH
Gas Limit : 350000
Do NOT send directly from an exchange
Minimum contribution : 0,01 ETH
Maximum contribution : no limit until hard cap reached
Gas Limit : 350000
Do NOT send directly from an exchange
To verify the contract address, please look at the video below from our CEO:


Invalid Count is the number of times a counter or protection signal did not match what was expected.
For a counter signal, Value is the value received on the bus.
For a protection signal, Value is calculated based on the configured protection algorithm and relevant channel values received on the bus.
For example, if the Value received on the bus from a counter signal is not previous Value +1, the Invalid Count will increment. Similarly, if the Value calculated for a protection signal does not match what is received on the bus, the Invalid Count will increment.


Hi, my name is Shailesh Manjunath Bhat. A graduate in Bachelor of Science in Information Technology from Mumbai University. Living in Dombivili, Maharashtra, India, Earth, Rodinia. I have learnt HTML5, CSS3, Javascript, JQuery, PHP & MySQL from Seed Infotech, Thane. Before 2019, from June 2011 to Oct 2019 i was working in E-Commerce Industry. Starting from June 2011 i worked for Naaptol Online Shopping Pvt td, Just buy Live Pvt Ltd, Maayra Retail Pvt Ltd & Lumina Datamatics pvt Ltd. Skills: HTML5, CSS3, JQUERY, Javascript, PHP, MySQL


The comparison of procedural(functional) programming and object-oriented programming using the example of my c program written in my first year course class, the student information management system


◆ TrafficPlanner()
| ch.ethz.systems.netbench.core.run.traffic.TrafficPlanner.TrafficPlanner |
( |
Map< Integer, TransportLayer > |
idToTransportLayerMap | ) |
|
Constructor.
- Parameters
-
| idToTransportLayerMap | Maps a network device identifier to its corresponding transport layer |
◆ createPlan()
| abstract void ch.ethz.systems.netbench.core.run.traffic.TrafficPlanner.createPlan |
( |
long |
durationNs | ) |
|
|
abstract |
◆ registerFlow()
| void ch.ethz.systems.netbench.core.run.traffic.TrafficPlanner.registerFlow |
( |
long |
time, |
|
|
int |
srcId, |
|
|
int |
dstId, |
|
|
long |
flowSizeByte |
|
) |
| |
|
protected |
Register the flow from [srcId] to [dstId].
- Parameters
-
| time | Time at which it start in nanoseconds |
| srcId | Source network device identifier |
| dstId | Destination network device identifier |
| flowSizeByte | Flow size in bytes |
◆ graphDetails
| final GraphDetails ch.ethz.systems.netbench.core.run.traffic.TrafficPlanner.graphDetails |
|
protected |
◆ idToTransportLayerMap
| final Map<Integer, TransportLayer> ch.ethz.systems.netbench.core.run.traffic.TrafficPlanner.idToTransportLayerMap |
|
protected |
The documentation for this class was generated from the following file:


#{extends 'error.html' /} #{set title:'Something went wrong (500)' /}
To change this behaviour configure action permissions on Lagoon Security


To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video


Simulation Results (code) Analytics (Analytics code)
Notebooks and files
Looking at a better way to get figures into my online notebook. I often run simulations that generate figures which I look at, make some adjustments to the code based on the figure, and then delete or overwrite the figure without uploading it to my notebook, because it isn’t “right” or “finished” and uploading takes a lot of clicks, particularly when the code generates 36 figures in a run. Then I discover on some later date that I really want to take another look at the figure. While I usually have the version of the code that generated it saved in github, the codes sometimes take many hours to run, so this isn’t very efficient – it would make much more sense to have everything saved in the notebook. I’m looking into photo hosting sites for figures, as I think these could offer many other benefits as well. Seeing what friendfeed can suggest on this:
### Exploring Flickr for scientific figures in my notebook
Image embedded using the mediawiki flickr plugin
So I’ve set up a flickr account. First things first: edit settings so default permissions are cc-by. Now time to explore.
First concern was for permanent stable links, which it seems are guaranteed even in the free account. Will wait and see if I need the capacity of the pro account, but 100MB/month should be a good start.
Offline/Desktop tools for Flickr
One of the most promising things about flickr seems to be the extensive development around it. Several linux native programs support Flickr, including the social netwoking manager, gwibber. Particularly interested in tools that will let me have the automated, command-line upload ability to connect to my notebook. Even if I can automatically get figures into Flickr, I guess there’s still the step of getting them into the notebook. I’m beginning to understand more and more why Cameron talks about aggregators so much. Meanwhile, looking at two ubuntu-native tools:
DFO, the Desktop flickr organizer for gnome. Looks nice, easy GUI, very polished. However, no longer under active development and not sure if it has command line support. Can be installed with apt-get.
–Carl Boettiger 18:21, 30 August 2010 (EDT) Doesn’t seem reliable for uploading, sometimes images don’t appear
- flickrfs – remote mount your flickr account like a directory. No interface but then acting like a directory means immediate interoperability with command line and other desktop applications. Should make adding/uploading very easy. Uses filename.meta for metadata. Can be installed directly with apt-get.
–Carl Boettiger 18:21, 30 August 2010 (EDT) Unable to actually get the directory to mount with user permissions. Mounts but unable to add with root permissions
kflickr: native KDE flickr uploader. Works great, simple and intuitive. Just for uploading though. No obvious command line interface.
Nautilus integration works. simple, easy. We’ll see about scripting. apt-get able: nautilus-flickr-uploader
flickr_upload Yay, an easy to use command-line tool that just works. This looks very promising, able to upload photos and add tags with ease.
flickr_upload --tag="my_tag" image.jpg
From Flickr to Notebook
- Can embed flickr using the mediawiki plugin. Note that syntax is a bit picky, no spaces, a few set sizes. Can always embed as above with html, which, unlike photobucket embed, lets you set the image size in the html.
Looking for embedding options for a whole collection. Flickr supports “sets” and other kinds of groups (including tags). Site will make a slideshow of a set but prevents iframe embedding:
<html><iframe height="500px" width="1000px" src="https://www.flickr.com/photos/46456847@N08/sets/72157624718737779/show/">
</iframe></html>
Ah, seems to have it’s own embedding option linked from its slideshow.
Slideshows can also be created using tags. Replacing every instance of the tag in the embed script with the new tag works to create a slideshow of that tag, making it easy to automate this. So, with a single commandline call I can embed the full 30 likelihood ratio comparisons from a few days ago:
flickr_upload --tag="LR_anoles" *vs*.png
Adaptive Dynamics Analytics Results
The numerical coexistence time simulations are still running, meanwhile here are the rest of the analytic set (and one simulation that finished). See code for parameters etc.
More Open Notebook Science discussion ————————————-


Our annually sold-out show returns! Join 650 content strategy enthusiasts—from newbies to old-timers—for three days of awesome workshops and sessions. More speakers, more networking, more everything. And as they say … either you love Minneapolis, or you've never been here. See you in May!
Here is a sentence about the location section of the site. It's pretty damn exciting if there.s two.
Here is a sentence about the regisration section of the site. What if I wrote a second sentence too.
Here is the sessions sentence. It also has a second sentence. Go figure!


StereoSketcher cross eye (my drawings)
StereoSketcher red/cyan (my drawings)
StereoSketcher cross eye (other people's drawings)
StereoSketcher red/cyan (other people's drawings)


Transparency data
This data reports actual local authority (LA) expenditure on education and children and young people’s services for 2014 to 2015
ODS , 22KB
This file is in an OpenDocument format
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
ODS , 757KB
This file is in an OpenDocument format
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
ODS , 524KB
This file is in an OpenDocument format
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email<EMAIL_ADDRESS>. Please tell us what format you need. It will help us if you say what assistive technology you use.
MS Excel Spreadsheet , 2.55MB
Local authorities (LAs) are required, under section 251 of the Apprenticeships, Skills, Children and Learning Act 2009, to prepare and submit annually to the Secretary of State separate budget and outturn statements about their planned and actual expenditure for their education and children’s social care functions.
Section 251 replaces section 52 of the School Standards and Framework Act 1998 in England. Section 52 still applies in Wales.
The statements are the primary means of informing schools and the public in general about LA funding and expenditure plans. They are intended to give detailed information on each LAs planned expenditure on their education and children’s social care functions in a form that allows benchmarking, by schools forums and authorities. The individual LA expenditure data workbook provides data for 152 local authorities in England detailing their expenditure for the financial year 2014 to 2015.
If you have a query on any of the information published on this page please tell us using our online enquiry form
Published: 10 December 2015
From: Education Funding Agency
Part of: Section 251 documents


Class IncomingPhoneNumber
This class represents a FreeClimb IncomingPhoneNumber instance. IncomingPhoneNumber objects can be created by the IncomingPhoneNumberRequester inside a FreeClimbClient instance, or using the portal's Buy a Number functionality.
Inherited Members
Namespace: com.freeclimb.api.phonenumber
Assembly: freeclimb-cs-sdk.dll
Syntax
public class IncomingPhoneNumber : FreeClimbCommon, IFreeClimbCommon, IEquatable<FreeClimbCommon>, IEquatable<IncomingPhoneNumber>
Remarks
IncomingPhoneNumbers are immutable and intended only to be used to read information returned from the API in a language accessible way.
Properties
| Improve this Doc View SourcegetAccountId
Retrieve the accountId for this incomingPhoneNumber from the object.
Declaration
public string getAccountId { get; }
Property Value
| Type | Description |
|---|---|
| System.String | The accountId for this incomingPhoneNumber. |
getAlias
Retrieve the alias for this incomingPhoneNumber from the object.
Declaration
public string getAlias { get; }
Property Value
| Type | Description |
|---|---|
| System.String | The alias for this incomingPhoneNumber. |
getApplicationId
Retrieve the applicationId for this incomingPhoneNumber from the object.
Declaration
public string getApplicationId { get; }
Property Value
| Type | Description |
|---|---|
| System.String | The applicationId for this incomingPhoneNumber. |
getCountry
Retrieve the country for this incomingPhoneNumber from the object.
Declaration
public string getCountry { get; }
Property Value
| Type | Description |
|---|---|
| System.String | The country for this incomingPhoneNumber. |
getPhoneNumber
Retrieve the phoneNumber for this incomingPhoneNumber from the object.
Declaration
public string getPhoneNumber { get; }
Property Value
| Type | Description |
|---|---|
| System.String | The phoneNumber for this incomingPhoneNumber. |
getPhoneNumberId
Retrieve the phoneNumberId for this incomingPhoneNumber from the object.
Declaration
public string getPhoneNumberId { get; }
Property Value
| Type | Description |
|---|---|
| System.String | The phoneNumberId for this incomingPhoneNumber. |
getRegion
Retrieve the region for this incomingPhoneNumber from the object.
Declaration
public string getRegion { get; }
Property Value
| Type | Description |
|---|---|
| System.String | The region for this incomingPhoneNumber. |
getSmsEnabled
Retrieve the smsEnabled for this incomingPhoneNumber from the object.
Declaration
public bool getSmsEnabled { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean | The smsEnabled for this incomingPhoneNumber. |
getVoiceEnabled
Retrieve the voiceEnabled for this incomingPhoneNumber from the object.
Declaration
public bool getVoiceEnabled { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean | The voiceEnabled for this incomingPhoneNumber. |
Methods
| Improve this Doc View SourceEqual(IncomingPhoneNumber, IncomingPhoneNumber)
Helper method to deep compare two IncomingPhoneNumber instances.
Declaration
public static bool Equal(IncomingPhoneNumber a, IncomingPhoneNumber b)
Parameters
| Type | Name | Description |
|---|---|---|
| IncomingPhoneNumber | a | IncomingPhoneNumber instance one. |
| IncomingPhoneNumber | b | IncomingPhoneNumber instance two. |
Returns
| Type | Description |
|---|---|
| System.Boolean | True is a == b, otherwise false. |
Equals(IncomingPhoneNumber)
Compares the current instance with another object of the same type.
Declaration
public bool Equals(IncomingPhoneNumber other)
Parameters
| Type | Name | Description |
|---|---|---|
| IncomingPhoneNumber | other | IncomingPhoneNumber object. |
Returns
| Type | Description |
|---|---|
| System.Boolean | true if the current object is equal to the other parameter; otherwise, false. |
Equals(Object)
Compares the current instance with another object of the same type.
Declaration
public override bool Equals(object obj)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Object | obj | Object of type IncomingPhoneNumber. |
Returns
| Type | Description |
|---|---|
| System.Boolean | true if the current object is equal to the other parameter; otherwise, false. |
Overrides
| Improve this Doc View SourcefromJson(String)
Helper method to build an IncomingPhoneNumber object from the JSON string.
Declaration
public static IncomingPhoneNumber fromJson(string rawJson)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | rawJson | A JSON string representing an incomingPhoneNumber instance. |
Returns
| Type | Description |
|---|---|
| IncomingPhoneNumber | An IncomingPhoneNumber object equivalent to the JSON string passed in. |
Exceptions
| Type | Condition |
|---|---|
| FreeClimbJSONException | Thrown upon deserialize failure. |
GetHashCode()
Serves as the default hash function.
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| System.Int32 | A hash code for the current object. |
Overrides
Operators
| Improve this Doc View SourceEquality(IncomingPhoneNumber, IncomingPhoneNumber)
IncomingPhoneNumber equality operator.
Declaration
public static bool operator ==(IncomingPhoneNumber a, IncomingPhoneNumber b)
Parameters
| Type | Name | Description |
|---|---|---|
| IncomingPhoneNumber | a | IncomingPhoneNumber object. |
| IncomingPhoneNumber | b | IncomingPhoneNumber object. |
Returns
| Type | Description |
|---|---|
| System.Boolean | true if equal otherwise false. |
Inequality(IncomingPhoneNumber, IncomingPhoneNumber)
IncomingPhoneNumber inequality operator.
Declaration
public static bool operator !=(IncomingPhoneNumber a, IncomingPhoneNumber b)
Parameters
| Type | Name | Description |
|---|---|---|
| IncomingPhoneNumber | a | IncomingPhoneNumber object. |
| IncomingPhoneNumber | b | IncomingPhoneNumber object. |
Returns
| Type | Description |
|---|---|
| System.Boolean | true if not equal otherwise false. |


Coverage report for
Generated at 30.11.2022 22:06:19 by DelphiCodeCoverage - an open source tool for Delphi Code Coverage.
Statistics for ..\..\Source\DECUtil.pas
| Number of lines covered | 116 | |
| Number of lines with code gen | 116 | |
| Line coverage | 100.0 % |
| 1 | {***************************************************************************** |
| 2 | The DEC team (see file NOTICE.txt) licenses this file |
| 3 | to you under the Apache License, Version 2.0 (the |
| 4 | "License"); you may not use this file except in compliance |
| 5 | with the License. A copy of this licence is found in the root directory |
| 6 | of this project in the file LICENCE.txt or alternatively at |
| 7 | |
| 8 | http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | |
| 10 | Unless required by applicable law or agreed to in writing, |
| 11 | software distributed under the License is distributed on an |
| 12 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| 13 | KIND, either express or implied. See the License for the |
| 14 | specific language governing permissions and limitations |
| 15 | under the License. |
| 16 | *****************************************************************************} |
| 17 | |
| 18 | /// <summary> |
| 19 | /// Utility functions |
| 20 | /// </summary> |
| 21 | unit DECUtil; |
| 22 | |
| 23 | interface |
| 24 | |
| 25 | {$INCLUDE DECOptions.inc} |
| 26 | |
| 27 | uses |
| 28 | {$IFDEF FPC} |
| 29 | SysUtils, Classes; |
| 30 | {$ELSE} |
| 31 | System.SysUtils, System.Classes; |
| 32 | {$ENDIF} |
| 33 | |
| 34 | // Byte Ordering |
| 35 | |
| 36 | /// <summary> |
| 37 | /// Reverses all bits in the passed value, 1111 0000 will be 0000 1111 afterwards |
| 38 | /// </summary> |
| 39 | /// <param name="Source"> |
| 40 | /// Value who's bits are to be reversed |
| 41 | /// </param> |
| 42 | /// <returns> |
| 43 | /// Representation of Source but with all bits reversed |
| 44 | /// </returns> |
| 45 | function ReverseBits(Source: UInt32): UInt32; overload; |
| 46 | |
| 47 | /// <summary> |
| 48 | /// Reverses all bits in the passed value, 1111 0000 will be 0000 1111 afterwards |
| 49 | /// </summary> |
| 50 | /// <param name="Source"> |
| 51 | /// Value who's bits are to be reversed |
| 52 | /// </param> |
| 53 | /// <returns> |
| 54 | /// Representation of Source but with all bits reversed |
| 55 | /// </returns> |
| 56 | function ReverseBits(Source: UInt8): UInt8; overload; |
| 57 | |
| 58 | /// <summary> |
| 59 | /// Reverses the order of the bytes contained in the buffer passed in. |
| 60 | /// e.g. 1 2 3 will be 3 2 1 afterwards |
| 61 | /// </summary> |
| 62 | /// <param name="Buffer"> |
| 63 | /// Buffer who's contents is to be reversed. |
| 64 | /// </param> |
| 65 | /// <param name="Size"> |
| 66 | /// Size of the passed buffer in byte |
| 67 | /// </param> |
| 68 | procedure SwapBytes(var Buffer; Size: Integer); |
| 69 | /// <summary> |
| 70 | /// Reverses the byte order of the passed variable |
| 71 | /// </summary> |
| 72 | /// <param name="Source"> |
| 73 | /// value who's byte order shall be reversed |
| 74 | /// </param> |
| 75 | /// <returns> |
| 76 | /// value of the passed vallue with reversed byte order |
| 77 | /// </returns> |
| 78 | function SwapUInt32(Source: UInt32): UInt32; |
| 79 | /// <summary> |
| 80 | /// Reverses the byte order for all entries of a passed array of UInt32 values |
| 81 | /// </summary> |
| 82 | /// <param name="Source"> |
| 83 | /// Data with a layout like an array of UInt32 values for which the byte order |
| 84 | /// of all entries shall be reversed |
| 85 | /// </param> |
| 86 | /// <param name="Dest"> |
| 87 | /// In this variable the reversed values will be stored. Layout is like an |
| 88 | /// array of UInt32 values |
| 89 | /// </param> |
| 90 | /// <param name="Count"> |
| 91 | /// Number of values to be reversed |
| 92 | /// </param> |
| 93 | procedure SwapUInt32Buffer(const Source; var Dest; Count: Integer); |
| 94 | /// <summary> |
| 95 | /// Reverses the byte order of an Int64 value |
| 96 | /// </summary> |
| 97 | /// <param name="Source"> |
| 98 | /// Value who's byte order shall be reversed |
| 99 | /// </param> |
| 100 | /// <returns> |
| 101 | /// Representation of the passed value after reversing its byte order |
| 102 | /// </returns> |
| 103 | function SwapInt64(Source: Int64): Int64; |
| 104 | /// <summary> |
| 105 | /// Reverses the byte order for all entries of a passed array of Int64 values |
| 106 | /// </summary> |
| 107 | /// <param name="Source"> |
| 108 | /// Data with a layout like an array of Int64 values for which the byte order |
| 109 | /// of all entries shall be reversed |
| 110 | /// </param> |
| 111 | /// <param name="Dest"> |
| 112 | /// In this variable the reversed values will be stored. Layout is like an |
| 113 | /// array of Int64 values |
| 114 | /// </param> |
| 115 | /// <param name="Count"> |
| 116 | /// Number of values to be reversed |
| 117 | /// </param> |
| 118 | procedure SwapInt64Buffer(const Source; var Dest; Count: Integer); |
| 119 | |
| 120 | /// <summary> |
| 121 | /// XORs the contents of two passed buffers and stores the result into a 3rd one |
| 122 | /// </summary> |
| 123 | /// <param name="Left"> |
| 124 | /// One source buffer of bytes to be XORed |
| 125 | /// </param> |
| 126 | /// <param name="Right"> |
| 127 | /// The other source buffer of bytes to be XORed. Buffer size must be equal |
| 128 | /// or bigger than Left |
| 129 | /// </param> |
| 130 | /// <param name="Size"> |
| 131 | /// Buffer size in byte. |
| 132 | /// </param> |
| 133 | /// <param name="Dest"> |
| 134 | /// Buffer where the result is to be stored in. Must be of equal or bigger |
| 135 | /// size than Left |
| 136 | /// </param> |
| 137 | procedure XORBuffers(const Left, Right; Size: Integer; var Dest); |
| 138 | |
| 139 | // Buffer and Data Protection |
| 140 | |
| 141 | /// <summary> |
| 142 | /// Fills a given buffer with zeros in a secure way |
| 143 | /// </summary> |
| 144 | /// <param name="Buffer"> |
| 145 | /// Buffer to be zeroed. In case of TBytes to be passed as Buf[0] |
| 146 | /// </param> |
| 147 | /// <param name="Size"> |
| 148 | /// Buffer size in byte |
| 149 | /// </param> |
| 150 | procedure ProtectBuffer(var Buffer; Size: NativeUInt); |
| 151 | /// <summary> |
| 152 | /// Fills a given stream with zeros in a secure way |
| 153 | /// </summary> |
| 154 | /// <param name="Stream"> |
| 155 | /// Stream to be zeroed. |
| 156 | /// </param> |
| 157 | /// <param name="SizeToProtect"> |
| 158 | /// Number of bytes of that stream to be zeroed. Starting point is Stream.Position |
| 159 | /// </param> |
| 160 | procedure ProtectStream(Stream: TStream; SizeToProtect: Int64 = 0); |
| 161 | /// <summary> |
| 162 | /// Fills a given byte array with zeros in a secure way and then empties the |
| 163 | /// buffer. |
| 164 | /// </summary> |
| 165 | /// <param name="Source"> |
| 166 | /// Byte array to be zeroed. The length of the passed buffer is 0 afterwards! |
| 167 | /// </param> |
| 168 | procedure ProtectBytes(var Source: TBytes); |
| 169 | |
| 170 | /// <summary> |
| 171 | /// Overwrites the string's contents in a secure way and returns an empty string. |
| 172 | /// </summary> |
| 173 | /// <param name="Source"> |
| 174 | /// String to be safely overwritten |
| 175 | /// </param> |
| 176 | procedure ProtectString(var Source: string); overload; |
| 177 | |
| 178 | /// <summary> |
| 179 | /// Overwrites the string's contents in a secure way and returns an empty string. |
| 180 | /// </summary> |
| 181 | /// <param name="Source"> |
| 182 | /// String to be safely overwritten |
| 183 | /// </param> |
| 184 | procedure ProtectString(var Source: RawByteString); overload; |
| 185 | |
| 186 | {$IFDEF ANSISTRINGSUPPORTED} |
| 187 | /// <summary> |
| 188 | /// Overwrites the string's contents in a secure way and returns an empty string. |
| 189 | /// </summary> |
| 190 | /// <param name="Source"> |
| 191 | /// String to be safely overwritten |
| 192 | /// </param> |
| 193 | procedure ProtectString(var Source: AnsiString); overload; |
| 194 | {$ENDIF} |
| 195 | |
| 196 | {$IFNDEF NEXTGEN} |
| 197 | /// <summary> |
| 198 | /// Overwrites the string's contents in a secure way and returns an empty string. |
| 199 | /// </summary> |
| 200 | /// <param name="Source"> |
| 201 | /// String to be safely overwritten |
| 202 | /// </param> |
| 203 | procedure ProtectString(var Source: WideString); overload; |
| 204 | {$ENDIF} |
| 205 | |
| 206 | // Byte/String conversion |
| 207 | |
| 208 | /// <summary> |
| 209 | /// Converts a byte array to a RawByteString |
| 210 | /// </summary> |
| 211 | /// <param name="Source"> |
| 212 | /// Byte array to be converted into a string. An empty byte array is allowed |
| 213 | /// and results in an empty string. |
| 214 | /// </param> |
| 215 | /// <returns> |
| 216 | /// RawByteString with the same length as Source and all bytes copied over. |
| 217 | /// No conversion of any sort is being applied to the bytes. |
| 218 | /// </returns> |
| 219 | /// <remarks> |
| 220 | /// Not easily replaced by some RTL function as none for TBytes to RawByteString |
| 221 | /// seems to exist |
| 222 | /// </remarks> |
| 223 | function BytesToRawString(const Source: TBytes): RawByteString; |
| 224 | |
| 225 | // Buffer comparison |
| 226 | |
| 227 | /// <summary> |
| 228 | /// Checks whether two TBytes values contain the same data |
| 229 | /// </summary> |
| 230 | /// <param name="a"> |
| 231 | /// First value for the comparison |
| 232 | /// </param> |
| 233 | /// <param name="b"> |
| 234 | /// Second value for the comparison |
| 235 | /// </param> |
| 236 | /// <returns> |
| 237 | /// true, if both contain exactly the same data |
| 238 | /// </returns> |
| 239 | function IsEqual(const a, b : TBytes ):Boolean; |
| 240 | |
| 241 | implementation |
| 242 | |
| 243 | uses |
| 244 | DECUtilRawByteStringHelper, DECTypes; |
| 245 | |
| 246 | const |
| 247 | // Bit Lookup Table - see 'Bit Twiddling Hacks' by Sean Eron Anderson |
| 248 | // http://graphics.stanford.edu/~seander/bithacks.html |
| 249 | ReverseBitLookupTable256: array[0..255] of Byte = ($00, $80, $40, $C0, |
| 250 | $20, $A0, $60, $E0, $10, $90, $50, $D0, $30, $B0, $70, $F0, $08, $88, |
| 251 | $48, $C8, $28, $A8, $68, $E8, $18, $98, $58, $D8, $38, $B8, $78, $F8, |
| 252 | $04, $84, $44, $C4, $24, $A4, $64, $E4, $14, $94, $54, $D4, $34, $B4, |
| 253 | $74, $F4, $0C, $8C, $4C, $CC, $2C, $AC, $6C, $EC, $1C, $9C, $5C, $DC, |
| 254 | $3C, $BC, $7C, $FC, $02, $82, $42, $C2, $22, $A2, $62, $E2, $12, $92, |
| 255 | $52, $D2, $32, $B2, $72, $F2, $0A, $8A, $4A, $CA, $2A, $AA, $6A, $EA, |
| 256 | $1A, $9A, $5A, $DA, $3A, $BA, $7A, $FA, $06, $86, $46, $C6, $26, $A6, |
| 257 | $66, $E6, $16, $96, $56, $D6, $36, $B6, $76, $F6, $0E, $8E, $4E, $CE, |
| 258 | $2E, $AE, $6E, $EE, $1E, $9E, $5E, $DE, $3E, $BE, $7E, $FE, $01, $81, |
| 259 | $41, $C1, $21, $A1, $61, $E1, $11, $91, $51, $D1, $31, $B1, $71, $F1, |
| 260 | $09, $89, $49, $C9, $29, $A9, $69, $E9, $19, $99, $59, $D9, $39, $B9, |
| 261 | $79, $F9, $05, $85, $45, $C5, $25, $A5, $65, $E5, $15, $95, $55, $D5, |
| 262 | $35, $B5, $75, $F5, $0D, $8D, $4D, $CD, $2D, $AD, $6D, $ED, $1D, $9D, |
| 263 | $5D, $DD, $3D, $BD, $7D, $FD, $03, $83, $43, $C3, $23, $A3, $63, $E3, |
| 264 | $13, $93, $53, $D3, $33, $B3, $73, $F3, $0B, $8B, $4B, $CB, $2B, $AB, |
| 265 | $6B, $EB, $1B, $9B, $5B, $DB, $3B, $BB, $7B, $FB, $07, $87, $47, $C7, |
| 266 | $27, $A7, $67, $E7, $17, $97, $57, $D7, $37, $B7, $77, $F7, $0F, $8F, |
| 267 | $4F, $CF, $2F, $AF, $6F, $EF, $1F, $9F, $5F, $DF, $3F, $BF, $7F, $FF); |
| 268 | |
| 269 | function ReverseBits(Source: UInt32): UInt32; |
| 270 | begin |
| 271 | Result := (ReverseBitLookupTable256[Source and $FF] shl 24) or |
| 272 | (ReverseBitLookupTable256[(Source shr 8) and $FF] shl 16) or |
| 273 | (ReverseBitLookupTable256[(Source shr 16) and $FF] shl 8) or |
| 274 | (ReverseBitLookupTable256[(Source shr 24) and $FF]); |
| 275 | end; |
| 276 | |
| 277 | function ReverseBits(Source: UInt8): UInt8; |
| 278 | begin |
| 279 | Result := ReverseBitLookupTable256[Source]; |
| 280 | end; |
| 281 | |
| 282 | procedure SwapBytes(var Buffer; Size: Integer); |
| 283 | {$IFDEF X86ASM} |
| 284 | asm |
| 285 | CMP EDX,1 |
| 286 | JLE @@3 |
| 287 | AND EAX,EAX |
| 288 | JZ @@3 |
| 289 | PUSH EBX |
| 290 | MOV ECX,EDX |
| 291 | LEA EDX,[EAX + ECX - 1] |
| 292 | SHR ECX,1 |
| 293 | @@1: MOV BL,[EAX] |
| 294 | XCHG BL,[EDX] |
| 295 | DEC EDX |
| 296 | MOV [EAX],BL |
| 297 | INC EAX |
| 298 | DEC ECX |
| 299 | JNZ @@1 |
| 300 | @@2: POP EBX |
| 301 | @@3: |
| 302 | end; |
| 303 | {$ELSE !X86ASM} |
| 304 | var |
| 305 | T: Byte; |
| 306 | P, Q: PByte; |
| 307 | i: Integer; |
| 308 | begin |
| 309 | P := @Buffer; |
| 310 | Inc(P, Size - 1); |
| 311 | Q := @Buffer; |
| 312 | for i := 0 to Size div 2 - 1 do // using P/Q comparison with 'while' breaks some compilers |
| 313 | begin |
| 314 | T := Q^; |
| 315 | Q^ := P^; |
| 316 | P^ := T; |
| 317 | Dec(P); |
| 318 | Inc(Q); |
| 319 | end; |
| 320 | end; |
| 321 | {$ENDIF !X86ASM} |
| 322 | |
| 323 | function SwapUInt32(Source: UInt32): UInt32; |
| 324 | {$IF defined(X86ASM) or defined(X64ASM)} |
| 325 | asm |
| 326 | {$IFDEF X64ASM} |
| 327 | MOV EAX, ECX |
| 328 | {$ENDIF X64ASM} |
| 329 | BSWAP EAX |
| 330 | end; |
| 331 | {$ELSE PUREPASCAL} |
| 332 | begin |
| 333 | Result := Source shl 24 or |
| 334 | Source shr 24 or |
| 335 | Source shl 8 and $00FF0000 or |
| 336 | Source shr 8 and $0000FF00; |
| 337 | end; |
| 338 | {$IFEND PUREPASCAL} |
| 339 | |
| 340 | procedure SwapUInt32Buffer(const Source; var Dest; Count: Integer); |
| 341 | {$IFDEF X86ASM} |
| 342 | asm |
| 343 | TEST ECX,ECX |
| 344 | JLE @Exit |
| 345 | PUSH EDI |
| 346 | SUB EAX,4 |
| 347 | SUB EDX,4 |
| 348 | @@1: MOV EDI,[EAX + ECX * 4] |
| 349 | BSWAP EDI |
| 350 | MOV [EDX + ECX * 4],EDI |
| 351 | DEC ECX |
| 352 | JNZ @@1 |
| 353 | POP EDI |
| 354 | @Exit: |
| 355 | end; |
| 356 | {$ELSE !X86ASM} |
| 357 | var |
| 358 | i: Integer; |
| 359 | T: UInt32; |
| 360 | begin |
| 361 | for i := 0 to Count - 1 do |
| 362 | begin |
| 363 | T := TUInt32Array(Source)[i]; |
| 364 | TUInt32Array(Dest)[i] := (T shl 24) or (T shr 24) or |
| 365 | ((T shl 8) and $00FF0000) or ((T shr 8) and $0000FF00); |
| 366 | end; |
| 367 | end; |
| 368 | {$ENDIF !X86ASM} |
| 369 | |
| 370 | function SwapInt64(Source: Int64): Int64; |
| 371 | {$IFDEF X86ASM} |
| 372 | asm |
| 373 | MOV EDX,Source.DWord[0] |
| 374 | MOV EAX,Source.DWord[4] |
| 375 | BSWAP EDX |
| 376 | BSWAP EAX |
| 377 | end; |
| 378 | {$ELSE !X86ASM} |
| 379 | var |
| 380 | L, H: Cardinal; |
| 381 | begin |
| 382 | L := Int64Rec(Source).Lo; |
| 383 | H := Int64Rec(Source).Hi; |
| 384 | L := L shl 24 or L shr 24 or L shl 8 and $00FF0000 or L shr 8 and $0000FF00; |
| 385 | H := H shl 24 or H shr 24 or H shl 8 and $00FF0000 or H shr 8 and $0000FF00; |
| 386 | Int64Rec(Result).Hi := L; |
| 387 | Int64Rec(Result).Lo := H; |
| 388 | end; |
| 389 | {$ENDIF !X86ASM} |
| 390 | |
| 391 | procedure SwapInt64Buffer(const Source; var Dest; Count: Integer); |
| 392 | {$IFDEF X86ASM} |
| 393 | asm |
| 394 | TEST ECX,ECX |
| 395 | JLE @Exit |
| 396 | PUSH ESI |
| 397 | PUSH EDI |
| 398 | LEA ESI,[EAX + ECX * 8] |
| 399 | LEA EDI,[EDX + ECX * 8] |
| 400 | NEG ECX |
| 401 | @@1: MOV EAX,[ESI + ECX * 8] |
| 402 | MOV EDX,[ESI + ECX * 8 + 4] |
| 403 | BSWAP EAX |
| 404 | BSWAP EDX |
| 405 | MOV [EDI + ECX * 8 + 4],EAX |
| 406 | MOV [EDI + ECX * 8],EDX |
| 407 | INC ECX |
| 408 | JNZ @@1 |
| 409 | POP EDI |
| 410 | POP ESI |
| 411 | @Exit: |
| 412 | end; |
| 413 | {$ELSE !X86ASM} |
| 414 | var |
| 415 | H, L: Cardinal; |
| 416 | i: Integer; |
| 417 | begin |
| 418 | for i := 0 to Count - 1 do |
| 419 | begin |
| 420 | H := TUInt32Array(Source)[i * 2 ]; |
| 421 | L := TUInt32Array(Source)[i * 2 + 1]; |
| 422 | TUInt32Array(Dest)[i * 2 ] := L shl 24 or L shr 24 or L shl 8 and $00FF0000 or L shr 8 and $0000FF00; |
| 423 | TUInt32Array(Dest)[i * 2 + 1] := H shl 24 or H shr 24 or H shl 8 and $00FF0000 or H shr 8 and $0000FF00; |
| 424 | end; |
| 425 | end; |
| 426 | {$ENDIF !X86ASM} |
| 427 | |
| 428 | procedure XORBuffers(const Left, Right; Size: Integer; var Dest); |
| 429 | // Dest^ = Source1^ xor Source2^ |
| 430 | // Buffers must have the same size! |
| 431 | {$IFDEF X86ASM} |
| 432 | asm |
| 433 | AND ECX,ECX |
| 434 | JZ @@5 |
| 435 | PUSH ESI |
| 436 | PUSH EDI |
| 437 | MOV ESI,EAX |
| 438 | MOV EDI,Dest |
| 439 | @@1: TEST ECX,3 |
| 440 | JNZ @@3 |
| 441 | @@2: SUB ECX,4 |
| 442 | JL @@4 |
| 443 | MOV EAX,[ESI + ECX] |
| 444 | XOR EAX,[EDX + ECX] |
| 445 | MOV [EDI + ECX],EAX |
| 446 | JMP @@2 |
| 447 | @@3: DEC ECX |
| 448 | MOV AL,[ESI + ECX] |
| 449 | XOR AL,[EDX + ECX] |
| 450 | MOV [EDI + ECX],AL |
| 451 | JMP @@1 |
| 452 | @@4: POP EDI |
| 453 | POP ESI |
| 454 | @@5: |
| 455 | end; |
| 456 | {$ELSE !X86ASM} |
| 457 | var |
| 458 | P, Q, D: PByte; |
| 459 | i: Integer; |
| 460 | begin |
| 461 | P := @Left; |
| 462 | Q := @Right; |
| 463 | D := @Dest; |
| 464 | for i := 0 to Size - 1 do |
| 465 | begin |
| 466 | D^ := P^ xor Q^; |
| 467 | Inc(P); |
| 468 | Inc(Q); |
| 469 | Inc(D); |
| 470 | end; |
| 471 | end; |
| 472 | {$ENDIF !X86ASM} |
| 473 | |
| 474 | const |
| 475 | WipeCount = 4; |
| 476 | WipeBytes: array[0..WipeCount - 1] of Byte = ( |
| 477 | $55, // 0101 0101 |
| 478 | $AA, // 1010 1010 |
| 479 | $FF, // 1111 1111 |
| 480 | $00 // 0000 0000 |
| 481 | ); |
| 482 | |
| 483 | procedure ProtectBuffer(var Buffer; Size: NativeUInt); |
| 484 | var |
| 485 | Count: Integer; |
| 486 | begin |
| 487 | if Size > 0 then |
| 488 | begin |
| 489 | for Count := 0 to WipeCount - 1 do |
| 490 | FillChar(Buffer, Size, WipeBytes[Count]); |
| 491 | end; |
| 492 | end; |
| 493 | |
| 494 | procedure ProtectStream(Stream: TStream; SizeToProtect: Int64 = 0); |
| 495 | const |
| 496 | BufferSize = 512; |
| 497 | var |
| 498 | Buffer: string; |
| 499 | Count, Bytes, Size: Integer; |
| 500 | Position: Integer; |
| 501 | begin |
| 502 | Position := Stream.Position; |
| 503 | Size := Stream.Size; |
| 504 | if SizeToProtect <= 0 then |
| 505 | begin |
| 506 | SizeToProtect := Size; |
| 507 | Position := 0; |
| 508 | end else |
| 509 | begin |
| 510 | Dec(Size, Position); |
| 511 | if SizeToProtect > Size then |
| 512 | SizeToProtect := Size; |
| 513 | end; |
| 514 | SetLength(Buffer, BufferSize); |
| 515 | for Count := 0 to WipeCount -1 do |
| 516 | begin |
| 517 | Stream.Position := Position; |
| 518 | Size := SizeToProtect; |
| 519 | {$IF CompilerVersion >= 24.0} |
| 520 | FillChar(Buffer[Low(Buffer)], BufferSize, WipeBytes[Count]); |
| 521 | {$ELSE} |
| 522 | FillChar(Buffer[1], BufferSize, WipeBytes[Count]); |
| 523 | {$IFEND} |
| 524 | while Size > 0 do |
| 525 | begin |
| 526 | Bytes := Size; |
| 527 | if Bytes > BufferSize then |
| 528 | Bytes := BufferSize; |
| 529 | {$IF CompilerVersion >= 24.0} |
| 530 | Stream.Write(Buffer[Low(Buffer)], Bytes); |
| 531 | {$ELSE} |
| 532 | Stream.Write(Buffer[1], Bytes); |
| 533 | {$IFEND} |
| 534 | Dec(Size, Bytes); |
| 535 | end; |
| 536 | end; |
| 537 | end; |
| 538 | |
| 539 | procedure ProtectBytes(var Source: TBytes); |
| 540 | begin |
| 541 | if (Source <> nil) and (Length(Source) > 0) then |
| 542 | begin |
| 543 | ProtectBuffer(Source[0], Length(Source)); |
| 544 | SetLength(Source, 0); |
| 545 | end; |
| 546 | end; |
| 547 | |
| 548 | procedure ProtectString(var Source: string); |
| 549 | begin |
| 550 | if Length(Source) > 0 then |
| 551 | begin |
| 552 | System.UniqueString(Source); |
| 553 | {$IF CompilerVersion >= 24.0} |
| 554 | ProtectBuffer(Pointer(Source)^, Length(Source) * SizeOf(Source[Low(Source)])); |
| 555 | {$ELSE} |
| 556 | ProtectBuffer(Pointer(Source)^, Length(Source) * SizeOf(Source[1])); |
| 557 | {$IFEND} |
| 558 | Source := ''; |
| 559 | end; |
| 560 | end; |
| 561 | |
| 562 | procedure ProtectString(var Source: RawByteString); |
| 563 | begin |
| 564 | if Length(Source) > 0 then |
| 565 | begin |
| 566 | // UniqueString(Source); cannot be called with a RawByteString as there is |
| 567 | // no overload for it, so we need to call our own one. |
| 568 | DECUtilRawByteStringHelper.UniqueString(Source); |
| 569 | {$IF CompilerVersion >= 24.0} |
| 570 | ProtectBuffer(Pointer(Source)^, Length(Source) * SizeOf(Source[Low(Source)])); |
| 571 | {$ELSE} |
| 572 | ProtectBuffer(Pointer(Source)^, Length(Source) * SizeOf(Source[1])); |
| 573 | {$IFEND} |
| 574 | Source := ''; |
| 575 | end; |
| 576 | end; |
| 577 | |
| 578 | {$IFNDEF NEXTGEN} |
| 579 | procedure ProtectString(var Source: AnsiString); overload; |
| 580 | begin |
| 581 | if Length(Source) > 0 then |
| 582 | begin |
| 583 | System.UniqueString(Source); |
| 584 | {$IF CompilerVersion >= 24.0} |
| 585 | ProtectBuffer(Pointer(Source)^, Length(Source) * SizeOf(Source[Low(Source)])); |
| 586 | {$ELSE} |
| 587 | ProtectBuffer(Pointer(Source)^, Length(Source) * SizeOf(Source[1])); |
| 588 | {$IFEND} |
| 589 | Source := ''; |
| 590 | end; |
| 591 | end; |
| 592 | |
| 593 | procedure ProtectString(var Source: WideString); overload; |
| 594 | begin |
| 595 | if Length(Source) > 0 then |
| 596 | begin |
| 597 | System.UniqueString(Source); // for OS <> Win, WideString is not RefCounted on Win |
| 598 | {$IF CompilerVersion >= 24.0} |
| 599 | ProtectBuffer(Pointer(Source)^, Length(Source) * SizeOf(Source[Low(Source)])); |
| 600 | {$ELSE} |
| 601 | ProtectBuffer(Pointer(Source)^, Length(Source) * SizeOf(Source[1])); |
| 602 | {$IFEND} |
| 603 | Source := ''; |
| 604 | end; |
| 605 | end; |
| 606 | {$ENDIF} |
| 607 | |
| 608 | function BytesToRawString(const Source: TBytes): RawByteString; |
| 609 | begin |
| 610 | SetLength(Result, Length(Source)); |
| 611 | if Length(Source) > 0 then |
| 612 | begin |
| 613 | // determine lowest string index for handling of ZeroBasedStrings |
| 614 | {$IF CompilerVersion >= 24.0} |
| 615 | Move(Source[0], Result[Low(result)], Length(Source)); |
| 616 | {$ELSE} |
| 617 | Move(Source[0], Result[1], Length(Source)); |
| 618 | {$IFEND} |
| 619 | end; |
| 620 | end; |
| 621 | |
| 622 | function IsEqual(const a, b : TBytes):Boolean; |
| 623 | begin |
| 624 | if (length(a) <> length(b)) then |
| 625 | Result := false |
| 626 | else |
| 627 | if (Length(a) > 0) then |
| 628 | Result := CompareMem(@a[0], @b[0], length(a)) |
| 629 | else |
| 630 | Result := true; |
| 631 | end; |
| 632 | |
| 633 | end. |


The second table includes all of the drivers who were searched or frisked. Notice that contraband was found for 8 of the 925 searched or frisked Black drivers, or \(0.9\%\text{,}\) and for 10 of the 835 searched or frisked white drivers, or \(1.2\%\text{.}\) We see that the proportion of white drivers who were stopped or frisked and who possess contraband is slightly higher than that for Black drivers. It is therefore possible that officers are searching Black drivers on less evidence than they are for white drivers.
in-context


The Safe Space App was designed and built by a predestined "wolf pack" of code warriors who are constantly pushing the human potential. Each member of this 'Programming Super Team' is dedicated to cultivating a community that is based on: endless encouragement, judgement-free collaboration, and most importantly, a dedication to honing their craft by making sure that their programming power levels ALWAYS stay over 9,000 .
Title: Scrum Master
Spirit Animal: Wolf
Favorite Ice Cream: Mint Chocolate Chip
Programming Power Level: 15,239 lvl
Title: User Interface Developer
Spirit Animal: Wolf
Favorite Ice Cream: Chocolate Marshmallow
Programming Power Level: 12,342 lvl
Title: User Interface Developer
Spirit Animal: Wolf
Favorite Ice Cream: Cookies n' Creme
Programming Power Level: 10,124 lvl
Title: User Interface Developer
Spirit Animal: Wolf
Favorite Ice Cream: Moose Tracks
Programming Power Level: 9,123 lvl
Title: Front End Architect
Spirit Animal: Wolf
Favorite Ice Cream: Ferrero Rocher Gelato
Programming Power Level: 13,193 lvl
Title: Back End Architect
Spirit Animal: Wolf
Favorite Ice Cream: Vanilla
Programming Power Level: 14,291 lvl
Title: Front End Architect
Spirit Animal: Wolf-Vegeta Fusion
Favorite Ice Cream: Cookies n' Creme
Programming Power Level: 13,194


{{selectedPost.issue}} {{selectedPost.date | date}}
{{selectedPost.body}}
Link: {{selectedPost.pdfLink}}
Tell us what you think:


All about file formats
When the word processor came along, they had a great feature that text editors didn't have: the ability to format documents with colors, fonts, etc. Unfortunately, the programmers who made all the word processors in the world never agreed on one way to save the formatted text. So, each word processor had its special way of saving formatted text. Hence, there was lots of confusion and frustration because people had to figure out what format to use, or figure out what word processor someone had, just to send them a document that had formatting.
However, there is one standardized formatting scheme that allows most of the benefits of word processor formats, though. It's called "Rich Text Format", and users of the Microsoft Word word processor have known this for years. Apple's TextEdit text editor/word processor saves its documents in Rich Text Format, and many word processors can read Rich Text.
Here's a rundown of the 5 formats CocoaPad can save and open:
CocoaPad can open almost any document, but if CocoaPad does not understand what is inside the document, the document will appear as plain text. CocoaPad can also open regular documents as plain text, like CocoaPad and Rich Text documents. To do so, check the Ignore formatting commands checkbox in the preference panel. This is useful, for example, if you want to view the behind-the-scenes codes inside a document that tell programs (including CocoaPad) how to format the document. |
CocoaPad has its own formatting scheme also. It's a variant of the Rich Text with Attachments format, but instead of using Mac OS X-only file packages, CocoaPad encodes the formatting into RTFD data.
The "D" in RTFD stands for "directory", since TextEdit pioneered the technology, and its RTFD files are actually file packages. File packages are folders that are treated as a regular file by Mac OS X. |
You save your document into any one of these formats by doing the following:
- Pull down the Format menu.
- Select Convert to <format>, where <format> is the name of the format you want. If the format you want is grayed-out, then your document is already in that format.
If the Convert to Microsoft Word format format is always grayed-out, even if your document is not in Microsoft Word format, then this means you have Mac OS X version 10.2 Jaguar or earlier. You're operating system version needs to be at least Mac OS X 10.3 (Panther) in order to save and open Word documents. To purchase Mac OS X 10.3, or to learn more about it, visit Apple's Mac OS X website. |
You can specify what format you want CocoaPad to use when it creates a new document in CocoaPad's preferences. By default, it creates CocoaPad documents. |


Sogeti Applied Innovation Battle
Leaderboard for #SogetiBattle
{{Team.name}}
{{Value}} - {{Key}}
Gain - {{Key}}


|
| bool | isLeaf () const override |
| |
|
| Choice (const L &label, size_t count) |
| | Constructor, given choice label and mandatory expected branch count.
|
| |
|
| Choice (const Choice &f, const Choice &g, const Binary &op) |
| | Construct from applying binary op to two Choice nodes.
|
| |
|
const L & | label () const |
| |
|
size_t | nrChoices () const |
| |
|
const std::vector< NodePtr > & | branches () const |
| |
|
void | push_back (const NodePtr &node) |
| | add a branch: TODO merge into constructor
|
| |
| void | print (const std::string &s) const override |
| | print (as a tree) More...
|
| |
| void | dot (std::ostream &os, bool showZero) const override |
| | output to graphviz (as a a graph) More...
|
| |
| bool | sameLeaf (const Leaf &q) const override |
| | Choice-Leaf equality: always false. More...
|
| |
| bool | sameLeaf (const Node &q) const override |
| | polymorphic equality: if q is a leaf, could be...


Assessor profile
Assessor details
Name
Veronica Lederman
Address
Email address
<EMAIL_ADDRESS>Innovation areas
Emerging and enabling
- Creative industries
- Digital industries
Health and life sciences
- Advanced therapies
Declaration of interest
Principal employer and role
University of Sheffield
Professor
Professional affiliations
None declared
Appointments, directorships and consultancies
| Organisation | Role |
|---|---|
| Plum planning | CTO |
Other financial interests
None declared
Close family members' appointments, directorships and consultancies
| Relation | Organisation | Position |
|---|---|---|
| Wife | Robotics international | CTO |
Close family members' other financial inerests
None declared
Competition 1
| Application numer | Title | Lead organisation |
|---|---|---|
| 141 | Evolution of the global phosphorus cycle | Alpha Ltd |
| 145 | Planetary science Pluto's telltale heart | Beta Ltd |
Competition 2
| Application numer | Title | Lead organisation |
|---|---|---|
| 141 | Evolution of the global phosphorus cycle | Alpha Ltd |
| 145 | Planetary science Pluto's telltale heart | Beta Ltd |
Competition 3
| Application numer | Title | Lead organisation |
|---|---|---|
| 141 | Evolution of the global phosphorus cycle | Alpha Ltd |
| 145 | Planetary science Pluto's telltale heart | Beta Ltd |


{% extends "layouts/default.html" %} {% block title %}Latest talks tagged as {{ tag }} on vtalks.net{% endblock %} {% block content %}


Home
Add new store
Store Location:
Minimum customers an hour:
Maximum customers an hour:
Average cookies per customer:
Reset Form
Submit Form


Your Montessori toy recommendations are here!
Top 5 recommendations for your child!
{% for t in toy_recommendations%}
{{ t['title'][0] }}
Price: {{ t['price'][0] }}
Go to toy on Amazon
{% endfor %}
Go to the main page
author: Narges


PureBasic - Help
概要
The help feature is a very important component for any type of software. It allows the end-users the opportunity to discover the software's features quickly and easily. The Purebasic help functions allow the programmer the ability to display standard help files with both global and contextual support.
On Microsoft Windows, there are two different help-file formats which are supported: The ".hlp" format (which is the old) and the ".chm" format (which is the new). The ".chm" format is based in HTML, which stands for Hyper Text Markup Language.
命令索引
CloseHelp
OpenHelp
示例
Help.pb
已支持操作系统
所有


"KIRJATH-HUZOTH "city of streets, Numbers 22:39, a Moabite city, which some identify with Kirjathaim. Balak here received and entertained Balaam, whom he had invited from Pethor, among the “mountains of the east,” beyond the Euphrates, to lay his ban upon the Israelites, whose progress he had no hope otherwise of arresting. It was probably from the summit of Attarus, the high place near the city, that the soothsayer first saw the encampments of Israel.
"KIRJATH-HUZOTH "city of streets, Numbers 22:39, a Moabite city, which some identify with Kirjathaim. Balak here received and entertained Balaam, whom he had invited from Pethor, among the “mountains of the east,” beyond the Euphrates, to lay his ban upon the Israelites, whose progress he had no hope otherwise of arresting. It was probably from the summit of Attarus, the high place near the city, that the soothsayer first saw the encampments of Israel.